- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为了减少数据传输大小和为每个 worldUpdate 序列化世界对象的计算时间,我想知道是否可以省略物理可以完全、忠实地在客户端游戏引擎上模拟的对象的同步(它们不是 playerObjects所以 playerInput 不会直接影响它们,它们的物理特性完全是确定性的)。与这些 GameObjects 的交互将完全由不太频繁的 GameEvents 处理。我觉得如果客户端运行与服务器相同的物理并且可以访问相同的初始条件,这应该是可能的。
当我尝试从后续的 worldUpdates 中省略 GameObjects 时,我发现它们的运动变得更加断断续续,而且它们的移动速度比没有省略时更快;然而,当我在保持客户端打开的情况下停止游戏服务器时,如果我没有省略它们,它们的 Action 更像是我所期望的。这一切都在我的本地机器上进行外推同步。
最佳答案
简短的回答是,最新版本的 Lance(在撰写本文时为 1.0.8)不支持用户从世界更新中省略游戏对象,但它确实实现了一种差异机制,如果对象 netScheme
则从更新中省略对象属性没有改变,节省了带宽。
这意味着如果您有静态物体,例如墙壁,则它们只会为每个玩家传输一次。根本不传输这个是一个有趣的功能。
如果您所指的对象不是静态的,那么就没有真正的方法来确定性地知道它们的位置。您可能已经考虑使用世界步数,但由于网络固有的延迟,不同的客户端在不同的时间处理不同的世界步数。客户端无法知道服务器在给定时间点处理的真正步骤是什么,因此它无法确定性地决定此类对象的位置。这就是 Lance 使用 Authoritative server model 的原因 - 允许单一的事实来源,并确保客户端同步。
如果您仍想手动避免为对象发送更新,您可以编辑其 netScheme
使其不返回任何内容,但其 id,例如:
static get netScheme() {
return {
id: { type: Serializer.TYPES.INT32 }
};
}
关于multiplayer - 是否有必要在 worldUpdate 中包含物理确定性的游戏对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44354903/
我正在使用 this solution在二进制矩阵中找到与图像边界对齐的矩形。假设现在我想找到一个不与图像边框对齐的矩形,并且我不知道它的方向;找到它的最快方法是什么? 为了示例,让我们寻找一个仅包含
else: 行在这个 Python 程序中是否正确/必要? from random import randrange for n in range(10): r = randrange(0,1
在 TDPL 7.1.5.1 中讨论了将 Widget w2 分配给 w1 并且作者指出“将 w2 逐个字段分配给 w1 会将 w2.array 分配给 w1.array——一个简单的数组边界分配,而
我是一名优秀的程序员,十分优秀!