Les débuts pour programmer un MMORPG

Répondre
Partager Rechercher
Salut à tous,

En ce moment j'ai du temps à moi et j'aimerai rentrer un peu dans l'univers de la création d'un MMORPG. Etant développeur de gestion, je n'ai que très peu de connaissances sur l'architecture d'un jeu.

J'en appelle à vous pour me fournir des informations pour débuter, je suis preneur de tous les conseils, liens, livres ou toutes sources d'information que vous pourriez me recommander.

Merci d'éviter de me dire que je n'arriverai pas à réaliser un MMORPG tout seul je le sais et ce n'est pas mon but, je suis juste un peu curieux et j'ai envie de m'essayer à ce domaine.
Citation :
Publié par Neo Wulfen
Merci d'éviter de me dire que je n'arriverai pas à réaliser un MMORPG tout seul je le sais et ce n'est pas mon but, je suis juste un peu curieux et j'ai envie de m'essayer à ce domaine.
Sans vouloir être rabat joie ce genre de question est tellement générale et vague que les gens susceptible de te répondre vont pas savoir par ou commencer

Essai d'être plus précis, et indique ce que tu crois connaître/deviner sur l'architecture de jeux et des mmorpg en particulier et ce qui est pour toi tiens du plus grand mystère. Ca donnera une meilleure accroche à la discussion je pense

Bon sinon les classiques:
http://www.gamedev.net/ (nombre de tutoriels/articles divers et variés)
http://www.gamasutra.com (pas vraiment pour débuter mais beaucoup articles très intéressant sur les jeux, l'industrie, les techniques, l'inscription est gratuite)
Bon alors pour ce qui est de mes peu de connaissances, corrigez si je me trompe, je vois déjà çà structurée en une appli serveur et une appli client.

Du côté serveur c'est la partie la plus claire pour moi, là on gère les données qui arrivent, on fait un certains nombres de calculs, on envoies les données traitées au clients. Je vois surtout comme difficulté les formules de calcul à appliquer et l'optimisation de la bande passante.

Du côté client pour moi c'est très obscure, on envoies et on reçois des données mais pour le traitement qui se fait derrière, j'imagine bien que c'est de l'utilisation de directx mais j'y connais rien.

Voila toute l'étendue des lacunes à combler.

Merci pour les liens j'irai voir dès que possible sinon.
Si tu es prêt à y mettre de ta poche: http://www.realmcrafter.com/pages/user/index.php semble fort prometteur et est un moteur complet avec dans la version pro, l'accès aux codes sources te permettant de scripter plus facilement pour ton jeu.

Un site français sur le sujet: http://realmcrafter.jexiste.fr/

Mais on ne peut pas considérer cela comme un MMO "fait main" puisqu'en dehors de tes ajouts de script, c'est le programme qui gère le reste, entre autre la plus délicate partie qui concerne le "client/serveur".
Les conseils demandés concernent surtout l'aspect client / serveur (si j'ai bien compris), qui, à mon humble avis, ne représentent qu'un aspect technique de la difficulté à programmer un jeu.
Il reste cependant ce qui fera du résultat un jeu intéressant / prenant / palpitant / accrocheur : ce qui n'est pas la moindre des difficultés, je pense.

Le coté graphisme, ok, mais c'est aussi un aspect solution technique de la mise en oeuvre d'une idée de départ ...

Le gameplay, en revanche, et lorsqu'on lit les posts de ce forum, ne semble pas de "la petite bière" ... également lorsqu'on lit le post sur les IA des mobs : ça ressemble à un cauchemar de vagues souvenirs de logique flou toussa

