据我了解,大多数大型游戏使用固定的时间步进行稳定的模拟。
关于游戏服务器,它们施加哪个“帧速率”?或换一种说法,他们倾向于使用固定的时间步长?
我知道很多人会说:“尽快逃脱”。如果您有建立MMORPG的直接经验,我想知道这有多快。
据我了解,大多数大型游戏使用固定的时间步进行稳定的模拟。
关于游戏服务器,它们施加哪个“帧速率”?或换一种说法,他们倾向于使用固定的时间步长?
我知道很多人会说:“尽快逃脱”。如果您有建立MMORPG的直接经验,我想知道这有多快。
Answers:
Second Life使用Havok在服务器端实现物理功能,并将更新锁定为每秒45次。
https://community.secondlife.com/t5/General-Discussions/SIM-FPS-is-maxed-out-at-45/td-p/181120
在2005-2006年左右的早期版本中,物理更新的浮动程度可以达到服务器允许的最高水平。一个没有脚本对象的简单区域可以每秒运行800次更新。为了提高效率和一致性,他们后来将其锁定为45。
(在《第二人生》中,帧频取决于每个客户端的CPU和图形处理能力。世界精度取决于网络性能。)
我曾经在几个游戏服务器上工作过,包括一套用于MMO的游戏服务器。
通常,他们根本没有物理学。在少数需要物理的情况下(主要是跳跃),我们让客户计算自己的物理,而我们只是否认任何过分古怪的事情(玩家移动得太久太久,移动得比他们应该跳高的速度要高得多,等等)。
服务器通常也没有“时间表”。他们通常根本不考虑“每秒帧数”。相反,我们知道什么时候上次听到某人的消息以及当时他们在做什么,然后等一会儿再听到他们的消息时,我们就知道他们现在在做什么,因此我们更新内部状态以匹配。无需严格模拟服务器端的所有内容;我们可以只记录客户告诉我们的事情,并进行一些检查,以确保客户所说的事情对我们来说似乎是合理的。
perTick * ticksSinceLastUpdated
简单,高效的操作。
除了给出的其他好的答案之外,我还要补充一点,一些物理通常不是由服务器驱动的,甚至不是由服务器了解的,这是使世界看起来更加丰富而不增加网络或服务器开销的常见技巧。副处理。
例如,可能有碎片,您可以在地面上踢来踢去,或者在与其他物体相互作用的风中吹来飞去,或者可以将尸体推到周围。
如果物理纯粹是装饰性的,并且不以任何方式影响运动或游戏玩法,则可以完全在客户端进行。
不同的玩家会看到不同的事物(例如,如果您在地面上射击一个罐子,并且它会飞走,其他玩家可能看不到它会飞走),但是在很多情况下,体验并不重要。对于所有玩家来说都是一样的,并且进行客户端物理模拟可以真正改善在线游戏的外观。
EVE Online是一种大型单人游戏,只有一个碎片,在大型太空战中最多可打数千个炸弹,其物理运行在1 Hz的刻度上,称为“命运”刻度。
http://community.eveonline.com/news/dev-blogs/fixing-lag-drakes-of-destiny-part-1-1/
所谓的“ B-R5RB之血”是迄今为止在线游戏中发生的最大的紧急玩家战斗(“长达21小时的冲突涉及7,548个玩家角色,而B-R5RB系统中最多包含2,670个玩家根据https://en.wikipedia.org/wiki/Bloodbath_of_B-R5RB)。