Quali lingue vengono utilizzate per sviluppare MMORPG come EVE Online e WOW? [chiuso]


22

A quanto ho capito, i MMORPG sono giochi che girano sul tuo computer come qualsiasi altro normale videogioco 3d ma, con ogni azione che accade nel gioco, le modifiche vengono apportate all'universo tramite chiamate HTTP al server. Quindi il computer dei giocatori fa tutto il lavoro pesante in termini di rendering della grafica e delle animazioni ma, i framework web fanno la comunicazione online.

  • Quindi mi chiedo quali framework web, web server e database vengano utilizzati per creare MMORPG come EVE Online e WOW?

  • Inoltre, quali linguaggi di programmazione e motori di gioco 3d vengono utilizzati per rendere parte del gioco il lato client (grafica 3d / animazione / suoni)?


Penso che praticamente ogni MMO inizi con tecnologie standardizzate e poi ne abbia personalizzato l'inferno una volta che hanno raggiunto una certa dimensione e hanno iniziato a specializzare davvero i loro strumenti. L'I / O stackless
Michael Stum

Intendi le chiamate TCP al server? HTTP (HyperText Transfer Protocol) viene utilizzato dai server Web e dai browser per le pagine Web e non ha nulla a che fare con gli MMO a meno che non si intenda un gioco basato su browser come urbandead.
stonemetal

Michael Stum, l'I / O Stackless è realizzato con Stackless Python?

@Adam non ho idea se questi due sono correlati o meno.
Michael Stum

@Michael Stum Ho appena scoperto che è da questo video us.pycon.org/2009/conference/schedule/event/91

Risposte:


30

La maggior parte delle aziende utilizza C ++. Eve è un valore anomalo, il motore grafico principale è in C ++, mentre la logica del gioco è, come altri hanno notato, in Python. Il PCC fornisce anche molti contributi allo stesso Stackless, che è in gran parte in C. WoW è C ++ per il gioco stesso, anche se l'interfaccia utente è scritta in Lua. Cryptic (Champions Online, Star Trek Online) usa la semplice C, ma è piuttosto raro nel settore. Java si apre di tanto in tanto, ad es. Runescape, ma non riesco a pensare a nulla di AAA. Disney ha usato Panda3D (un motore basato su Python scritto in C) per un certo numero di MMO, ma come per Eva è insolito.

Nel complesso sembra C ++ per la logica e il motore del gioco, con Lua per gli script client è il più vicino che troverai a uno standard.

Per quanto riguarda il lato web, è tutto finito. Noi (Cryptic) usiamo un mix di PHP, C e Python (Django) per vari bit. CCP utilizza ASP per il sito Web stesso e Python per alimentare il back-end (che va lentamente alla deriva insieme). WAR e LOTRO usano entrambi PHP per il loro sito, anche se non è chiaro quali specifici framework stiano usando (se ce ne sono).

Hai detto che gli MMO funzionano tramite chiamate API Web, ma non è così. Un protocollo basato su HTTP sarebbe troppo inefficiente e HTTP non è progettato per connessioni a lungo termine. Praticamente tutti gli MMO (che non sono basati sul web come Kingdom of Loathing o Urban Dead) usano server e protocolli personalizzati. I client sono altamente dichiarati, facendo qualcosa come aprire un'interfaccia utente di inventario non genererà una richiesta al server poiché tutte le informazioni sono memorizzate nella cache sul client.


coderanger, quindi quando dici "i client sono altamente di stato" intendi che l'app client memorizza tutti i dati lì e non invia sempre richieste al server? inoltre, come si impara a sviluppare server e protocolli personalizzati?

2
Sì, per ridurre il traffico di rete il client memorizza nella cache molte informazioni localmente (diversamente da un gioco Web in cui di solito tutto proviene direttamente dal server). Il server è comunque autorevole, per evitare imbrogli. Per quanto riguarda l'apprendimento di come sviluppare questo tipo di cose. Vorrei cercare un libro sulla "programmazione di rete". Ci sono molti strumenti là fuori che possono aiutare, Twisted, Protocol Buffers, ecc. Molti dipendono dal linguaggio e dai framework in cui ti senti più a tuo agio.
coderanger,

3
Panda3d è programmato in C ++, non in C.
jokoon l'

5

Alcuni link per EVE Online:

Fondamentalmente, EVE Online funziona su SQL Server 2005 e altri software Microsoft. Il backbone client è per lo più scritto in Python (Stackless Python per l'esattezza, da quello che posso ricordare) e molto probabilmente C ++.

Per quanto riguarda World of Warcraft, so che usano Lua per tutte le cose della GUI del client, ma a parte questo non penso che usino Lua per nient'altro. C ++ è probabilmente ciò che viene utilizzato. WoW, penso che utilizzi anche alcune finestre di Windows, ma sembra probabile che abbiano altri tipi di scatole specifiche per determinate attività che potrebbero non essere affatto basate su Windows.

Non ci sono molte informazioni, ma spero che sia d'aiuto.

Molti di questi giochi separano i server in base alla funzionalità, quindi avrebbero un server di database che è responsabile solo della memorizzazione di oggetti / qualunque cosa e dei server che gestiscono effettivamente il mondo di gioco (convalida le azioni dei giocatori, ecc.).


3

Non sono del tutto sicuro di EVE e WoW, ma ho visto i giochi MMO utilizzare C ++, C #, Java e persino PHP per server (quest'ultimo solo per semplici giochi basati su browser).

Il client è spesso scritto in C ++ (o Flash se si tratta di un gioco basato su browser); Ho lavorato con un client basato su .NET una volta (C # mescolato con C ++ / CLI).

E quasi sempre una sorta di linguaggio di scripting dinamico viene utilizzato per facilitare lo sviluppo di contenuti "designer" - ad esempio abilità, ricerche, ecc. - cose che cambiano spesso e possono essere cambiate dai progettisti di giochi invece che dai programmatori.


3

Innanzitutto, i MMORPG o qualsiasi gioco online non utilizzano HTTP o "web framework" in primo luogo.

Un server è programmato proprio come il gioco stesso, in C ++, e la comunicazione avviene tramite socket per trasmettere pacchetti sulla rete.

I server spesso eseguono un altro sistema operativo e includono solo il codice di gioco, quindi molti giocatori possono giocare su un singolo server senza problemi.

Non so come Blizzard gestisca i loro server, non so se usano i cluster o no.

Naturalmente quando dico "socket" e "C ++", sto parlando del gioco in tempo reale, non di altri servizi che il gioco potrebbe offrire, come ad esempio l'armeria con WoW. Potrebbero semplicemente usare un database che può essere letto da più servizi, come il forum, l'armeria, il gioco, l'amministrazione dell'account ecc., Ma il mio pensiero è che abbiano database dipendenti, che cercano nuove voci ecc., Quindi tutto può sincronizzarsi bene.

Penso che il responsabile della parte di rete di WoW possa essere un vero duro.


3
"Penso che il responsabile della parte di rete di WoW potrebbe essere un vero duro." A mio avviso, le piccole popolazioni di server e il movimento sul lato client non creano davvero problemi. Anche se il senno di poi è anche 20/20.


0

Ci sono dozzine di motori di gioco là fuori. I due che mi vengono in mente sono Unreal engine e Source.

Per quanto riguarda le lingue, dipende dall'attività. Il rendering e le altre parti critiche per le prestazioni vengono generalmente eseguite in una delle lingue native. C ++ per esempio. Ma è comune usare un linguaggio dinamico per definire gli script perché questo codice ha maggiori probabilità di cambiare ed è spesso scritto da programmatori meno "hardcore" :-) Lua, Python, Ruby - tutti possono essere usati qui.


0

WoW usa Lua anche per tutti gli script interni. Non sono sicuro che abbiano modificato la lingua stessa, ma non ne dubiterei per soddisfare le loro esigenze. Puoi scommettere che hanno diversi strumenti che rendono facile per i loro progettisti modificare / modificare gli script. Queste sono informazioni privilegiate di miei amici che sono / erano in passato sviluppatori WoW.


quando si modifica una lingua come Lua, si intende che stanno creando il proprio framework personale basato su Lua. Corretta? In tal caso, ciò riduce le prestazioni / la velocità dei programmi sviluppati?

@ J3M7OR3 - Ho capito che hanno creato il loro framework interno basato su Lua, ma non potrei dire di prestazioni / velocità.
Kyle C,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.