Какие языки используются для разработки MMORPG, таких как EVE Online и WOW? [закрыто]


22

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

  • Поэтому мне интересно, какие веб-фреймворки, веб-серверы и базы данных используются для создания MMORPG, таких как EVE Online и WOW?

  • Кроме того, какие языки программирования и движки трехмерных игр используются для того, чтобы клиентская часть (3d графика / анимация / звуки) стала частью игры?


Я думаю, что почти каждая MMO начинается с готовых технологий, а затем настраивает их, как только они вырастут до определенного размера и начнут действительно специализировать свои инструменты. Великолепный
Майкл

Вы имеете в виду TCP звонки на сервер? HTTP (HyperText Transfer Protocol) используется веб-серверами и браузерами для веб-страниц и не имеет ничего общего с MMO, если вы не имеете в виду браузерную игру, такую ​​как urbandead.
каменный металл

Майкл Стум, Stackless I / O сделан с использованием Stackless Python?

@ Адам, не знаю, связаны ли эти два или нет.
Майкл Стум

@Michael Stum Только что узнал, что это из этого видео us.pycon.org/2009/conference/schedule/event/91

Ответы:


30

Большинство компаний используют 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) используют собственные серверы и пользовательские протоколы. Клиенты с высокой степенью состояния, что-то вроде создания пользовательского интерфейса инвентаризации не будет запускать запрос к серверу, поскольку вся эта информация кэшируется на клиенте.


coderanger, поэтому, когда вы говорите «клиенты с высокой степенью состояния», вы имеете в виду, что клиентское приложение хранит все данные там и не всегда отправляет запросы на сервер? Кроме того, как можно узнать о разработке пользовательских серверов и пользовательских протоколов?

2
Да, чтобы уменьшить сетевой трафик, клиент кэширует много информации локально (в отличие от веб-игры, где обычно все приходит непосредственно с сервера). Сервер все еще авторитетен, хотя, чтобы предотвратить мошенничество. Что касается изучения того, как развивать такие вещи. Я бы искал книгу по "сетевому программированию". Хотя есть много инструментов, которые могут помочь, Twisted, Protocol Buffers и т. Д. И т. Д. Многое зависит от того, на каком языке и фреймворках вы чувствуете себя наиболее комфортно.
coderanger

3
Panda3d запрограммирован на C ++, а не на C.
Jokoon

5

Несколько ссылок для EVE Online:

По сути, EVE Online работает на SQL Server 2005 и некотором другом программном обеспечении Microsoft. Однако основа клиента в основном написана на Python (точнее, на сколько я помню, Python без стека) и, скорее всего, немного на C ++.

Что касается World of Warcraft, я знаю, что они используют Lua для всего клиентского интерфейса, но, кроме того, я не думаю, что они используют Lua для чего-то еще. C ++, вероятно, то, что используется. WoW, я думаю, что также использует некоторые блоки Windows, но вполне вероятно, что они будут иметь некоторые другие типы блоков, специфичные для определенных задач, которые могут вообще не основываться на Windows.

Не много информации, но надеюсь, что это поможет.

Многие из этих игр разделяют серверы по функциональности, поэтому у них будет сервер базы данных, который отвечает только за хранение объектов / чего бы то ни было, и серверы, которые фактически управляют игровым миром (проверяют действия игрока и т. Д.).


3

Я не совсем уверен насчет EVE и WoW, но я видел, что MMO-игры используют C ++, C #, Java и даже PHP для сервера (хотя последний только для простых браузерных игр).

Клиент чаще всего написан на C ++ (или Flash, если это браузерная игра); Я работал с клиентом на основе .NET один раз (C # в сочетании с C ++ / CLI).

И почти всегда какой-то динамический язык сценариев используется для облегчения разработки «дизайнерского» контента - например, способностей, квестов и т. Д. - вещей, которые часто меняются и могут быть изменены дизайнерами игр в отличие от программистов.


3

Во-первых, MMORPG или любая онлайн-игра не используют HTTP или «веб-фреймворки».

Сервер программируется так же, как и сама игра, в C ++, и связь достигается с помощью сокетов для передачи пакетов по сети.

Серверы часто работают под управлением другой ОС и содержат только игровой код, поэтому многие игроки могут без проблем играть на одном сервере.

Я не знаю, как Blizzard управляет своими серверами, я не знаю, используют ли они кластеры или нет.

Конечно, когда я говорю «сокеты» и «C ++», я имею в виду игру в реальном времени, а не другие сервисы, которые может предложить игра, например, арсенал с WoW. Они могут просто использовать базу данных, которую можно прочитать из нескольких сервисов, таких как форум, склад оружия, игра, администрация аккаунта и т. Д., Но я думаю, что у них есть зависимые базы данных, которые ищут новые записи и т. Д., Поэтому все может синхронизироваться хорошо.

Я думаю, что парень, отвечающий за сетевую часть WoW, может быть настоящим задирой.


3
«Я думаю, что парень, отвечающий за сетевую часть WoW, может быть настоящим задирой». На мой взгляд, небольшая популяция серверов и перемещение на стороне клиента не являются причиной плохой сборки. Хотя задним числом тоже 20/20.


0

Существуют десятки игровых движков. Два, которые приходят мне на ум, это Unreal Engine и Source.

Что касается языков, это зависит от задачи. Рендеринг и другие важные части производительности обычно выполняются на одном из родных языков. С ++ например. Но для определения сценариев обычно используют какой-то динамический язык, потому что этот код с большей вероятностью изменится и часто пишется менее «хардкорными» программистами :-) Lua, Python, Ruby - все они могут быть использованы здесь.


0

WoW также использует Lua для всех своих внутренних скриптов. Я не уверен, изменили ли они сам язык, но я бы не усомнился в этом, чтобы он соответствовал их потребностям. Вы можете поспорить, что у них есть различные инструменты, которые позволяют их дизайнерам легко модифицировать / настроить скрипты. Это инсайдерская информация от моих друзей, которые когда-то были разработчиками WoW.


когда кто-то изменяет язык, такой как Lua, вы имеете в виду, что они создают свои собственные персональные рамки, основанные на Lua. Правильный? Если так, это уменьшает производительность / скорость разработанных программ?

@ J3M7OR3 - Насколько я понимаю, они создали собственную внутреннюю среду на основе Lua, но я не могу сказать о производительности / скорости.
Кайл C
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.