Answers:
总的来说,这是一个非常复杂的主题。您有两个相互矛盾的目标(至少如果您不打算在专用服务器上运行每个游戏的话):
我不能确切地说如何解决RTS。对于FPS触发,我们要做的是让服务器保存一段时间后的完整世界状态,并让客户端为每个镜头加盖时间戳。当网络消息为“我被解雇了!”时 到达服务器后,服务器可以回滚世界,并在“射击时寻找客户端”时对世界进行碰撞测试等。
如果您打算有很多单元,那么还会遇到服务器处理量过多的问题。如果您不十分担心黑客攻击或作弊,我建议对客户端进行寻路,然后将结果发送到服务器。
另一种选择可能是改为使用peer2peer,让每个客户处理本地团队的更新,但这又提出了一个问题,即如何确定谁击中了什么等等。
根据项目的复杂程度以及您愿意为此付出多少努力,我的最佳建议是确定一些初步的内容并开始进行测试。
基本上有两种方法:
受信任的客户端稍微复杂一点,但是它的优点是您可以从服务器上卸载大量计算。服务器运行成本是多人游戏的最大问题之一,它将严重降低您的可扩展性。
对于初学者来说,一个好的方法是让每个玩家客户端处理自己的单元。在下一步中,您可以使用备用周期让玩家客户验证其他客户的动作。服务器除了交换消息,保持同步并确保持久性(例如数据库)外,不需要做更多的事情。
如果您打算进行某种形式的游说或聊天,则可以在额外的服务器中处理所有这些主题。这将使事情变得容易得多。