我们在实时多人游戏中分享了哪些数据

时间:2013-07-09 14:46:25

标签: android game-engine multiplayer

我正在学习游戏开发,并且正在考虑为Android创建一个实时2人游戏。它需要在两个Android设备上进行两个玩家的同步游戏,如下所示:Gurrilla bob

现在我想知道是否有一些关于应该在两台设备之间实时共享的内容的教程,以便在每台设备上运行的游戏同步?我不想知道网络实施。

是吗

游戏在一台主设备上运行,屏幕在另一台设备上共享,它只是将输入事件报告给主游戏。?

这两个设备共享物理世界的细节(身体的位置,力量,它们的位置)或类似的东西(我只是猜测)?

或者它是完全不同的东西?

1 个答案:

答案 0 :(得分:1)

“我们共享的数据”的范围实际上取决于您所需的安全级别。在大型多人在线游戏中(由于玩家之间有服务器,因此有点不同),共享的数据可能介于以下,最强安全

  • 用户输入本身。客户端向服务器发送用户所做的事情 - 他点击屏幕进行拍摄,他滑动屏幕移动等等...... 服务器处理输入并决定是否响应它(如果是合法输入)或不(如果它被修改,IE黑客和作弊)。这为服务器提供了大量工作 - 所有处理都在其上完成,并且必须向其所有客户端报告发生了什么以及何时发生。但是,它可以阻止大多数(如果不是全部)黑客/恶意输入选项,使您的游戏非常安全。

不安全

  • 用户输入后果:客户端自身处理输入,并向服务器报告输入引起的后果。例如,如果用户点击屏幕进行拍摄,则客户端计算子弹方向并向服务器发送“我此时和那个方向拍摄了一颗子弹”。这允许客户发送错误信息 - 客户端可以发送“我拍100枚子弹”,这意味着你必须在服务器上添加许多支票,以确保玩家不作弊

现在,既然你既不是在谈论MMO,也不是关于安全性很重要的游戏(毕竟,它在Android上运行,很少有人知道如何破解应用程序,而你不打算发布无论如何),当我没有必要时,我觉得写这么多是愚蠢的,但我希望你能得到一些。

回到你的问题 - 当谈论双人游戏时,特别是在手机上,实时和网络效率是最重要的因素。因此,我们可以删除“共享屏幕”选项,因为流媒体视频不是那么快或网络效率。

我认为最好的解决方案是两个设备都会响应输入并将结果发送给对方。这样,用户不会遇到延迟,或者只是很少。你必须处理延迟可能导致的特殊情况(例如,当谈论射击游戏时 - 如果玩家A射击并杀死玩家B,但玩家B滞后并花了5秒钟才能收到这种后果,同时在他去世前他射杀一名球员A,球员A不应该死。)