![]() |
1
16
基本的方法是 Dead Reckoning 这里可以找到一篇相当不错的文章。基本上,它是一种预测算法,用于在服务器更新之间猜测实体位置的时间。 有一些更先进的方法建立在这个概念的基础上,但这是一个很好的起点。 还可以描述如何在源引擎(上半场游戏的阀门引擎)中处理这个问题。 here ,原理基本上是相同的-直到服务器告诉您使用预测算法沿预期路径移动实体-但是本文处理这对尝试更深入地拍摄某个内容的影响。 |
![]() |
2
11
我在这方面找到的最好的资源是Valve Software的这两篇文章: |
![]() |
3
5
永远不会有办法保证实时多个视角之间的完美同步——物理定律使之不可能实现。如果太阳现在爆炸了,你怎么能保证半人马座α星上的观测者和我们地球上的观测者同时看到超新星呢?信息需要时间旅行。 因此,您的选择要么是精确地建模每件事,延迟可能会因查看器不同而不同(这是您当前拥有的)。或者在没有延迟的情况下对它们进行不准确的建模,并在观众之间进行广泛的同步(这就是预测/航位推算/外推的来源)。像实时策略这样速度较慢的游戏往往走第一条路线,速度较快的游戏走第二条路线。 尤其是,你不应该认为旅行所需的时间是恒定的。这意味着,在两种模型下,仅仅向移动实体发送开始和停止消息是不够的。您需要发送实际状态的周期性更新(通常为更快的游戏每秒数次),以便接收方能够纠正其预测和插值中的错误。 |
![]() |
4
2
您最好的选择是将更改从未来发送回客户机,从而在与其他没有延迟问题的客户机相同的时间点到达客户机。 |
![]() |
5
2
如果客户端看到事件以服务器提供给他的速率发生,这是正常的方法(我已经使用了Ultima Online、Kalonline和一点魔兽世界的协议),那么这一瞬间的5秒延迟只会让他在一旦看到这些事件真的很快或接近立即通过,就像其他玩家会看到他“走”很快很短的距离,如果他的输出也延迟。之后一切又恢复正常。实际上,除了图形和物理规范化之外,我看不出有什么特殊需要使它正确同步,它只是同步本身。 如果你曾经在两台附近的电脑上玩过阀门游戏,你会注意到他们并不太在意诸如“你死的确切地点”或“你的尸体碎片飞到哪里”之类的小细节。这完全取决于客户端,完全受延迟的影响,但这无关紧要。 毕竟,落后的球员必须接受他们的条件,或关闭他们该死的鸸鹋。 |
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
![]() |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
|
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
![]() |
i_sniff_ket · 在unity之外使用unity类 2 年前 |