Как создаются многопользовательские онлайн-РПГ?

StackOverflow https://stackoverflow.com/questions/1418749

Вопрос

Как создаются многопользовательские онлайн-RPG-игры?

  • На какой серверной инфраструктуре они построены?особенно с таким количеством клиентов, подключенных и общающихся в режиме реального времени.

  • Справляются ли они со скриптами, которые выполняются при запросах страницы?или установлены службы, которые работают в фоновом режиме и управляют связью с подключенными клиентами?

  • Используют ли они другие протоколы?потому что HTTP не позволяет серверам передавать данные клиентам.

  • Как работают "движки" для централизованной обработки сотен конфликтующих игровых событий?

Спасибо, что уделили мне время.

Это было полезно?

Решение

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

Я бы предположил, что серверы будут работать на Linux, BSD или Solaris почти 99% времени.

Справляются ли они со скриптами, которые выполняются при запросах страницы?или установлены службы, которые работают в фоновом режиме и управляют связью с подключенными клиентами?

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

Используют ли они другие протоколы?потому что HTTP не позволяет серверам передавать данные клиентам.

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

Как работают "движки" для централизованной обработки сотен конфликтующих игровых событий?

В большинстве MMO есть зоны, которые ограничивают это определенным количеством людей.Для тех, у кого действительно 100 человек в одном районе, обычно наблюдается высокая задержка.Серверу приходится иметь дело со сотнями заклинаний, отправляемых в его сторону, и он должен рассчитать сумму урона для каждого из них.Что касается ММО "большой пятерки", то я полагаю, что над этим ежедневно работают команды из 10-20 очень умных, математически одаренных разработчиков, и пока нет ни одной ММО, которая справилась бы с этим правильно, большинство ломаются после 100 игроков.

--

Взгляните на Вау - Му (официального сайта нет, и я не хочу ссылаться на сомнительный сайт).Это основано на Апирекор который является симулятором MMO, или, по сути, обратным проектированием протокола WoW.Это то, на чем работают частные серверы WoW.Насколько я помню, Wowemu - это

  • MySQL - сервер
  • Питон

Однако ApireCore - это C ++.

Серверная часть для Wowemu удивительно проста (однако я попробовал ее в 2005 году) и, вероятно, полностью упрощает схему базы данных.Это действительно дает вам хорошее представление о том, о чем идет речь.

Другие советы

Многие дороги ведут в Рим, а многие архитектурные сооружения ведут к MMORPG.

Вот несколько общих соображений по вашим основным пунктам:

  • Серверная инфраструктура должна поддерживать возможность масштабирования...добавляйте дополнительные серверы по мере увеличения нагрузки.Кстати, это хорошо подходит для облачных вычислений.В настоящее время я запускаю крупное приложение для предоставления финансовых услуг, которое необходимо масштабировать вверх и вниз в зависимости от времени суток и года.Мы используем Amazon AWS для практически мгновенного добавления и удаления виртуальных серверов.
  • MMORPG, с которыми я знаком, вероятно, не используют веб-сервисы для общения (поскольку они не имеют состояния), а скорее пользовательскую серверную программу (напримерслужба, которая прослушивает сообщения TCP и / или UDP).
  • Вероятно, они используют пользовательский протокол на основе TCP и / или UDP (посмотрите на связь через сокеты)
  • Большинство игр разделены на "миры", что ограничивает количество игроков, находящихся в одной виртуальной вселенной, количеством игровых событий, которые может разумно обработать один сервер (вероятно, с большим количеством процессоров и памяти).Точный механизм обработки событий зависит от требований разработчика игры, но в целом я ожидаю, что входящие события попадают в приоритетную очередь (с приоритетом по времени получения и / или отправки и, возможно, по другим критериям вроде "насколько это плохо, если мы проигнорируем это событие?").

В целом это очень большая тема.Я бы посоветовал вам ознакомиться с Amazon.com на предмет наличия книг, охватывающих эту тему.

Поскольку для разработки и развертывания MMO в целом требуются ресурсы бизнеса, и на этом этапе они являются ценным корпоративным IP, общедоступной информации о внедрениях не так уж много.

Одна вещь, которая достаточно очевидна, заключается в том, что, поскольку MMOS по большому счету используют пользовательский клиент и средство 3D-рендеринга, они не используют HTTP, потому что они не являются веб-браузерами.Онлайн-игры будут иметь свои собственные протоколы, построенные поверх TCP / IP или UDP.

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

Что касается big daddy, World of Warcraft, то мы можем предположить, что их базой данных является Oracle, потому что в списках вакансий Blizzard опыт работы в Oracle часто указывается в качестве требования / плюса.Они используют Lua для написания сценариев пользовательского интерфейса.C ++ и OpenGL (для Mac) и Direct3D (для ПК) можно считать языками реализации игровых клиентов, потому что именно на них создаются игры.

Одна компания, которая спокойно относится к обсуждению их внедрения, - это CCP, создатели Eve online.Они опубликовали ряд презентаций и статей об инфраструктуре Eve, и это особенно интересный случай, потому что они используют Stackless Python для большей части реализации Eve.

http://www.disinterest.org/resource/PyCon2006-StacklessInEve.wmv http://us.pycon.org/2009/conference/schedule/event/91/

Была также недавняя статья в журнале Game Developer Magazine об архитектуре Eve:

https://store.cmpgame.com/product/3359/Game-Developer-June%7B47%7DJuly-2009-Issue---Digital-Edition

Радиоподкаст по разработке программного обеспечения содержал эпизод с Джимом Пурбриком о Second Life в котором обсуждаются серверы, миры, масштабирование и другие внутренности MMORPG.

Традиционно MMO были основаны на серверных приложениях C ++, работающих в Linux, взаимодействующих с базой данных для внутреннего хранилища и клиентскими приложениями fat, использующими OpenGL или DirectX.

Во многих случаях клиент и сервер встраивают скриптовый движок, который позволяет определять поведение на языке более высокого уровня.EVE примечательна тем, что она в основном реализована на Python и работает поверх Stackless, а не в основном на C ++ с некоторыми высокоуровневыми скриптами.

Как правило, сервер находится в цикле считывания запросов от подключенных клиентов, обработки их для обеспечения соблюдения игровой механики, а затем отправки обновлений клиентам.UDP можно использовать для минимизации задержек и повторной передачи устаревших данных, но поскольку в RPG обычно не используется twitch, обычно лучшим выбором является TCP / IP.Comet или BOSH можно использовать для обеспечения двунаправленной связи по HTTP для веб-MMO, и веб-сокеты скоро станут хорошим вариантом для этого.

Если бы я создавал новую MMO сегодня, я бы, вероятно, использовал XMPP, BOSH и создал клиент на JavaScript, поскольку это позволило бы ему работать без загрузки fat-клиента и взаимодействовать с системами обмена мгновенными сообщениями и голосовой связи на основе XMPP (например, gchat).Как только WebGL получит широкую поддержку, это позволит создавать 3D-виртуальные миры на основе браузера.

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

Есть хорошая презентация об архитектуре Second Life от Иэна Уилкса, который был здесь директором по операциям: http://www.infoq.com/presentations/Second-Life-Ian-Wilkes

Большинство моих докладов о технологии Second Life взяты из моего блога по адресу: http://jimpurbrick.com

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top