Attention, je ne dis pas ceci pour décourager, mais juste pour éviter une éventuelle déception en cours de route ( genre, comme si j'en savais quelque chose )
Pareil que Valilith (à part l'histoire de logique flou qui n'est pas nécéssaire Seul la recherche de chemin est quasi-commune aux jeux (l'A* est assez recurrant), apres pour la mecanique de prise de décision ca depend du jeu et ce que tu veux: il y a plus simple) et chagarou pour ses liens...

En bibliographie, je te conseille de t'abonner à "Game Dev Mag", d'aller jeter un oeil à Gamasutra, Gamedev.net et les forums d'IGDA.org. En livre, d'obtenir "Game Prog Gems", "Game Design Theory & Practice" (pour le coté Game Design)...

En ce qui concerne la partie client, elle ne sert que d'interface (envoie de requete de base ("envoie d'un message de chat", cliquer dans tel endroit, etc), recuperation de l'etat du jeu et rendering)... La techno n'est pas si fondamentale: ton choix peut aussi bien aller de RW ou Direct X à Flash en passant par J2ME ou Brew (il y a des MMO sur mobiles)... Prend celle qui correspond le mieux à tes compétences et à ton GameDesign - regarde surtout si des outils gratuit correspondant à tes besoisn sont dispo)...

La partie serveur, pour faire simple, recupere les données du client pour en calculer l'état du monde. Le serveur retourne cet état au client. L'architecture dépend plus de toi mais en général, on sépare les données statiques, dynamiques et les serveurs de traitements de jeu (Algos+Game Logic) (voici l'exemple de l'architecture generale de SOE)...

Pour ce qui est du conseil:
- Avant de te lancer dans un MMO, essaye-toi dans des jeux plus simples pour connaitre les bases (Ne serait-ce que la notion de boucle de jeu)
- Essaye d'integrer une team amateur déjà existante ayant un projet en cours afin de te forger une experience
- Fait d'abord un document de Game Design (ca evite d'avancer dans le vide et d'avoir un résultat pas top)... Avant d'etre un programme, un MMO est un jeu. C'est comme si au cinéma on commandait les plateaux, le materiel et les caméra sans avoir de scenario, ou meme de theme...
- On ne peut pas tout faire et on ne peut pas etre doué partout: cherche-toi une team (Game/Level Designer, Progs, Arts...)
- Commence par le tour par tour, tu te détacheras de pas mal de contraintes réseaux

Et sans vouloir te décourager, il ne faut pas oublier que les projets MMO de jeu sur le net sont comme les volcans de Volvic... "Un projet s'eteind, un autre se reveille!"
Citation :
Publié par Drahas
Salut à tous,

En ce moment j'ai du temps à moi et j'aimerai rentrer un peu dans l'univers de la création d'un MMORPG. Etant développeur de gestion, je n'ai que très peu de connaissances sur l'architecture d'un jeu.

J'en appelle à vous pour me fournir des informations pour débuter, je suis preneur de tous les conseils, liens, livres ou toutes sources d'information que vous pourriez me recommander.

Merci d'éviter de me dire que je n'arriverai pas à réaliser un MMORPG tout seul je le sais et ce n'est pas mon but, je suis juste un peu curieux et j'ai envie de m'essayer à ce domaine.

Il y a une équipe qui se rassemble pour démarrer la programmation d'un MMORPG en 2D utilisant de l'OpenGL /SDL, si t'es toujours motivé tu peux faire un tour sur le site et t'y inscrire, nous te filerons des conseils pour te dire ou commencer. Et si tu progresse bien on te donnera la responsabilité de programmer une partie spécifique du jeux
voici le lien :
http://adminquest.web-hebergeurs.eu/
ou
www.adminquest.info
Je te conseil également avant de te pencher sur du MMORPG de te faire un petit jeu genre juste une map et des personnages qui se baladent dessus et communiquent entre eux avec un server et 3 ou 4 clients connectés simultanément.
C'est assez simple à faire et ça te donnes déjà l'occasion de te pencher sur différentes problématiques comme le protocole de communication entre ton server et tes clients, l'optimisation du server pour essayer de log un maximum de clients simultanément (qui bourrinent le server de requêtes en tous genre évidemment sinon c'est pas drôle) sans que ça rame ou encore la conception d'un client graphique en séparant bien la couche métier de la couche graphique afin de pouvoir faire une première version simple en 2D et ensuite passer a la 3D sans tout refaire etc... pour une première approche du développement de jeux ça fais déjà pas mal de choses
Bah si t'es programmeur tu télécharges les sources et tu regardes. C'est http://www.sourceforge.net, dans la catégorie MMORPG il y en a quelques uns. Tu peux aussi regarder les MUDs comme TinyMUSH et autres, vu que ce sont les ancêtres des MMORPGs.
Bon je suis le concepteur et programeur d'herdelia je vais essayer de te dire comment j'ai fait moi et comment je fais en ce moment même.

Un server :
liaison avec une db (sql)
reception et renvoie d'information

en géneral le serveur répond a une question du client
qu'est ce qu'il y a la ?
j'avance ou ?
etc...

Niveau client (mon domaine) :
c'est uniquement de l'affichage.
c'est a dire, chargement des modèles 3d et des maps que le serveur te dit de charges et execution et interprétation de ce que le serveur te dit dde faire ou t'envoie.
Citation :
Publié par Drahas
Etant développeur de gestion, je n'ai que très peu de connaissances sur l'architecture d'un jeu.
Honnetement il n'y a pas de difference

tu fais une analyse UML classique
la base que j'ai appris (en UK car ca doit surement varier) :
- World
- Visualisation
et apres tout le reste depend du jeu :
- Network
- sound
etc..

Visualisation -> c'est le module qui decrit comme dessiner a l'ecran les objets (sans rien connaitre de ses objets)
World -> c'est le module qui stock les objets (c'est ce module qui sait ou est situer X quel est son nieau etc..)

Dans le cas d'un MMO, Visualisation est dans la partie client et World est dans la partie server. (c'est un peu plus compliquer car apres ca depend comme tu veu que soit tes connections, selon que tu veu un truc securiser ou un truc qui lag pas trop etc.. Le module World est souvent present dans le client en plus du server mais c'est source de cheating )

Tout le reste , c'est exactement pareil que la prog classique

PS : je suis pas rentrer dans les details car je supose que tu sais faire une analyse UML
Je ne suis pas du tout d'accord avec toi, Thotor...
Je pense qu'il y a au contraire d'énormes différences dans la programmation quand on passe d'un domaine informatique à l'autre...

Le "programmation classique", je trouve que c'est un concept pour les développeurs débutants qui n'ont pas conscience des spécificités fines de chaque domaine.
Il n'y a rien de "classique" quand on parle de développement de haut niveau...

Par exemple, l'informatique de gestion repose sur des principes très spécifiques qui changent complètement la donne en terme de code...
Il y a, par exemple, des problématiques importantes de gestion de la politique d'entreprise (ex: prise en compte de la nécessité de s'isoler le plus possible des logiciels périphériques -style base de données-), de maintenance (ex: système de fichiers de configuration "human friendly"), de gestion de l'environnement (ex: prise en compte de la structure du réseau d'entreprise) qui n'existent pas en développement de jeux vidéos et qui vont grêver ton budget ou tes perfs si tu les établis appliquent quand même.

