Насколько я понимаю, MMORPG - это игры, которые запускаются на вашем компьютере, как и любая другая обычная трехмерная видеоигра, но с каждым действием, которое происходит в игре, изменения вносятся во вселенную через HTTP-вызовы на сервер. Таким образом, компьютер игрока выполняет всю тяжелую работу с точки зрения рендеринга графики и анимации, но веб-фреймворки обеспечивают онлайн-общение.
Поэтому мне интересно, какие веб-фреймворки, веб-серверы и базы данных используются для создания MMORPG, таких как EVE Online и WOW?
Кроме того, какие языки программирования и движки трехмерных игр используются для того, чтобы клиентская часть (3d графика / анимация / звуки) стала частью игры?
Ответы:
Большинство компаний используют C ++. Ева выделяется, ядро графического движка находится на C ++, а логика игры, как уже отмечалось, на Python. CCP также делает большой вклад в сам Stackless, который по большей части находится в C. WoW - это C ++ для самой игры, хотя пользовательский интерфейс написан на Lua. Cryptic (Champions Online, Star Trek Online) использует простой C, но это довольно редко встречается в индустрии. Ява всплывает время от времени, напр. Runescape, но я не могу думать ни о чем AAA. Дисней использовал Panda3D (движок на основе Python, написанный на C) для ряда своих ММО, но, как и в случае с Евой, это необычно.
В целом это похоже на C ++ для игровой логики и движка, а Lua для клиентских скриптов ближе всего к стандарту.
Что касается веб-сайта, то все кончено. Мы (Cryptic) используем смесь PHP, C и Python (Django) для различных битов. CCP использует ASP для самого сайта и Python для поддержки бэкэнда (хотя и медленно смещается). WAR и LOTRO используют PHP для своего сайта, хотя не ясно, какие именно фреймворки они используют (если таковые имеются).
Вы упомянули, что ММО работают через вызовы веб-API, но это не так. Протокол на основе HTTP был бы слишком неэффективным, а HTTP не предназначен для длительных соединений. Практически все ММО (которые не основаны на Интернете, такие как Kingdom of Loathing или Urban Dead) используют собственные серверы и пользовательские протоколы. Клиенты с высокой степенью состояния, что-то вроде создания пользовательского интерфейса инвентаризации не будет запускать запрос к серверу, поскольку вся эта информация кэшируется на клиенте.
источник
Несколько ссылок для EVE Online:
По сути, EVE Online работает на SQL Server 2005 и некотором другом программном обеспечении Microsoft. Однако основа клиента в основном написана на Python (точнее, на сколько я помню, Python без стека) и, скорее всего, немного на C ++.
Что касается World of Warcraft, я знаю, что они используют Lua для всего клиентского интерфейса, но, кроме того, я не думаю, что они используют Lua для чего-то еще. C ++, вероятно, то, что используется. WoW, я думаю, что также использует некоторые блоки Windows, но вполне вероятно, что они будут иметь некоторые другие типы блоков, специфичные для определенных задач, которые могут вообще не основываться на Windows.
Не много информации, но надеюсь, что это поможет.
Многие из этих игр разделяют серверы по функциональности, поэтому у них будет сервер базы данных, который отвечает только за хранение объектов / чего бы то ни было, и серверы, которые фактически управляют игровым миром (проверяют действия игрока и т. Д.).
источник
Я не совсем уверен насчет EVE и WoW, но я видел, что MMO-игры используют C ++, C #, Java и даже PHP для сервера (хотя последний только для простых браузерных игр).
Клиент чаще всего написан на C ++ (или Flash, если это браузерная игра); Я работал с клиентом на основе .NET один раз (C # в сочетании с C ++ / CLI).
И почти всегда какой-то динамический язык сценариев используется для облегчения разработки «дизайнерского» контента - например, способностей, квестов и т. Д. - вещей, которые часто меняются и могут быть изменены дизайнерами игр в отличие от программистов.
источник
Во-первых, MMORPG или любая онлайн-игра не используют HTTP или «веб-фреймворки».
Сервер программируется так же, как и сама игра, в C ++, и связь достигается с помощью сокетов для передачи пакетов по сети.
Серверы часто работают под управлением другой ОС и содержат только игровой код, поэтому многие игроки могут без проблем играть на одном сервере.
Я не знаю, как Blizzard управляет своими серверами, я не знаю, используют ли они кластеры или нет.
Конечно, когда я говорю «сокеты» и «C ++», я имею в виду игру в реальном времени, а не другие сервисы, которые может предложить игра, например, арсенал с WoW. Они могут просто использовать базу данных, которую можно прочитать из нескольких сервисов, таких как форум, склад оружия, игра, администрация аккаунта и т. Д., Но я думаю, что у них есть зависимые базы данных, которые ищут новые записи и т. Д., Поэтому все может синхронизироваться хорошо.
Я думаю, что парень, отвечающий за сетевую часть WoW, может быть настоящим задирой.
источник
Для EVE они рассказали о StacklessIO на PyCon 2009: http://us.pycon.org/2009/conference/schedule/event/91/
источник
Существуют десятки игровых движков. Два, которые приходят мне на ум, это Unreal Engine и Source.
Что касается языков, это зависит от задачи. Рендеринг и другие важные части производительности обычно выполняются на одном из родных языков. С ++ например. Но для определения сценариев обычно используют какой-то динамический язык, потому что этот код с большей вероятностью изменится и часто пишется менее «хардкорными» программистами :-) Lua, Python, Ruby - все они могут быть использованы здесь.
источник
WoW также использует Lua для всех своих внутренних скриптов. Я не уверен, изменили ли они сам язык, но я бы не усомнился в этом, чтобы он соответствовал их потребностям. Вы можете поспорить, что у них есть различные инструменты, которые позволяют их дизайнерам легко модифицировать / настроить скрипты. Это инсайдерская информация от моих друзей, которые когда-то были разработчиками WoW.
источник