9
votes

Comment sont construits massivement des RPG en ligne?

Comment sont les jeux de RPG en ligne massivement multijoueurs?

  • Quelle infrastructure de serveur est-elle construite? surtout avec tant de clients connectés et communiquant en temps réel.

  • gère-t-ils avec des scripts qui exécutent des demandes de page? ou des services installés qui fonctionnent en arrière-plan et gèrent la communication avec les clients connectés?

  • utilisent-ils d'autres protocoles? Parce que HTTP n'autorise pas les serveurs de pousser des données aux clients.

  • Comment les "moteurs" fonctionnent-ils, de traiter au centre des centaines d'événements de gameplay contradictoires?

    Merci pour votre temps.


5 commentaires

en.wikipedia.org/wiki/comet_%28Programmation%29 ... "Comet est un néologisme de décrire un modèle d'application Web dans lequel une requête HTTP longue tenue permet à un serveur Web de pousser des données à un navigateur"


Comme ceci: blog.stackoverflow.com/2008/09/...


@Mehrdad: C'est donc un RPG? Enfer, cela explique tous les cinglés.


Je vais juste lancer ceci là-bas: cueillir une réponse trop tôt décourage plus de bonnes réponses.


"Les scripts qui exécutent des demandes de page" "," Services installés qui s'exécutent dans l'arrière-plan [Server] "- Il semble qu'il y ait un certain nombre d'hypothèses qui se cachent ici. Un MMORPG n'est pas une application Web.


6 Réponses :


1
votes

Le podcast radio de génie logiciel avait un Épisode avec Jim Purbrick à propos de la deuxième vie qui discute des serveurs, des mondes, de la mise à l'échelle et d'autres internes MMORPG.


0 commentaires

5
votes

De nombreuses routes mènent à Rome et de nombreuses architectures mènent à des MMORPG.

Voici quelques pensées générales à vos points de balle:

  • L'infrastructure de serveur doit prendre en charge la possibilité de s'éteindre ... Ajouter des serveurs supplémentaires à mesure que la charge augmente. Ceci est bien adapté au cloud computing en passant. Je suis en train d'exécuter une vaste application de services financiers qui doit être progressive en fonction de l'heure de la journée et de l'heure de l'année. Nous utilisons Amazon AWS pour ajouter et supprimer presque instantanément des serveurs virtuels.
  • MMORPG de ce que je suis familier avec probablement n'utilise probablement pas de services Web pour la communication (puisqu'ils sont apatrides) mais plutôt un programme côté serveur personnalisé (par exemple, un service qui écoute les messages TCP et / ou UDP).
  • Ils utilisent probablement un protocole basé sur TCP et / ou UDP personnalisé (examinez la communication de socket)
  • La plupart des jeux sont segmentés dans des "mondes", limitant le nombre de joueurs qui se trouvent dans le même univers virtuel au nombre d'événements de jeu qu'un serveur (probablement avec beaucoup de CPU et beaucoup de mémoire) peut raisonnablement traiter. Le mécanisme de traitement d'événement exact dépend des exigences du concepteur de jeux, mais j'espère généralement que les événements entrants entrent dans une file d'attente prioritaire (hiérarchisée par le temps reçu et / ou le temps envoyé et probablement d'autres critères sur les lignes de «quel que soit le problème si Nous ignorons cet événement? »).

    C'est un très grand sujet dans l'ensemble. Je vous suggère de vérifier sur Amazon.com pour des livres couvrant ce sujet.


2 commentaires

Eve Online est une exception à l'approche "World Segmentée" utilisée par E.G. World of Warcraft. Vous pouvez lire sur la configuration qu'ils utilisent à l'adresse suivante: highscalability.com/eve-online-architecture


@Ian: Lire intéressante. On dirait qu'ils segmentent essentiellement leur monde dans le cadre de ce qui se passe dans chaque système solaire et des événements de déroute du niveau de la clientèle au serveur responsable d'une zone géographique particulière du monde du jeu.



