平滑的MultiPlayer运动

Fre*_*erg 5 networking multiplayer smoothing

我正在开发一个多人角色扮演游戏,(不,它不是mmorpg.;)

我目前的设置是这样的.

客户端告诉服务器"我想继续前进"/"我想向后移动",服务器然后更新您的实体,并通知该区域内的所有客户有关更改.服务器还每20ms更新一个实体,并每隔100ms向客户端发送更新,这些更新包含位置,速度,旋转等.

到目前为止一切都那么好,但是我没有任何东西用于平滑客户端数据包之间的移动,我必须说,我无法让它工作.我一直在阅读有关预测,插值,死劫的内容,但对我来说这一切都很糟糕.

所以现在我正在做一些像"Position = Packet.Position"这样的事情,这会导致一个非常令人口吃的动作.

那么,我想要的帮助是,我如何获得更平稳的运动?一直在看XNA预测样本,但我无法做到正确.

谢谢// F.

I82*_*uch 12

阅读Valve对其多人游戏协议的描述.它应该是有益的,并给出一个非常明确的例子,说明如何进行预测/插值.


ssm*_*mir 4

我建议从另一个问题中提出这个想法(请参阅已接受的答案)

这里客户端自己计算自己的位置,就好像它不是网络游戏一样。客户端定期将其当前位置发送到服务器。如果客户端作弊或无法继续朝所选方向移动,服务器只会向客户端发送正确的位置。

《网络创世纪》也使用了同样的算法(至少在我 10 年前玩的时候)