Jakie języki są używane do opracowywania MMORPG, takich jak EVE Online i WOW? [Zamknięte]

22

Rozumiem, że MMORPG to gry, które działają na twoim komputerze, jak każda normalna gra wideo w 3D, ale z każdą akcją, która ma miejsce w grze, zmiany są wprowadzane we wszechświecie za pośrednictwem wywołań HTTP do serwera. Tak więc komputer gracza robi wszystko, co w jego mocy, jeśli chodzi o renderowanie grafiki i animacji, ale ramy sieciowe wykonują komunikację online.

  • Zastanawiam się więc, jakie frameworki, serwery i bazy danych są używane do tworzenia MMORPG, takich jak EVE Online i WOW?

  • Jakie języki programowania i silniki gier 3D są używane, aby część klienta (grafika 3D / animacja / dźwięki) była częścią gry?

Vaillancourt
źródło
Myślę, że prawie każda gra MMO zaczyna się od gotowych technologii, a potem dostosowuje ją do piekła, gdy osiągnie określony rozmiar i zacznie naprawdę specjalizować swoje narzędzia. Stackless I / O w EVE Online to fantastyczny przykład: eveonline.com/devblog.asp?a=blog&bid=584
Michael Stum
Masz na myśli połączenia TCP z serwerem? HTTP (HyperText Transfer Protocol) jest używany przez serwery i przeglądarki internetowe do stron internetowych i nie ma nic wspólnego z MMO, chyba że masz na myśli grę opartą na przeglądarce, taką jak urbandead.
stonemetal
Michael Stum, Czy stosy we / wy bez stosu są wykonywane przy użyciu Pythona bez stosu?
@Adam nie mam pojęcia, czy te dwa są ze sobą powiązane, czy nie.
Michael Stum
@Michael Stum Właśnie dowiedziałem się, że pochodzi z tego filmu us.pycon.org/2009/conference/schedule/event/91

Odpowiedzi:

30

Większość firm używa C ++. Eve jest wartością odstającą, główny silnik graficzny jest w C ++, podczas gdy logika gry jest, jak zauważyli inni, w Pythonie. CCP ma również duży wkład w samą Stackless, która w większości jest w C. WoW to C ++ dla samej gry, choć interfejs użytkownika jest napisany w Lua. Cryptic (Champions Online, Star Trek Online) używa zwykłego C, ale jest to dość rzadkie w branży. Java pojawia się co jakiś czas, np. Runescape, ale nie mogę wymyślić niczego AAA. Disney używał Panda3D (silnik napisany w języku Python napisany w C) w wielu swoich MMO, ale jak w przypadku Ewy jest to rzadkie.

Ogólnie wygląda na to, że C ++ dla logiki gry i silnika, Lua dla skryptów klienckich jest najbliższa standardowi.

Jeśli chodzi o stronę internetową, to już koniec. My (Cryptic) używamy kombinacji PHP, C i Python (Django) do różnych bitów. CCP korzysta z ASP dla samej strony internetowej i Pythona do zasilania backendu (choć powoli dryfuje razem). Zarówno WAR, jak i LOTRO używają PHP na swojej stronie, choć nie jest jasne, jakich konkretnych ram używają (jeśli w ogóle).

Wspomniałeś, że MMO działają za pośrednictwem wywołań API sieci Web, co nie jest prawdą. Protokół oparty na HTTP byłby zdecydowanie zbyt nieefektywny, a HTTP nie jest przeznaczony do długotrwałych połączeń. Prawie wszystkie gry MMO (które nie są oparte na sieci, takie jak Kingdom of Loathing czy Urban Dead) używają niestandardowych serwerów i niestandardowych protokołów. Klienci są bardzo dobrze poinformowani, ponieważ tworzenie interfejsu użytkownika zasobów reklamowych nie spowoduje wysłania żądania do serwera, ponieważ wszystkie te informacje są buforowane na kliencie.

koderanger
źródło
coderanger, więc kiedy mówisz „klienci są bardzo stanowi”, masz na myśli, że aplikacja klienta przechowuje tam wszystkie dane i nie zawsze wysyła żądania do serwera? a także, w jaki sposób można się dowiedzieć o tworzeniu niestandardowych serwerów i niestandardowych protokołów?
2
Tak, aby zmniejszyć ruch sieciowy, klient buforuje wiele informacji lokalnie (w przeciwieństwie do gry internetowej, w której zwykle wszystko pochodzi bezpośrednio z serwera). Serwer jest jednak nadal autorytatywny, aby zapobiec oszukiwaniu. Jeśli chodzi o uczenie się, jak rozwijać tego rodzaju rzeczy. Poszukałbym książki o „programowaniu sieci”. Istnieje wiele narzędzi, które mogą pomóc, Twisted, Bufory protokołów itp. Wiele zależy od języka i frameworku, w którym czujesz się najlepiej.
coderanger
3
Panda3d jest programowany w C ++, a nie C.
Jokoon
5

Kilka linków do EVE Online:

Zasadniczo EVE Online działa na SQL Server 2005 i niektórych innych programach Microsoft. Szkielet klienta jest jednak w większości napisany w Pythonie (konkretnie Python bez stosu, z tego co pamiętam) i prawdopodobnie w C ++.

Jeśli chodzi o World of Warcraft, wiem, że używają Lua do wszystkich elementów GUI klienta, ale poza tym nie sądzę, że używają Lua do czegokolwiek innego. Prawdopodobnie używany jest C ++. WoW, myślę, że używa również niektórych pudełek Windows, ale wydaje się prawdopodobne, że będą miały inne typy pudełek specyficzne dla niektórych zadań, które mogą wcale nie być oparte na Windowsie.

Niewiele informacji, ale mam nadzieję, że to pomoże.

Wiele z tych gier oddziela serwery w zależności od funkcjonalności, więc miałyby one serwer bazy danych, który jest odpowiedzialny tylko za przechowywanie obiektów / czegokolwiek i serwery, które faktycznie działają w świecie gry (sprawdzają działania graczy itp.).

Dalin Seivewright
źródło
3

Nie jestem pewien co do EVE i WoW, ale widziałem, że gry MMO używają C ++, C #, Java, a nawet PHP na serwerze (to ostatnie tylko dla prostych gier opartych na przeglądarce).

Klient jest najczęściej napisany w C ++ (lub Flash, jeśli jest to gra przeglądarkowa); Raz pracowałem z klientem opartym na .NET (C # zmieszany z C ++ / CLI).

I prawie zawsze używany jest jakiś rodzaj dynamicznego języka skryptowego, aby ułatwić tworzenie treści „projektantów” - np. Umiejętności, questy itp. - rzeczy, które często się zmieniają i mogą być zmieniane przez projektantów gier w przeciwieństwie do programistów.

Nieważne
źródło
3

Po pierwsze, MMORPG ani żadna gra online nie używa HTTP ani „frameworków sieciowych”.

Serwer jest programowany tak jak sama gra, w C ++, a komunikacja odbywa się za pomocą gniazd do przesyłania pakietów przez sieć.

Na serwerach często działa inny system operacyjny i zawierają one tylko kod gry, więc wielu graczy może płynnie grać na jednym serwerze.

Nie wiem, jak zamieć zarządza swoimi serwerami, nie wiem, czy używają klastrów, czy nie.

Oczywiście, kiedy mówię „gniazda” i „C ++”, mówię o grze w czasie rzeczywistym, a nie o innych usługach, które może ona oferować, na przykład o zbrojowni z WoW. Mogą po prostu korzystać z bazy danych, którą można odczytać z wielu usług, takich jak forum, zbrojownia, gra, administracja kontem itp., Ale uważam, że mają zależne bazy danych, które szukają nowych wpisów itp., Więc wszystko może się zsynchronizować ładnie.

Myślę, że facet odpowiedzialny za część sieci WoW może być prawdziwym badassem.

żart
źródło
3
„Myślę, że facet odpowiedzialny za część sieciową WoW może być prawdziwym łobuzem”. Moim zdaniem małe populacje serwerów i ruch po stronie klienta tak naprawdę nie powodują złej oceny. Chociaż z perspektywy czasu jest także 20/20.
0

Istnieją dziesiątki silników gier. Dwa, które mi przychodzą do głowy, to silnik Unreal i Source.

Jeśli chodzi o języki, zależy to od zadania. Renderowanie i inne części krytyczne pod względem wydajności są zwykle wykonywane w jednym z języków ojczystych. Na przykład C ++. Ale często używa się dynamicznego języka do definiowania skryptów, ponieważ ten kod jest bardziej podatny na zmiany i często jest napisany przez mniej „hardkorowych” programistów :-) Lua, Python, Ruby - można ich tutaj użyć.

Sergio Tulentsev
źródło
0

WoW używa Lua również do wszystkich wewnętrznych skryptów. Nie jestem pewien, czy zmodyfikowali sam język, ale nie wątpiłbym w to, by odpowiadał ich potrzebom. Możesz się założyć, że mają różne narzędzia, które ułatwiają ich projektantom modyfikowanie / modyfikowanie skryptów. To informacje poufne od moich przyjaciół, którzy byli / byli deweloperami WoW.

Kyle C.
źródło
kiedy ktoś modyfikuje język taki jak Lua, masz na myśli, że tworzą oni swój własny framework oparty na Lua. Poprawny? Jeśli tak, to czy zmniejsza to wydajność / szybkość opracowywanych programów?
@ J3M7OR3 - Rozumiem, że stworzyli własną strukturę wewnętrzną w oparciu o Luę, ale nie mogłem powiedzieć o wydajności / szybkości.
Kyle C