我们正计划为手机提供实时网络游戏应用程序
经过一些研究和研究,我们决定通过实施Socket
在服务器和客户端(移动设备)之间使用TCP连接。
在我们编写协议时,我们遇到了以下问题:我们应该在哪里实现计算?在用户的设备中还是在服务器中?
例如,想象一下5个玩家之间的短暂游戏,在游戏结束之前不需要通信(尽可能快地击中屏幕或类似的东西)。
在回合结束时,客户将他们的分数发送到服务器,应用程序应显示失败者或获胜者。
计算应该在哪里进行?如果服务器收集所有分数,计算最大值和最小值并发送回输家和赢家?或者服务器是否应该将所有分数发回给玩家,他们的设备会在哪些分数中计算结果? 每种策略的优缺点是什么?
答案 0 :(得分:1)
这里有几件事:
1)不要将持久套接字用于移动应用程序。连通性太过分了。
2)使用更高级别的协议,如HTTP。您无需使用这种低级协议。通过这样做,你最终将完成比你需要的更多的工作。想想是否要将其构建为基于Web的游戏,或者在不允许使用原始套接字的设备上实现。
HTTP非常好,因为它具有防火墙友好性,大多数防火墙已经允许HTTP通过标准端口。这就是为什么它如此受欢迎。
3)你应该对这些设备持怀疑态度。一般来说,您应该尽可能少地信任客户。您可以在客户端上进行处理,但它应该与渲染相关。通常假设您的客户端是恶意的是n层架构应用程序的好方法。尤其是游戏。