我正在Flash中开发一个简单的快节奏二维实时多人游戏。玩家只能射击和走路,以移动时尚。我使用TCP套接字连接(AS3不提供UDP)。
我想要的是同步玩家的动作,这样Player1可以在屏幕上看到与Player2,Player3相同的内容......或者只是看到近距离表示(位置,受到伤害等)。 < / p>
我知道运动矢量坐标,我可以使用延迟轻松插入它们。
但是,我无法找到一种有效的方法来确定状态更新需要多长时间( T1 )才能运行client1-server-client2,然后根据对client2的屏幕进行更正T1 即可。 (你知道,ping时间可能会有很大的波动)。
我需要一种方法来做上面提到的,我需要的方法既快速又准确,但不是非常复杂。 (我应该使用什么算法?什么是解决方案 - 时间戳,可能或者什么? - 我不知道。)
答案 0 :(得分:4)
首先,我认为服务器应该不断更新有关整个“世界”的信息。所有客户端向服务器发送他们的播放动作(即玩家所做的动作,如动作,枪击等),并使用压缩数据。
我会把“世界”分成几个区域。每个玩家当然都有一个有限的视野,所以他不能一次看到整个世界(幸运的是),因此他需要只更新他能看到的地区。
所以问题是:
它看起来像发布/订阅设计模式(Observer),但