我正在为我修读的计算机科学课程开发实时策略游戏。它最困难的方面之一似乎是客户端-服务器网络和同步。我已经阅读了这个主题(包括1500个archer),但是我决定采用客户端-服务器方法,而不是其他模型(例如,通过LAN)。
这种实时策略游戏存在一些问题。值得庆幸的是,玩家采取的每项行动都是确定性的。但是,某些事件按计划的时间间隔发生。例如,游戏是由砖块组成的,当玩家拿下一块砖块时,“能量水平”(该砖块上的一个值)在被获取后应该每秒增加一。这是一个非常简短的解释,应该可以证明我的用例。
现在,我正在做瘦客户机,它们只是将数据包发送到服务器并等待响应。但是,有几个问题。
当玩家之间的游戏发展为残局时,每秒通常会有超过50个事件(由于已安排的事件,如前所述,堆积),然后开始显示同步错误。我最大的问题是,即使客户之间的状态偏差很小,也可能意味着客户做出不同的决定,这些决定会滚雪球变成完全独立的游戏。另一个问题(目前还不那么重要)是存在延迟,必须等待几毫秒,甚至是他们采取行动才能看到结果的几秒钟。
我想知道我可以使用什么策略和算法使最终用户更轻松,更快速,更有趣。鉴于每秒发生的事件数量很高,而且每场比赛有几个玩家,因此这特别有趣。
TL; DR以每秒> 50个事件的速度生成RTS,如何同步客户端?