我如何确保当客户端收到一些更新时它会更新正确的对象?
您可以id
为每个对象服务器创建一个唯一的。您可能想要创建一个Object
包含id
并让所有其他游戏对象类继承自它的超类。或者,您可以有一个地图来链接id
和object
。或者,您可以混合使用它们。要获得唯一的 id,服务器可以将全局“nextID”作为 int 并简单地分配给一个新对象并为下一个对象增加它。
但是创建新对象的更新违反了这个原则。
我不太了解您所说的原理,但是如果您担心在遍历场景图(或游戏对象列表)时对其进行编辑,则可以将新创建的对象放入另一个列表中,然后在遍历后插入新对象已经完成了。他们将从下一次更新开始更新。(你也应该考虑如何移除一个对象)
我应该如何处理其余不可见的对象?当它们变得可见时会发生什么?
好吧,你是应该弄清楚的人,因为它真的取决于你的游戏系统。我的建议是尝试跳过他们的更新,看看出现了什么问题并修复它们。
我如何跟踪对象何时对玩家可见?
此外,还有几种处理方法。服务器可以检测客户端的所有内容并仅发送每个客户端的可见对象信息。或者,每个客户端都可以检测到它们并向服务器发送请求以开始更新可见的。或者,它可以是混合的方式。
首先尝试服务器驱动的,看看服务器是否可以在最大数量的客户端下执行它。要使用客户端驱动的,请记住每个客户端仍然需要更新所有对象位置,无论其可见性如何,但发送仅可见的 AI 更新请求那些。
同样,有很多方法可以处理此类问题,这实际上取决于您的游戏系统要求。这就是为什么在不充分了解您的游戏系统的情况下很难回答您的问题的原因。尝试从一些书籍或谷歌中调查其他类似的多人游戏是如何设计的。祝你好运!