0

我正在学习游戏开发,并正在考虑为 android 创建一个实时 2 人游戏。它需要在两个安卓设备上同时玩两个玩家,一个像这样:Gurrilla bob

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

是那个吗

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

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

还是完全不同的东西?

4

1 回答 1

1

“我们共享的数据”的范围实际上取决于您想要的安全级别。在大型多人在线游戏中(这有点不同,因为它在玩家之间有一个服务器),共享的数据可能介于以下之间,从最安全的:

  • 用户自己输入。客户端将用户所做的事情发送给服务器——他点击屏幕进行射击,他滑动屏幕移动等等......服务器处理输入并决定是否响应它(如果是合法输入)或不响应(如果它已被修改,IE hacks 和作弊)。这给服务器带来了很多工作——所有处理都在它上面完成,它必须向所有客户端报告发生了什么以及何时发生。但是,它几乎可以阻止大部分(如果不是全部)黑客/恶意输入选项,从而使您的游戏非常安全。

给最不安全的人

  • 用户输入后果:客户端自己处理输入,并向服务器报告输入导致的内容及其后果。例如,如果用户点击屏幕进行射击,则客户端计算子弹方向并向服务器发送“我在这个时候和那个方向射击了一颗子弹”。这允许客户端发送错误信息 - 客户端可以发送“我射了 100 发子弹”,这意味着您必须在服务器上添加许多检查,以确保玩家不会作弊

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

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

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

于 2013-07-09T16:06:18.910 回答