我想用物理引擎编写一个多人游戏。客户端使用物理引擎进行计算并及时显示结果,但当然,服务器也需要模拟整个事物。
Afaik,客户通常会向服务器发送速度和位置。我的想法是将按键发送到服务器。
发送位置/速度:
发送按键
那么,我的想法可能有什么不好?为什么不在游戏中使用(afaik)?
答案 0 :(得分:1)
我非常确定在服务器上计算物理在服务器上太重了。特别是有更多的人。虽然这可能使客户端更快,但服务器将成为瓶颈。
答案 1 :(得分:1)
它没有被用于两个主要原因 - 一个由用户1640050概述,另一个远远更大:
延迟计算 - 你仍然需要在客户端和服务器端计算它,因为在互联网上,服务器和客户端之间将存在20ms-500ms的延迟。通常情况下,双方都会计算物理,并且通过网络发送动作(不是真正的按键),并以客户的时间为时间戳。然后,服务器再次进行计算,计算客户端之间的任何交互,并将轨迹的更正发送回客户端。
通过这种方式,客户可以在没有任何服务器反馈的情况下计算游戏的实时演变,如果服务器通知客户关于其他玩家的活动(通常是动作和动作结果的组合),则会更正它(更常见) )。
这样做是为了阻止各种各样的作弊行为 - 客户知道对手的引擎推力越少,添加未经授权的mod和作弊就变得越困难 - 这样客户就知道它自己的发动机推力,以及对手的位置/速度/加速度,但不知道它是如何复活的。