Quelles langues sont utilisées pour développer des MMORPG comme EVE Online et WOW? [fermé]


22

Si je comprends bien, les MMORPG sont des jeux qui s'exécutent sur votre ordinateur comme tout autre jeu vidéo 3D normal, mais, à chaque action qui se produit dans le jeu, des modifications sont apportées à l'univers via des appels HTTP au serveur. L'ordinateur des joueurs fait donc tout le travail en termes de rendu des graphismes et des animations mais, les frameworks web font la communication en ligne.

  • Je me demande donc quels cadres Web, serveurs Web et bases de données sont utilisés pour créer des MMORPG comme EVE Online et WOW?

  • De plus, quels langages de programmation et moteurs de jeu 3D sont utilisés pour intégrer le côté client (graphisme / animation / sons 3D) dans le jeu?


Je pense que presque tous les MMO commencent avec des technologies standard, puis personnalisent l'enfer une fois qu'ils atteignent une certaine taille et commencent à vraiment spécialiser leurs outils. Les E / S sans pile
Michael Stum

Voulez-vous dire les appels TCP vers le serveur? HTTP (HyperText Transfer Protocol) est utilisé par les serveurs Web et les navigateurs pour les pages Web et n'a rien à voir avec les MMO, sauf si vous entendez un jeu basé sur un navigateur comme urbandead.
stonemetal

Michael Stum, les E / S Stackless sont-elles faites avec Stackless Python?

@Adam ne sait pas si ces deux sont liés ou non.
Michael Stum

@Michael Stum Je viens de découvrir que c'est de cette vidéo us.pycon.org/2009/conference/schedule/event/91

Réponses:


30

La plupart des entreprises utilisent C ++. Eve est une valeur aberrante, le moteur graphique principal est en C ++, tandis que la logique du jeu est, comme d'autres l'ont noté, en Python. CCP fait également beaucoup de contributions à Stackless lui-même, qui est en C pour la plupart. WoW est C ++ pour le jeu lui-même, bien que l'interface utilisateur soit scriptée en Lua. Cryptic (Champions Online, Star Trek Online) utilise du C simple, mais il est quelque peu rare dans l'industrie. Java apparaît de temps en temps, par exemple. Runescape, mais je ne peux penser à rien AAA. Disney a utilisé Panda3D (un moteur basé sur Python écrit en C) pour un certain nombre de leurs MMO, mais comme avec Eve, c'est rare.

Dans l'ensemble, il semble que C ++ pour la logique et le moteur du jeu, avec Lua pour le script client est le plus proche que vous trouverez à un standard.

Quant au côté web, c'est fini. Nous (Cryptic) utilisons un mélange de PHP, C et Python (Django) pour divers bits. CCP utilise ASP pour le site Web lui-même et Python pour alimenter le backend (dérivant lentement ensemble cependant). WAR et LOTRO utilisent tous les deux PHP pour leur site, bien qu'il ne soit pas clair quels frameworks particuliers ils utilisent (le cas échéant).

Vous avez mentionné que les MMO fonctionnent via les appels d'API Web, ce qui n'est pas le cas. Un protocole basé sur HTTP serait beaucoup trop inefficace et HTTP n'est pas conçu pour les connexions de longue durée. Presque tous les MMO (qui ne sont pas basés sur le Web comme Kingdom of Loathing ou Urban Dead) utilisent des serveurs et des protocoles personnalisés. Les clients sont très dynamiques, faire quelque chose comme faire apparaître une interface utilisateur d'inventaire ne va pas déclencher une demande au serveur car toutes ces informations sont mises en cache sur le client.


coderanger donc quand vous dites «les clients sont très dynamiques», vous voulez dire que l'application cliente y stocke toutes les données et n'envoie pas toujours des requêtes au serveur? aussi, comment apprend-on le développement de serveurs et de protocoles personnalisés?

2
Oui, pour réduire le trafic réseau, le client met en cache beaucoup d'informations localement (contrairement à un jeu Web où généralement tout provient directement du serveur). Cependant, le serveur fait toujours autorité pour éviter la tricherie. Quant à savoir comment développer ce genre de chose. Je chercherais un livre sur la "programmation réseau". Il y a beaucoup d'outils là - bas qui aide peut cependant, Twisted, Protocol Buffers, etc , etc. Beaucoup de dépend de ce que la langue et les cadres que vous êtes plus à l' aise.
coderanger

3
Panda3d est programmé en C ++, pas en C.
jokoon

5

Quelques liens pour EVE Online:

Fondamentalement, EVE Online s'exécute sur SQL Server 2005 et certains autres logiciels Microsoft. Le backbone du client est cependant principalement écrit en Python (Stackless Python pour être exact, d'après ce dont je me souviens) et un peu de C ++ très probablement.

Quant à World of Warcraft, je sais qu'ils utilisent Lua pour toutes les choses de l'interface graphique client, mais à part cela, je ne pense pas qu'ils utilisent Lua pour autre chose. C ++ est probablement ce qui est utilisé. WoW, je pense qu'il utilise également certaines boîtes Windows, mais il semble probable qu'elles auraient d'autres types de boîtes spécifiques à certaines tâches qui ne sont pas du tout basées sur Windows.

Pas beaucoup d'informations, mais j'espère que cela vous aidera.

Beaucoup de ces jeux séparent les serveurs en fonction des fonctionnalités, ils auraient donc un serveur de base de données uniquement responsable du stockage des objets / quoi que ce soit et des serveurs qui exécutent réellement le monde du jeu (valider les actions des joueurs, etc.).


3

Je ne suis pas très sûr d'EVE et de WoW, mais j'ai vu des jeux MMO utiliser C ++, C #, Java et même PHP pour le serveur (ce dernier uniquement pour les jeux simples basés sur un navigateur, cependant).

Le client est le plus souvent écrit en C ++ (ou Flash s'il s'agit d'un jeu basé sur un navigateur); J'ai déjà travaillé avec un client basé sur .NET (C # mélangé avec C ++ / CLI).

Et presque toujours, une sorte de langage de script dynamique est utilisé pour faciliter le développement de contenu "concepteur" - par exemple des capacités, des quêtes, etc. - des choses qui changent souvent, et peuvent être modifiées par les concepteurs de jeux par opposition aux programmeurs.


3

Premièrement, les MMORPG ou tout jeu en ligne n'utilisent pas HTTP ou "frameworks web" en premier lieu.

Un serveur est programmé comme le jeu lui-même, en C ++, et la communication est réalisée en utilisant des sockets pour transmettre des paquets sur le réseau.

Les serveurs exécutent souvent un autre système d'exploitation et n'incluent que le code du jeu, de sorte que beaucoup de joueurs peuvent jouer sur un seul serveur en douceur.

Je ne sais pas comment blizzard gère leurs serveurs, je ne sais pas s'ils utilisent des clusters ou non.

Bien sûr, quand je dis "sockets" et "C ++", je parle du jeu en temps réel, pas d'autres services que le jeu pourrait offrir, comme l'armurerie avec WoW par exemple. Ils pourraient simplement utiliser une base de données qui peut être lue à partir de plusieurs services, comme le forum, l'armurerie, le jeu, l'administration du compte, etc., mais je pense qu'ils ont des bases de données dépendantes, qui recherchent de nouvelles entrées, etc., donc tout peut se synchroniser bien.

Je pense que le gars en charge de la partie réseau de WoW pourrait être un vrai dur à cuire.


3
"Je pense que le gars en charge de la partie réseau de WoW pourrait être un vrai dur à cuire." À mon avis, les petites populations de serveurs et les mouvements côté client ne sont pas vraiment une mauvaise affaire. Bien que le recul soit également de 20/20.


0

Il existe des dizaines de moteurs de jeux. Les deux qui me viennent à l'esprit sont le moteur Unreal et la source.

Quant aux langues, cela dépend de la tâche. Le rendu et les autres parties critiques des performances sont généralement effectués dans l'une des langues natives. C ++ par exemple. Mais il est courant d'utiliser un langage dynamique pour définir des scripts car ce code est plus susceptible de changer et est souvent écrit par des programmeurs moins «hardcore» :-) Lua, Python, Ruby - ils peuvent tous être utilisés ici.


0

WoW utilise également Lua pour tous leurs scripts internes. Je ne sais pas s'ils ont modifié le langage lui-même, mais je n'en doute pas pour qu'il puisse répondre à leurs besoins. Vous pouvez parier qu'ils ont différents outils qui permettent à leurs concepteurs de modifier / ajuster facilement les scripts. Il s'agit d'informations privilégiées de mes amis qui sont / étaient des développeurs WoW.


quand on modifie une langue comme Lua, vous voulez dire qu'ils créent leur propre cadre personnel basé sur Lua. Correct? Dans l'affirmative, cela diminue-t-il les performances / la vitesse des programmes développés?

@ J3M7OR3 - Je crois comprendre qu'ils ont créé leur propre cadre interne basé sur Lua, mais je ne pourrais pas dire sur les performances / la vitesse.
Kyle C
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.