-1
votes

Jetez un coup d'œil à erlang . C'est un système de programmation et d'exécution de programmation simultanée, et a été conçu pour prendre en charge les applications répartibles, tolérantes à la tolérance des pannes, en temps réel et en temps réel.


4 commentaires

Erlang semble être bon, mais je ne pense pas qu'il soit utilisé pour faire des MMORPG dans la pratique.


Ce n'est pas le cas, il n'a donc rien à voir avec la construction de MMOS.


La raison pour laquelle il n'est pas utilisé dans la pratique est parce que c'est une langue fonctionnelle et la plupart des programmeurs ne savent rien d'autre que OO. Je me souviens également de lire sur un serveur MMO ayant été écrit à Erlang. Croyez-moi, Erlang convient mieux à la construction de serveurs que toute autre langue, mains vers le bas.


Je comprends ce que vous dites, mais la question ne concerne pas vraiment ce que vous utiliseriez pour la tâche dans un monde hypothétique où vous avez fait des MMORPG; Il s'agit de quelles techniques sont réellement utilisées pour faire des MMORPGS.



2
votes

Étant donné que les mmos et les grandes nécessitent les ressources d'une entreprise pour développer et déployer, à ce moment-là qu'ils sont précieuses de la Société IP, il n'y a pas de tonne d'informations accessibles au public sur les implémentations.

Une chose qui est assez sûre est que, puisque les MMOS d'ici et d'une grande utilisation, utilisez un client personnalisé et un rendu 3D, ils n'utilisent pas HTTP car ils ne sont pas des navigateurs Web. Les jeux en ligne vont avoir leurs propres protocoles construits sur TCP / IP ou UDP.

Les simulations de jeu elles-mêmes seront construites à l'aide des mêmes techniques que n'importe quel jeu 3D en réseau. Vous pouvez donc rechercher des ressources pour ce domaine pour en savoir plus.

Pour le Big Daddy, World of Warcraft, nous pouvons deviner que leur base de données est Oracle, car les listes d'emploi de Blizzard citent fréquemment l'expérience Oracle comme une exigence / plus. Ils utilisent Lua pour les scripts d'interface utilisateur. C ++ et OpenGL (pour Mac) et Direct3D (pour PC) peuvent être supposés que les langues de mise en œuvre pour les clients de jeu, car c'est ce que les jeux sont fabriqués avec.

Une société qui est cool sur la discussion de leur implémentation est le PCCP, Créateurs de Eve Online. Ils ont publié un certain nombre de présentations et d'articles sur l'infrastructure de Eve, et c'est un cas particulièrement intéressant, car ils utilisent des python sans empilement pour une mise en œuvre d'une grande réveillance.

http://www.disinterest.org/resource/pycon2006-sttacklessineve.wmv http://us.pycon.org/2009/conference/schedule/event / 91 /

Il y avait aussi un article récent de game Developer Article sur l'architecture d'Eve:

HTTPS : //store.cmpgame.com/product/3359/game-developer-june%7B47%7DJUME-2009-SVIVE--Digital-edition


0 commentaires

3
votes

Quelle infrastructure de serveur est-elle construite? surtout avec tant de clients connectés et communiquant en temps réel.

Je suppose que les serveurs seront exécutés sur Linux, BSD ou Solaris, près de 99% du temps.

gérent-ils avec des scripts qui exécutent des demandes de page? ou des services installés qui fonctionnent en arrière-plan et gèrent la communication avec les clients connectés?

Le serveur Votre client parle au serveur d'exécution d'un daemon ou d'un service qui siège à l'écoute de veille pour les connexions. Pour les cas (donjons), généralement un nouveau processus est lancé pour chaque groupe, ce qui signifie qu'il existe un service de répartiteur quelque part en mangeant cela (analogue à un threadpool)

utilisent-ils d'autres protocoles? parce que HTTP n'autorise pas les serveurs de pousser des données aux clients.

UDP est le protocole utilisé. C'est rapide car il ne fait aucune garantie que le paquet sera reçu. Vous ne vous souciez pas si un peu de latence amène le client à perdre la position mondiale.

Comment les "moteurs" fonctionnent-ils, de traiter au centre des centaines d'événements de gameplay contradictoires?

La plupart des MMO ont des zones qui limitent ceci à une certaine quantité de personnes. Pour ceux qui ont 100 personnes dans une zone, il y a généralement une latence élevée. Le serveur doit faire face à des centaines de sorts d'être envoyés, ce qui doit calculer des quantités de dommages pour chacun. Pour les gros mmos, j'imagine qu'il y a des équipes de 10 à 20 développeurs très intelligents et mathématiques travaillant dans ce quotidien et il n'y a pas de MMO là-bas qui l'a bien compris, la plupart se cassent après 100 joueurs.

-

Jetez un coup d'œil à Wowemu (il n'y a pas de site officiel et je n'ai pas 'T Voulez-vous lier à un site Dodgy). Ceci est basé sur apireecore qui est un simulateur MMO, ou essentiellement un ingénieur inversé du protocole WOW . C'est ce que les serveurs WOW privés s'enfoncent. De ce que je me souviens que Wowemu est

  • mysql
  • python

    Cependant, Apirecore est C ++.

    Le backend for Wowemu est incroyablement simple (je l'ai essayé en 2005) et probablement un complète sur la simplification du schéma de base de données. Cela vous donne une bonne idée de ce qui est impliqué.


0 commentaires

1
votes

Traditionnellement MMOS a été basé sur les applications de serveur C ++ exécutées sous Linux communiquant avec une base de données pour les applications de stockage de stockage arrière et de graisse à l'aide de OpenGL ou de DirectX.

Dans de nombreux cas, le client et le serveur ont incorporé un moteur de script qui permet de définir les comportements dans une langue de niveau supérieur. La veille est notable en ce sens qu'elle est principalement mise en œuvre dans Python et fonctionne sur le dessus de Stackless plutôt que surtout C ++ avec des scripts de haut niveau.

Généralement, le serveur est situé dans une boucle de lecture de demandes de clients connectés, les traiter pour appliquer la mécanique de jeu, puis envoyer des mises à jour aux clients. UDP peut être utilisé pour minimiser la latence et la retransmission de données obsolètes, mais comme les RPGS n'emploient généralement pas que le gameplay TCP / IP est normalement un meilleur choix. Comet ou Bosh peut être utilisé pour permettre aux communications bidirectionnelles sur HTTP pour les mmO basé sur le Web et les sockets Web seront bientôt une bonne option là-bas.

Si je construisiez une nouvelle mmo aujourd'hui, j'utiliserais probablement XMPP, Bosh et construire le client dans JavaScript, car cela lui permettrait de fonctionner sans télécharger et interagir avec des systèmes de messagerie instantanée et de voix basés sur XMPP (comme GCLAT). . Une fois que WebGL est largement pris en charge, cela permettrait même aux mondes virtuels 3D basés sur le navigateur.

Parce que les environnements sont trop volumineux pour simuler dans un seul processus, ils se séparent normalement géographiquement entre les processus que chacun simule une petite zone du monde. Il existe souvent une population optimale pour un monde, de sorte que plusieurs copies (éclats) sont exécutées quels ensembles de personnes utilisent différents.

Il y a une bonne présentation sur la deuxième architecture de la vie d'Ian Wilkes qui était le directeur des opérations ici: http://www.infoq.com/presentions/second-life-ian-wilkes

La plupart de mes discussions sur la technologie de deuxième vie sont liées à mon blog à l'adresse suivante: http://jimpurbrick.com < / p>


0 commentaires