A l'inverse, il me semble donc peu crédible qu'il n'existe pas de spécificités fines qui soient propres au domaine de la programmation des jeux vidéos...
Je pense même que je pourrais émettre des hypothèses assez crédibles de choses qu'il faut sans doute prendre en compte en programmation multimédia et dont on se contrefout pourtant en programmation de gestion...



D'ailleurs, ces différences se ressentent beaucoup dans le métier: jamais un développeur de 10 ans d'expérience dans un domaine précis ne sera considéré comme un développeur de 10 ans d'expérience dans un autre domaine... preuve que l'entraînement sur le terrain conduit à apprendre des choses très très spécifiques à chacun d'entre eux.

En fait, je ne suis même pas sûr que l'UML lui-même soit très utilisé dans la fabrication d'un MMORPG... A mon avis, cela conduit à un formalisme bien trop important pour les contraintes spécifiques de ce milieu.
Je ne suis pas convaincu, par exemple, qu'un diagramme de classe soit très utile à un programmeur qui doit essayer de grappiller le moindre cycle CPU pour réussir à faire un jeu fluide, mais je peux me tromper...

Peut-être que quelques bouts sont employés, mais la méthologie UML au global, j'ai un gros doute.
Tu peut douter autant que tu veu pourtant c'est la realiter.
J'ai terminer un BSc Computer Games Programming (Licence de programmation de jeux video).
Je connais tres bien le domaine.
J'ai fait un DUT Informatique de gestion donc , je connais bien les 2 domaines.

Ton raisonement aurait ete juste il y a 5-10 ans , aujourd'hui le monde du jeu video est beaucoup plus reglementaire.
Les premiers jeux etaient develloper par des petites equipes. Les methodes varier de jeu a jeu.
Aujourd'hui les jeux ont des equipes gigantesque. L'UML est devenu obligatoire pour gerer ca.

Attention : La definition de l'UML est beaucoup plus simpliste en angleterre (en tout cas par rapport a ce que j'ai fait en france). Il n'y a pas de grosse documation pour expliquer chaque truc. Ca se resume surtout au graphe des classes et leur definition (afin de realiser le squelette du programme et diviser les taches au sein de l'equipe)
* Oh!!! Le vieux sujet qui refait surface! *

De ce qui est l'UML dans l'industrie des jeux (sans parler de MMO & de ses particulités), il y a quand meme une difference dans ce que l'on recherche à modeliser. Là où dans les autres industries, on recherche à etre plutot exhaustif dans les specifications et à grandement user de l'heritage. Dans le jeu, on recherche plutot les modelisations meta mettant en avant la genericité de certaines mecaniques entre agents. Le but du diag de classes, objets ou sequences dans le jeu sert davantage à modeliser comment orchestrer les objets via des manager. Ainsi le jeu n'est pas codé de A à Z en dure mais peut se greffer sur des moteurs, qui se grefferont dans des middleware et authoring tools...

