Как часто большая MMORPG обновляет физику? [закрыто]

12

Насколько я понимаю, большинство больших игр используют фиксированный временной интервал для стабильной симуляции.

Что касается игрового сервера , какую «частоту кадров» они навязывают? Или сказал по-другому, какой фиксированный временной интервал они используют?

Я знаю, что многие скажут: «Так быстро, как они могут сойти с рук». Я хотел бы знать, насколько это быстро, если у вас есть непосредственный опыт создания MMORPG.

Fabio
источник
Вы не должны обращать слишком много внимания на то, что делают другие. То, что работает для кого-то другого, не обязательно также должно работать для вас.
Филипп
6
EVE Online обновляет симуляцию раз в секунду, но ее система необычна. См. Первую часть этой статьи для более подробной информации: themittani.com/features/understanding-eve-online-server-tick
Росс-Ридж,
1
Таким образом, это вопрос о том, чтобы «поинтересоваться мелочами о играх других людей, которые уже существуют», а не о разработке игры?
Тревор Пауэлл
2
Я бы не назвал это пустяками - это очень важно. Тот факт, что некоторые игры могут использовать 1-секундные тики, о которых я не знал, или которые вообще не используют физику, очень важен для меня (и так должно быть для любого разработчика). В то же время, мой ответ Филиппу был вызван тем, что я спрашивал об этом, потому что хотел принять решение о своих FPS. Это не имеет смысла, потому что у моего движка есть много ограничений, и я уже знаю предельный FPS, который я могу использовать (как нижнюю, так и верхнюю границы).
Фабио
1
Я помню, как читал статью о том, как Blizzard изменила скорость обработки сервера WoW для боевых событий с одного раза каждые 400 мс до «всякий раз, когда они приходят». Тем не менее, это не связано с физикой, поскольку WoW на самом деле не имеет большого значения для физики из-за своего возраста. Я также не могу найти источник для этого.
Nzall

Ответы:

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.

(В Second Life частота кадров зависит от процессора и графической мощности каждого клиента. Точность в мире зависит от производительности сети.)

Дэвид ван Бринк
источник
Действительно, это кажется разумным. Я нашел даже 30 FPS, чтобы сделать достойную работу, если интегратор хорош и обнаружение столкновений достаточно умен. Знаете ли вы о других ММО с правильной физикой и об их временных шагах?
Фабио
2
Принято как единственный пример из реальной жизни, но все они были хорошей пищей для размышлений. Спасибо ребята.
Фабио
24

Я работал над парой игровых серверов, включая набор из них для MMO.

В общем, у них вообще нет физики. В тех немногих ситуациях, когда физика необходима (в первую очередь, прыжки), мы позволяем клиентам вычислять свою физику, и мы просто отрицаем все, что слишком диковинно (игроки слишком быстро двигаются слишком долго, намного выше, чем они могли бы прыгнуть, и т.д).

Серверы также обычно не имеют «временных шагов». Они обычно не думают в «кадрах в секунду» вообще. Вместо этого мы знаем, когда мы в последний раз слышали от кого-то и что они делали тогда, а затем, когда через некоторое время мы снова слышим от них, мы слышим о том, что они делают сейчас, и поэтому мы обновляем наше внутреннее состояние, чтобы соответствовать , Там нет необходимости строго моделировать все на стороне сервера; мы можем просто записывать то, что говорят нам клиенты, и делать некоторые проверки, чтобы убедиться, что то, что говорят клиенты, выглядит правдоподобно для нас.

Тревор Пауэлл
источник
4
Это будет работать только в том случае, если среда не выполняет симуляцию без игроков, не так ли? Я на самом деле предполагал, что это вообще так , но, вероятно, это не важно для большинства ММО, поскольку на самом деле он не «живой». Спасибо, это был неожиданный ответ.
Фабио
2
@Fabio Большинство ММО ничего не делают, когда нет наблюдателя - даже Ultima Online, которая раньше имела реальную, живую экономику (и экологию), отпустила ее до выпуска (хотя и не по техническим причинам). Есть игры, в которых вещи случаются, даже когда вы не играете (например, Хейвен и Харт), но хитрость в том, что ничего не происходит, пока не наблюдается - каждый активный элемент запоминает последний раз, когда он наблюдался, и вычисляет, что произошло в тем временем, когда вы видите это снова. Таким образом, вместо значения, обновляющего каждый тик, вы делаете perTick * ticksSinceLastUpdated- просто, эффективно.
Луаан
1
Не пойми меня неправильно; На MMO-серверах часто выполняются периодические задачи. Проверьте наличие монстров, которые нужно возродить, рассмотрите возможность появления узлов ресурсов, сделайте резервную копию состояния игры. Может быть, даже что-то более причудливое, если в вашей игре есть процедурная активность. Но это не похоже на физику, когда вы бегаете «х» раз в секунду, даже когда никого нет рядом. Вы можете проверять нерестящихся монстров несколько раз в минуту, топы (или, более вероятно, иметь внешнюю программу, которая делает это, и просто нажимает на сервер, чтобы сообщить, что пришло время, поэтому сам сервер может сосредоточиться на обработке клиентских запросов) ,
Тревор Пауэлл
11

Помимо других хороших ответов, я хочу добавить тот факт, что некоторая физика обычно не управляется сервером или даже не знает сервером и является обычной уловкой, чтобы сделать мир более богатым без дополнительных затрат на работу сети или сервера. боковая обработка.

Например, там могут быть обломки, которые вы можете пнуть на земле или развеваться на ветру, который взаимодействует с другими объектами, или, может быть, вы можете толкать мертвые тела вокруг.

Если физика носит чисто декоративный характер и никак не влияет на движение или игровой процесс, это может произойти на стороне клиента полностью.

Разные игроки будут смотреть на вещи по-разному (например, если вы выстрелите из банки в банку, и она улетит, другие игроки могут не увидеть, что может улететь), но есть много случаев, когда это не имеет значения, что опыт не ' То же самое для всех игроков, и симуляции на стороне клиента могут реально улучшить внешний вид онлайн-игры.

Алан Вульф
источник
В некоторых играх, если это может улететь достаточно быстро, это может кого-то убить. Я видел видео о играх Halo, где кто-то убит транспортным конусом, взорванным на них взрывом.
Random832,
Если вы хотите, чтобы баночка влияла на игровой процесс, вы можете добавить ее в мир синхронизированной физики, но вы также можете иметь несинхронизированный мир физики в том же пространстве! В основном, на мир несинхронизированной физики могут влиять игрок и мир синхронизированной физики, но он не может повлиять на них назад (:
Алан Вулф,
3

EVE Online, MMO с одним осколком и несколькими тысячами табличек в больших космических битвах, использует физику на такте 1 Гц, который называется тик «судьба».

http://community.eveonline.com/news/dev-blogs/fixing-lag-drakes-of-destiny-part-1-1/

Так называемая «Кровавая баня B-R5RB» - это крупнейшая новая битва игроков, когда-либо случавшаяся в онлайн-играх («конфликт продолжительностью 21 час вовлек в себя более 7 548 персонажей в целом и максимум 2670 игроков в системе B-R5RB»). в одно время ", сообщает https://en.wikipedia.org/wiki/Bloodbath_of_B-R5RB ).

Polygnome
источник