Как клиенты онлайн-игры могут обмениваться данными через Интернет настолько быстро?

Давайте вообразим действительно простую игру... У нас есть лабиринт и два плеера, пытающиеся узнать выход в режиме реального времени через Интернет.

На каждом перемещении игровой клиент должен отправить координаты игрока на сервер и принять текущие координаты другого клиента. Как возможно сделать этот обмен так быстро (как все современные игры делают).

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

Так, вопросы...

  1. Что игровые клиенты протокола обычно используют для обмена информацией с сервером?
  2. Какие технологии сервера прибывают для решения этой проблемы?
  3. Какие алгоритмы применяются для борьбы с задержками во время игры и т.д.
15
задан Jonas 6 February 2012 в 01:09
поделиться

3 ответа

Обычно с сетевой интерполяцией и прогнозированием. Gamedev - хороший ресурс: http://www.gamedev.net/reference/list.asp?categoryid=30

Также проверьте этот: http://developer.valvesoftware.com/ wiki / Source_Multiplayer_Networking

8
ответ дан 1 December 2019 в 04:17
поделиться
  • использовать UDP, а не TCP
  • использовать настраиваемый протокол, обычно один байт, определяющий «команду», и как можно меньше последующих байтов, содержащих аргументы команды
  • прогнозирование используется чтобы движения других игроков казались плавными без необходимости получать обновления для каждого отдельного кадра

подсказка: прогнозирование используется в любом случае для сглаживания быстрого обновления экрана (~ 60 кадров в секунду), поскольку фактическая скорость игры обычно ниже (~ 25 кадров в секунду) .

5
ответ дан 1 December 2019 в 04:17
поделиться

Другие ответы не прояснили пару важных заблуждений в исходном сообщении, которые заключаются в том, что эти игры не являются веб-сайтами и работают совершенно по-другому. В частности:

  • Здесь нет или почти нет "обработки данных", которую нужно ускорять. Самые быстрые онлайновые игры (например, шутеры от первого лица) как правило, ничего не сохраняют на диск во время матча. Более медленные онлайн игры, такие как MMO, могут использовать базу данных, в основном для хранения информации об игроках, но по большей части в основном они хранят данные об игроках и мире в памяти, а не на диске.
  • Они не используют веб-серверы. HTTP - относительно медленный протокол, и даже TCP может быть слишком медленным для некоторых игр. Вместо этого они используют специализированные серверы, написанные специально для этой игры. Часто эти серверы настроены на низкую задержку, а не на пропускную способность, потому что они обычно передают не большие документы, как веб-сервер, а множество крошечных сообщений (например, измеряемых в байтах, а не килобайтах).

Когда эти два вопроса решены, проблема скорости в значительной степени исчезает. Вы можете послать сообщение на сервер и получить ответ менее чем за 100 мс и можете делать это несколько раз в секунду.

3
ответ дан 1 December 2019 в 04:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: