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?
Réponses:
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.
la source
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.).
la source
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.
la source
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.
la source
Pour EVE, ils ont donné une conférence sur StacklessIO sur PyCon 2009: http://us.pycon.org/2009/conference/schedule/event/91/
la source
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.
la source
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.
la source