La spécificité des agents (qui se fairait au niveau des classes & objets dans un processus purement informatique) se fait ici par l'association d'assets, de comportements (scripts ou hardcoded), de graphs, etc. en fonction du Game Design Document & generalement pas par les developpeurs.

Autre particuliraté de la prog dans le jeu (hors MMO qui est lié à d'autres contraintes): là où une application lambda passe son temps à attendre une action d'un utilisateur pour agir, un jeu agit en boucle meme sans action utilisateur. De ce fait, et parce que la notion de thread est quelque chose de peu utiliser dans les jeux, les boucles sont à utiliser avec moderation et intelligement (sinon mechant lag), il faut favoriser leur mise à plat sur plusieur frames (ce que l'on appelle le time slicing).

Bref, etre dev dans le jeu a ses particuliraté (au delà de l'aspect expertise dans le rendu graphique, IA...)
Citation :
Publié par Thotor
Tu peut douter autant que tu veu pourtant c'est la realiter.
J'ai terminer un BSc Computer Games Programming (Licence de programmation de jeux video).
Je connais tres bien le domaine.
J'ai fait un DUT Informatique de gestion donc , je connais bien les 2 domaines.

Ton raisonement aurait ete juste il y a 5-10 ans , aujourd'hui le monde du jeu video est beaucoup plus reglementaire.
Les premiers jeux etaient develloper par des petites equipes. Les methodes varier de jeu a jeu.
Aujourd'hui les jeux ont des equipes gigantesque. L'UML est devenu obligatoire pour gerer ca.

Attention : La definition de l'UML est beaucoup plus simpliste en angleterre (en tout cas par rapport a ce que j'ai fait en france). Il n'y a pas de grosse documation pour expliquer chaque truc. Ca se resume surtout au graphe des classes et leur definition (afin de realiser le squelette du programme et diviser les taches au sein de l'equipe)
Méfies-toi: tu ne "connais" pas un milieu juste parce que tu as fait des études en corrélations avec celui-ci... Cela serait trop simple!
Ce genre de dialogue que tu tiens, c'est par exemple ce que, moi, j'aurais sans doute dit à la sortie de mon école d'ingénieur, avant d'accumuler les années d'expériences et les clients.

Dans les faits, les méthodologies UML, OML, Merise ou tout ce que tu veux, elles ne sont appliquées qu'à la mesure de ce que les gens veulent bien l'appliquer.
Quand, par exemple, tu arrives dans une équipe ou 80% ne connaissent pas l'UML, ben ta belle méthodologie, tu la ranges dans le tiroir... Or ce n'est que depuis très peu de temps qu'il existe des formations informatiques qui apprennent aux jeunes ces méthodologies et donc les domaines informatiques actuels sont REMPLIS de gens qui ne les connaissent pas encore.

La plupart du temps (et ce sauf dans des entreprises hyper-procédurales qui sont prêtes à payer des fortunes pour n'avoir que des gens formés expérimentés -et non pas seulement formés- dans ces méthodes), les méthodologies, on se contente de piocher dedans... genre, exactement ce que tu décris par rapport à l'Angleterre: les chefs de projets ont pioché un peu du formalisme du diagramme de classe UML pour leur documentation interne... mais sans plus.

A côté de cela, tu as les professeurs d'école qui apprennent ces méthodes aux élèves et leur bourre le mou de grands principes pour tenter d'augmenter progressivement le % de projets où elles sont utilisées (les jeunes arrivants n'ayant pas beaucoup de poids, mais quand même chti peu)... Mais cela fait de vous un outil institutionnel de perfectionnement du milieu, pas une représentation de sa réalité profonde.

C'est cette expérience professionnelle qui te manque (où alors en as-tu, mais tu es tombé justement dans une boite hyper-procédurale et donc tu ne te rends pas compte de ce qui se passe en général) qui t'empêche de voir toutes les différences entre les milieux informatiques.
Regarde un peu ce que Gorio décrit... Je pense que c'est bien plus proche de la réalité que tu ne l'es, toi: oui, on utilise des parties du l'UML dans le jeu vidéo... mais pas tout l'UML (qui est une méthodologie qui n'a pas été pensée pour le multimédia) et pas de la même façon non plus.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés