大型MMORPG多久更新一次物理?[关闭]


12

据我了解,大多数大型游戏使用固定的时间步进行稳定的模拟。

关于游戏服务器,它们施加哪个“帧速率”?或换一种说法,他们倾向于使用固定的时间步长?

我知道很多人会说:“尽快逃脱”。如果您有建立MMORPG的直接经验,我想知道这有多快。


您不应该过多关注别人的工作。对其他人有用的不一定也需要为您工作。
菲利普

6
EVE Online每秒更新一次仿真,但是它的系统异常。有关更多详细信息,请参见本文的第一部分:themittani.com/features/understanding-eve-online-server-tick
Ross Ridge

1
因此,这是一个“寻求琐事琐事”,而不是有关开发游戏的问题?
Trevor Powell

2
我不会称这为琐事-这很重要。有些游戏可以使用1秒钟的滴答声,而我不知道,或者根本不使用物理,这对我来说非常重要(对任何开发人员而言)。同时,我对Philipp的回答是由于它隐含的暗示,我之所以提出这个要求是因为我想决定自己的FPS。那是没有道理的,因为我的引擎有很多限制,而且我已经知道我可以使用的极限FPS(上下限)。
法比奥

1
我记得曾读过一篇有关暴雪的文章,该文章将战斗事件的WoW服务器处理速度从每400个MS一次更改为“每当它们进入”。但是,这与物理学无关,因为《魔兽世界》由于年代久远而在物理学方面确实没有太多影响。我也找不到这个来源。
Nzall 2015年

Answers:


7

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和图形处理能力。世界精度取决于网络性能。)


确实,这似乎是合理的。我发现,即使集成度良好且碰撞检测足够智能,甚至可以低至30 FPS的表现。您是否知道其他具有适当物理学的MMO,以及它们的时标?
法比奥

2
被认为是提供真实示例的唯一方法,但是所有方法都是值得深思的。谢谢你们。
法比奥

24

我曾经在几个游戏服务器上工作过,包括一套用于MMO的游戏服务器。

通常,他们根本没有物理学。在少数需要物理的情况下(主要是跳跃),我们让客户计算自己的物理,而我们只是否认任何过分古怪的事情(玩家移动得太久太久,移动得比他们应该跳高的速度要高得多,等等)。

服务器通常也没有“时间表”。他们通常根本不考虑“每秒帧数”。相反,我们知道什么时候上次听到某人的消息以及当时他们在做什么,然后等一会儿再听到他们的消息时,我们就知道他们现在在做什么,因此我们更新内部状态以匹配。无需严格模拟服务器端的所有内容;我们可以只记录客户告诉我们的事情,并进行一些检查,以确保客户所说的事情对我们来说似乎是合理的。


4
这只有在没有玩家登录的情况下环境无法进行任何模拟的情况下才有效,对吧?我实际上以为它通常如此,但是对于大多数MMO来说,这并不重要,因为它并不是真正的“活着”。谢谢,这是一个意外的答案。
法比奥

2
@Fabio大多数MMO在没有观察员的情况下什么也不做-甚至Ultima Online以前拥有真实的,生存的经济(和生态),在发行之前就放过了(尽管不是出于技术原因)。在有些游戏中,即使您不玩游戏,东西也会发生(例如,Haven和Hearth),但诀窍是什么都不会发生,直到观察到为止-每个活动项目都会记住上次被观察到的时间,并计算发生的事件同时您再次看到它的那一刻。因此,您无需执行任何更新值,而是执行perTick * ticksSinceLastUpdated简单,高效的操作。
a安2015年

1
不要误会我的意思;MMO服务器通常会定期运行它们。检查是否需要重新生成怪物,考虑生成资源节点,备份游戏状态。如果您的游戏具有某些程序性活动,甚至可能更花哨。但这与物理原理不同,即使没人在身边,您每秒也要运行“ x”次。您可能会每分钟检查一次生成怪物,然后检查它们的顶部(或更可能是使用一个外部程序来执行该操作,并且仅戳服务器以使其知道时间到了,以便服务器本身可以专注于处理客户端请求) 。
Trevor Powell

11

除了给出的其他好的答案之外,我还要补充一点,一些物理通常不是由服务器驱动的,甚至不是由服务器了解的,这是使世界看起来更加丰富而不增加网络或服务器开销的常见技巧。副处理。

例如,可能有碎片,您可以在地面上踢来踢去,或者在与其他物体相互作用的风中吹来飞去,或者可以将尸体推到周围。

如果物理纯粹是装饰性的,并且不以任何方式影响运动或游戏玩法,则可以完全在客户端进行。

不同的玩家会看到不同的事物(例如,如果您在地面上射击一个罐子,并且它会飞走,其他玩家可能看不到它会飞走),但是在很多情况下,体验并不重要。对于所有玩家来说都是一样的,并且进行客户端物理模拟可以真正改善在线游戏的外观。


在某些游戏中,如果飞得足够快,它可以杀死某人。我看过Halo游戏的视频,其中有人被爆炸推动的交通锥杀死。
2015年

如果您想让罐子影响游戏玩法,可以将其添加到同步物理世界中,但是您也可以在同一空间中拥有一个非同步物理世界!基本上,非同步物理世界可能会受到玩家和同步物理世界的影响,但不会对其造成影响(:
艾伦·沃尔夫

3

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)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.