Які мови використовуються для розробки MMORPG, таких як EVE Online та WOW? [зачинено]


22

Наскільки я розумію, MMORPG - це ігри, які працюють на вашому комп’ютері, як і будь-яка інша звичайна 3D-гра, але з кожною дією, яка відбувається в грі, всесвіту вносяться зміни через HTTP-дзвінки на сервер. Таким чином, комп'ютер гравців робить все важке піднесення з точки зору надання графіки та анімації, але веб-рамки здійснюють онлайн-спілкування.

  • Тож мені цікаво, які веб-рамки, веб-сервери та бази даних використовуються для створення MMORPG, таких як EVE Online та WOW?

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


Я думаю, що майже кожен MMO починається з позачергових технологій, а потім підганяє пекло з нього, як тільки вони виростають до певного розміру і починають по-справжньому спеціалізуватися на своїх інструментах. Нестабільний введення-виведення в EVE Online - це фантастичний приклад: eveonline.com/devblog.asp?a=blog&bid=584
Michael

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

Майкл Стом, чи нестабільне введення / виведення зроблене за допомогою Stackless Python?

@Adam не маю уявлення, чи це двоє пов'язані чи ні.
Майкл Стум

@Michael Stum Щойно з’ясував, що саме з цього відео us.pycon.org/2009/conference/schedule/event/91

Відповіді:


30

Більшість компаній використовують C ++. Eve - це неперший, основна графічна система - в C ++, в той час як логіка гри, як відзначали інші, в Python. КПК також робить чималий внесок у сам Stackless, який здебільшого знаходиться на С. WoW - це C ++ для самої гри, хоча інтерфейс призначений в Lua. Cryptic (Champions Online, Star Trek Online) використовує звичайний C, але це дещо рідко в галузі. Час від часу спливає Java, колишнє. Runescape, але я нічого не можу придумати AAA. Дісней використовував Panda3D (двигун на основі Python, написаний на С) для ряду їхніх ММО, але, як і у Єви, це нечасто.

В цілому, схоже, що C ++ для ігрової логіки та двигуна, так як Lua для сценаріїв клієнтів є найближчим до стандарту.

Що стосується веб-сторони, то вона все закінчена. Ми (Cryptic) використовуємо суміш PHP, C та Python (Django) для різних бітів. CCP використовує ASP для самого веб-сайту, а Python для живлення бекенда (хоча повільно пливе разом). WAR і LOTRO обидва використовують PHP для свого сайту, хоча не зрозуміло, які саме рамки вони використовують (якщо такі є).

Ви згадали, що MMO працюють через виклики веб-API, але це не так. Протокол на основі HTTP був би надто неефективним, а HTTP не розроблений для тривалих з'єднань. Практично всі MMO (які не базуються на веб-сторінках, як Kingdom of Loathing або Urban Dead) використовують користувацькі сервери та спеціальні протоколи. Клієнти відрізняються високою репутацією, вони роблять щось на кшталт підведення інтерфейсу рекламних ресурсів, але не запитують запит на сервер, оскільки вся ця інформація кешується на клієнті.


coderanger. Коли ви говорите «клієнти мають високий статус», ви маєте на увазі, що клієнтська програма зберігає всі дані там і не завжди надсилає запити на сервер? також, як дізнатися про розробку користувацьких серверів та користувацьких протоколів?

2
Так, для зменшення мережевого трафіку клієнт зберігає багато інформації локально (на відміну від веб-гри, де зазвичай все надходить безпосередньо з сервера). Сервер все ще є авторитетним, щоб запобігти обману. Щодо вивчення того, як розвивати подібну річ. Я б шукав книгу про "мережеве програмування". Існує багато інструментів, які можуть допомогти, хоча, перекручені, буфери протоколів тощо. Багато чого залежить від того, на якій мові та структурі вам найбільше комфортно.
coderanger

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

5

Кілька посилань для EVE Online:

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

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

Не багато інформації, але сподіваюся, що це допомагає.

Багато цих ігор відокремлюють сервери на основі функціональності, тож вони мали б сервер баз даних, який відповідає тільки за зберігання об'єктів / будь-чого та серверів, які фактично керують ігровим світом (валідація дій гравця тощо).


3

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

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

І майже завжди якась динамічна мова сценаріїв використовується для сприяння розробці "дизайнерського" контенту - наприклад, здібностей, квестів тощо - речі, які часто змінюються, і можуть змінюватися дизайнерами ігор на відміну від програмістів.


3

По-перше, MMORPG або будь-яка онлайн-гра в першу чергу не використовує HTTP або "веб-рамки".

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

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

Я не знаю, як хуртовина управляє їх серверами, я не знаю, вони використовують кластери чи ні.

Звичайно, коли я кажу "sockets" та "C ++", я говорю про гру в реальному часі, а не про інші сервіси, які гра може запропонувати, як, наприклад, озброєння з WoW. Вони можуть просто використовувати базу даних, яку можна прочитати з декількох сервісів, таких як форум, озброєння, гра, адміністрування акаунта тощо. Але я вважаю, що у них є залежні бази даних, які шукають нові записи тощо, тому все може синхронізуватися вгору красиво.

Я думаю, що хлопець, який відповідає за мережеву частину WoW, може бути справжньою гадюкою.


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


0

Там є десятки ігрових двигунів. Два, які мені спадають на думку, - це нереальний двигун та джерело.

Щодо мов, це залежить від завдання. Відображення та інші критичні для продуктивності частини зазвичай виконуються однією з рідних мов. Наприклад, C ++. Але для визначення сценаріїв звичайно використовувати деяку динамічну мову, оскільки цей код швидше змінюється і його часто записують менш «хардкорні» програмісти :-) Lua, Python, Ruby - всі вони тут можуть бути використані.


0

WoW також використовує Lua для всіх своїх внутрішніх сценаріїв. Я не впевнений, чи змінили вони саму мову, але я б не сумнівався в цьому, щоб це відповідало їх потребам. Ви можете поставити під сумнів, що вони мають різні інструменти, які спрощують їх дизайнери змінювати / налаштовувати сценарії. Це інсайдерська інформація від моїх друзів, які були / використовувались як WoW Devs.


коли хтось модифікує таку мову, як Lua, ви маєте на увазі, що вони створюють власну особисту рамку, яка базується на Lua. Правильно? Якщо так, чи зменшує це ефективність / швидкість розроблених програм?

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