gpt4 book ai didi

c# - 多人游戏同步

转载 作者:IT王子 更新时间:2023-10-29 04:08:09 24 4
gpt4 key购买 nike

我实现了一个服务器/客户端架构,其中所有状态更改都被发送到函数、验证并广播到所有连接的客户端。这工作得很好,但系统目前不保持游戏客户端实例之间的同步。

如果服务器和特定客户端之间恰好有 5 秒的延迟,那么他将在其余客户端之后 5 秒收到状态更改,从而使他的游戏状态不同步。我一直在寻找各种方法来实现客户端之间的同步系统,但到目前为止还没有找到太多。

我是网络编程的新手,并没有天真地认为我可以自己发明一个工作系统而无需投入大量时间。然而,我的想法是保留某种时间系统,这样每个状态变化都会与游戏中的特定时间戳相关联。这样,当客户端收到状态更改时,它会确切地知道更改发生在游戏的哪个阶段,进而能够关联延迟。这种方法的问题是,在那些 n 秒的延迟中,游戏会在客户端继续,因此客户端必须及时回滚以更新状态变化,这肯定会得到凌乱。

所以我正在寻找讨论解决它的主题或算法的论文。也许我对多人游戏系统工作方式的整个设计存在缺陷,在某种意义上,除非从服务器收到通知,否则客户端的游戏实例不应更新?现在,假设任何状态都没有改变,客户端只是在他们的游戏循环中更新自己。

最佳答案

对此的基本方法称为 Dead Reckoning。可以在这里找到一篇关于它的非常好的文章。基本上,它是一种预测算法,用于在服务器更新之间的时间猜测实体的位置。

有更多基于此概念的高级方法,但这是一个很好的起点。


还可以在源引擎(第一部半条命游戏的 Valve 引擎)中找到关于如何处理的描述 here ,原理基本上是相同的 - 直到服务器告诉您使用预测算法以其他方式沿着预期路径移动实体 - 但本文处理这对尝试更深入地拍摄某些东西的影响。

关于c# - 多人游戏同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1411745/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com