我想建立一个实时的多人游戏,包括快速拾取物体,并向其他玩家发射射弹。我对游戏引擎和MMO游戏的工作方式有基本的了解。我的问题与如何以一种感觉顺畅的方式在客户端处理游戏状态有关。
假设两个用户决定通过点击屏幕上的位置同时移动到一个对象,但只有第一个人能够接收它,其中一个玩家可以在他们到达之前改变主意并走另一个方向......这个代码将如何运作?
每个播放器/客户端是否在每个刻度线上向服务器发送请求以表示他们想要移动他们的角色?或者只有一次,速度是在服务器端管理的?
那么在服务器验证并返回新位置之前,您是否避免更新客户端的位置/状态?或者你可以在客户端移动角色,只使用服务器返回其他玩家的位置吗?
如果你的角色在服务器响应之前无法移动,我担心这种体验会感觉很迟钝。
同样的问题适用于发射和与弹丸碰撞。如果玩家1向玩家2发射射弹,我希望玩家2有足够的时间移动并避免被击中。
任何提示都将不胜感激!
答案 0 :(得分:3)
这就是“我如何建造宇宙飞船”的问题。网络很难,预测和补偿本身就是一个CS领域。
你最好先阅读已经解决了这个问题的其他人写的东西:
https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking
http://gafferongames.com/networking-for-game-programmers/
http://fabiensanglard.net/quake3/index.php