Скорость света, Почему трудно сделать глобальную MMO-игру, и Что же может нас спасти.

Несколько общеизвестных фактов:

1. Скорость передачи сигнала в оптоволокне 200.000 км/с.

2. Длина экватора Земли 40.000 км.

Теперь возьмем сферическую MMO-игру. Поскольку максимальное расстояние между двумя точками на поверхности Земли равно 20.000 км, то можно взять, что среднее растояние от игрока до сервера будет 10.000 км. Это расстояние сигнал пройдет за 50 мс, а потом обратно еще за 50 мс. Получаем, что когда игрок нажмет на кнопку ATTACK у себя на компе, то ДОСТОВЕРНЫЙ результат он узнает не раньше чем через 100 мс.

Играть в крестики-нолики можно, но вот в шутер уже проблематично. Какое возможно решение? Сразу в голову приходит вариант с наркотическими веществами, которые замедляют реакцию человека. Прямо вижу шлем виртуальной реальности со специальным катетером, через который будет подаваться "тормозящее" вещество. Причем доза будет зависеть от реального пинга, чтобы уравнять шансы тех, кто "дальше" от сервера, с теми, кто "ближе". Пока что это единственное решение, которое приходит мне в голову. Может есть другие?..

Комментарии

Есть такое понятие - компенсация лагов, вполне приемлимое решение при наличии годной защиты на стороне клиента.

  1. Простой способ - попадания и реакции отслеживаются на стороне клиента, но в приемлимых рамках, но если у тебя пинг 500 ты попадать все равно не будешь нормально потому что иначе другие игроки будут умирать от твоих пуль выпущенных в воздух стоя за пуленепробиваемой стенкой.
  2. Есть способ посложнее, когда в добавок к обработке клиентом происходит проверка возможности действия на сервере, но не четкая, а более общая, например, мог ли игрок А попасть в игрока Б учитывая их месторасположения и характеристики(оружие, укрытия, и т.д.).
  3. Худший вариант когда общет производит сервер, это значит что ты будешь при пинге 150 лупасить в игрока которого там уже нет физически, но есть визуально.

А шансы уравнивать глупо по следующим причинам: игроки делятся на 3 основных региона, EU, NA, PAC и играют в основном в своем регионе для которого в случае нормального провайдера пинг не будет превышать 50, но не только из-за пинга они играют в своем регионе а не в чужом - еще у них примерно одни и те же световые сутки, а следовательно общий онлайн.

Ну и на последок я просто оставлю здесь ключевые слова по поводу мгновенной связи на ЛЮБОЕ известное расстояние: Квантовая сцепленность(Quantum entanglement)

Submitted by daspisch on

Боюсь, квантовая сцепленность не поможет, потому что Эйнштейн сказал, что передавать СИГНАЛ быстрее скорости света нельзя. А вот если передавать быстрее света что-то, не несущее информацию, - это пожалуйста.

Шел 2008й год

Другое дело что не скоро это доведут до ума и повсеместного использование, но факт остается фактом.

Submitted by daspisch on
Come-from-Beyond wrote:

Получаем, что когда игрок нажмет на кнопку ATTACK у себя на компе, то ДОСТОВЕРНЫЙ результат он узнает не раньше чем через 100 мс.

Аффтару стоит меньше фантазировать и больше читать тематических вещей.

Лаг между нажатием кнопки и визуальным результатом в GTA4 на PS3 (без всякой сети) = 5-6 кадров = 150..180мс. Лаг в типовом beat'em-up на PSN/XBLA может достигать 200-300мс и это даже не смертельно. Чисто физиологически лаг до 200мс не воспринимается как большая задержка — можно почитать в Game Feel или в какой-нить более специальной литературе.

Я вот буквально недавно играл Soul Calibur (это файтинг, не какой-нить неторопливый ММО-мышеклик) с омеригой и ипонией, никаких специальных веществ употреблять не нужно Smile

Submitted by BLK Dragon on

Lag-compensation и Dead-reckoning... Я знаю про эти вещи. Ни одна из них не поможет, если игроки с разных континентов хотят сыграть в игру "Кто быстрее схватит со стола яблоко на счет ТРИ".

 

>> 

Quote:

Ага! В Ultima Online со 150 мс пингом я дохну в 5 раз чаще, чем с пингом 60 мс, играя ПвП. Совершенно не воспринимается...

Ты не путай тяжёлое с холодным. Лаг в 200мс между действием и результатом вообще как лаг не воспринимается человеком, ибо восприятие внешнего мира, выработка решения, выполнение действия и наблюдение результата занимает больше чем 200мс. "Пинг 150" это вообще не тот лаг, про который я говорил; реальный лаг между действием и наблюдением результата в ММО он побольше.

