Answers:
好吧,有一本书 -现在有些陈旧了,我从未真正读过它,但它是由著名的出版商提供的。我还发现了这个更新的版本,但是我从未听说过。两者都声称涵盖了MMO(或至少是在线)游戏开发问题;也就是说,无论您的并发玩家人数多大,客户端预测都大致相同,并且Google拥有大量有关此信息。
重要的是要认识到,从实践的角度来看,对于独立/爱好开发人员来说,很难将一款游戏变得足够流行,甚至吸引足够的玩家,以达到足够高的理论峰值并发度,被认为是“庞大的”游戏。但是这些技术仍然可以进行研究。
您可以做的事情有两种主要分类:
第二个问题确实是一个游戏设计和社交操纵问题-这特别棘手,因为多人游戏自然是社交性的,这是它们吸引力的一部分,因此您不想过多地劝阻一群玩家。另一方面,世界上每个人都在衍生出一个在游戏中掉落最好战利品的家伙的游戏,将很难扩展。
对于第一种选择,您可以考虑进行分层消息传递-有关其他参与者的一些事情始终很重要,例如职位。但是其他因素(例如健康状况)对于当前玩家尚未看到的对象可能并不那么重要,因此您要根据他附近所有其他实体的相对距离来确定发送给该玩家的内容-这实际上是在节流如您在问题的最后一部分中提到的,将您发送的数据进行过滤。
大型多人游戏体系结构还将缓冲不需要对其立即采取措施的报告。发送到服务器的字符保存消息可以按增量进行,仅在关键点进行完整更新,并且这些更新可以在节流服务器上进行缓冲,以便将它们发送到实际上将字符数据保持稳定的服务器,定期的方式-随着播放器基础的扩展,您必须担心优化磁盘IO和网络流量。您不想使角色数据库崩溃。
就像非MMO游戏一样,每个游戏的数据包速率和大小差异很大。这确实是非常特定于需求的事情,并且没有通用的标准。
除了上述答案外,还请阅读TCP_NODELAY以及窗口缩放的操作方式。了解TCP的详细信息(是的,除非希望处理无序更新的差异更新听起来很有趣,否则您要使用TCP而不是UDP),并且重传对于延迟控制至关重要。