Игра в файтинг это как раз и есть "кто быстрее схватит яблоко", и оно де-факто работает при игре с разными континентами. Там, конечно, немного частный случай (сервер для match-making'а, P2P в бою), но всё таки работает.

Submitted by BLK Dragon on

>> 

Quote:

В такой ситуации работают рефлексы, а не восприятие...выработка...выполнение...наблюдение.

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

Есть, упрощённо, три процесса, которые постоянно работают (если ты не спишь) : восприятие/обработка сигналов, выработка решений, выдача "команд" на периферийную нервную систему. "Тик" на кадом цикле порядка 100мс (всё индивидуально конечно). Чистая физиология, всё описано и разобрано; в приложении к гейм-дезигну замечательно расписано в первых главах Game Feel (http://www.amazon.com/Game-Feel-Designers-Sensation-Kaufmann/dp/0123743281).

Я специально в качестве примера использовал файтинг — это самый "быстрый" жанр, никакой ммо/шутер рядом не валялся. Какая-нить Natsu в SC5 за полсекунды успеет четыре удара нанести и ещё контратаку заблочить, "окно" для just guard всего несколько кадров (20-30мс) и вот ачивку за 5 just-guard'ов в одном раунде заработал как раз в онлайновом матче. Я fight-stick купил, среди прочего, потому что физически не могу на геймпаде так быстро кнопки нажимать Smile

Это всё к чему — если уж в файтингах и шутерах работает онлайн с разными континентами, то "сложности" глобальной" ммо слегка преувеличены; по крайней мере они не только в лагах.

Submitted by BLK Dragon on

>> 

Поиграйте в какойнить FPS и поймёте, что задержки сети в 50+мс это уже существенно, а в 100+мс это не игра а мазохизм (тут подсознание приспосабливается играть на опережение)

Если уже пошли такие танцы то и фреймрейт в 30, 60 и 120 кадров есть большая раздница, (я физически немогу играть в игры где фреймрейт меньше 60 кадров), Также поиграв с фреймрейтом 120 играть на 60 уже не удобно. Опятьже я говорю по личным наблюдениям одного из жанров, умники говорящие, что 30 кадров для игр достаточно однозначно идут в лес Smile

Submitted by Relyer on
Relyer wrote:

умники говорящие, что 30 кадров для игр достаточно однозначно идут в лес:)4

Рендерить на 30фпс -- вполне достаточно. Update лучше делать на 60. Это разные вещи, очень разные.

И потом часто все "борцы за фпс" забывают что GPU типично буфферит несколько кадров и сам термин "FPS" почти ничего не объясняет -- можно иметь хоть 200фпс, а "мышка всё равно не плавнаяааа". Что-то объясняет input latency, с фпс это связано слабо.

Submitted by BLK Dragon on

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

Submitted by Relyer on
Quote:

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

Я думаю ты упустил суть — рисовать вовсе не обязательно так же часто как апдейтишь. Лучше апдейтить 60 раз в секунду и рисовать 30, чем упдейтить и рисовать 40 раз в секунду. Т.е. нет смысла тратить ресурсы если всё равно не успеваешь 60, лучше пусть будет стабильно 30 но апдейт на 60.

Не знаю, что такое "динамический рейт физики", но обычно физика берёт тот делта-тайм какой дали и дальше работает с fixed time step (как настроили, обычно 60, но бывает нужно чаще).

Submitted by BLK Dragon on

в game programming gems 3 есть глава на эту тему^ про менеджер событий

Submitted by Nort on

А зачем апдейтить сцену если её не нужно рисовать, не понимаю :), по моему вариант 40/40 лучше чем 30/60 если брать проблему в общем, а не адапрированную под консоли, и TV.

Submitted by Relyer on
Relyer wrote:

А зачем апдейтить сцену если её не нужно рисовать, не понимаю :), по моему вариант 40/40 лучше чем 30/60 если брать проблему в общем, а не адапрированную под консоли, и TV.

А ты попробуй (на пейси) и поймёшь Smile

Мне как бы неинтересны фантазии -- я же чисто из практичеческих соображений говорил.

Submitted by BLK Dragon on

Ну просто хотелось бы понять, более конкретно, фантазии тут не причём Smile

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

Submitted by Relyer on
Quote:

 так много игр где это не принципиальный вопрос.

Игр, где фпс принципиальный вопрос, ровно два жанра: гоночки и файтинги, т.е. гоночки или файтинги где не 60фпс — это довольно жалкое зрелище. Во всех остальных достаточно рисовать 30 раз в секунду и чтоб input latency был не больше 200мс вполне нормально, как то так.

Пересказывать "вкратце" книжки — затея дурная; читай и пробуй, никакого секретного сакрального знания и волшебных рецептов нет. Нет никакой ложки ™

Submitted by BLK Dragon on

Упс я тут подумал, что мот не все расшифровали FPS как First Person Shooter, так, офтоп Smile

Submitted by Relyer on

GameDev.by