Pages

[Concept]Serveur orienté débutants pour développement de MMOG sujet

vendredi 31 janvier 2014




Bonjour,

Tout d'abord, je tiens à préciser que le but de ce topic est principalement de pouvoir critiquer et donner son avis sur ce sujet et que toute remarque constructive sera vivement appréciée. Le projet n'est pas encore à un stade d'avancement suffisant pour le recrutement.

Je viens vous présenter le concept de projet sur lequel je travaille depuis déjà quelques temps : la création d'un serveur (ou framework amélioré) permettant à des débutants de créer des jeux de type MMOG ou MMORPG.

Genèse du projet :

La naissance de ce projet est issue de quelques constats :

- le monde du développement amateur a beaucoup évolué ces dernières années mais reste relativement fermé au débutant. Les nombreux frameworks et outils qui en découlent nécessitent toujours de connaître des langages de programmation très spécifiques ou d'avoir acquis des prises en main liées à un domaine d'activité (par exemple Unity, qui est un excellent outil, est dédié en primeur aux infographistes 3D et sa prise en main graphique m'est totalement hermétique en tant que développeur, RPGMaker nécessite rapidement de se mettre au Ruby, etc...).

- les débutants sont en priorité intéressés par le résultat et la rapidité de mise en oeuvre, de nombreux projets tournent au PFDA par manque de patience, d'investissement ou tout simplement de capacité à appréhender le monde de la programmation ou du graphisme de prime abord.

-il existe des débutants qui sont d'abord game designer (voir game master) avant d'être graphistes ou développeurs. Ils espèrent pourtant pouvoir construire leur jeu comme ils auraient construit un jeu de société et s'éclater en priorité avec leurs amis.

- la durée moyenne d'un projet avant explosion en plein vol (je suis bien placée pour avoir commis quelques PFDA) est de 6 mois à 1 an. Il est très difficile de maintenir une équipe motivée au delà de quelques semaines sans résultat tangibles. Pourtant dès qu'on attaque de la programmation ou du design 3D, les délais peuvent rapidement devenir long, ces délais sont intenables pour un débutant qui essaie d'avoir un peu d'ambition et souhaite se lancer dans le monde merveilleux du jeu multijoueur.

- De mes différentes expériences en développement amateur, celle que j'ai la plus appréciée à consister à scripter sur EAthena (serveur émulé d'un MMo bien connu) et à avoir des retours rapides (car ce qui était moddé était mis à disposition des joueurs dans les 15 jours). Et ce sans maîtrise du moteur de jeu. Malheureusement, un tel concept ne peut et ne doit pas devenir une norme.

Partant de là, il m'est apparu clairement qu'un outil simplifié permettrait à beaucoup de se mettre le pied à l'étrier et de découvrir s'ils voulaient vraiment créer ou simplement raconter une histoire.

J'ai conscience qu'il y a énormément de choses réalisables dans ce domaine, mais comme il faut bien commencer quelquepart et que je connais mes limites personnelles, j'ai choisi de m'attaquer d'abord au serveur avant de parler de client ou d'éditeur de jeu.

Les choix technologiques :

L'objectif étant de proposer une solution clé en main et facilement modifiable, j'ai opté pour les choix suivants :

Base de données : Mysql

Langage : Java EE sur serveur OpenEJB (il s'agit d'un serveur Tomcat amélioré)

Gestion des sources : usage de SVN (peut être Maven)
tests automatisés avec JUnit et SOAPUI (dont tests de charge)

Gestion de projet : usage d'Assembla, méthode XP

Concernant le développement, je compte utiliser les mécanismes EJB3 et JAX-WS, ce qui signifie que le serveur JEE en sous-couche gèrera lui-même la persistance, le cycle de vie des données, la sécurisation des flux et que l'ensemble des entrées/sorties du serveur seront au format XML(SOAP).
OpenEJB permet aussi de construire des files JMS donc peut gérer des traitements asynchrones.

J'ai bien conscience que ce n'est pas forcément les meilleurs choix en terme de performance, et Java n'est pas non plus mon langage préféré, mais c'est celui sur lequel j'ai le plus d'expérience maintenant de part mon travail et je maitrise déjà une bonne partie des concepts à mettre en oeuvre.


Ce qui reste encore à éclaircir :

La granularité des composants :
Le fait de passer par un conteneur JEE permet d'envisager de construire le projet sous forme de modules qui seront à installer et paramétrer uniquement quand on en a besoin.
Le problème est de savoir quelle granularité adopter : j'ai une bonne connaissance des mécanismes des MMoRPG mais là il est question d'ouvrir à d'autres MMoG; et également de proposer une variété suffisamment grande de composants pour les divers besoins.

La scalabilité des composants :
J'ai vu de part et d'autre sur le net que les concepts d'échelle étaient beaucoup plus au gout du jour qu'avant.
J'ai réfléchi à construire mon projet sous forme de composants séparés communiquant entre eux via un "bus" composé de files JMS, mais est-ce vraiment utile pour un système ouvert aux débutants? Et si la question se pose plus tard, n'est ce pas d'origine que le système doit être conçu sur cette base?

Le niveau d'ouverture du code :
Bien que je vise les débutants, il arrivera forcément un moment où le besoin de modifier un élément du système pour le personnaliser se fera sentir. L'avantage de Tomcat est qu'il peut tourner en mode "exploded" et que toutes les sources seront donc à disposition pour modification directe.
Cependant, je ne pense pas que ce sera encore suffisant et je me demande si pour des débutants un code bourré de classe abstraite et d'interfaces ne serait pas un peu "too much".

Ce qui doit être paramétrable :
Et plus loin, la forme que doit prendre ce paramétrage.
Ainsi que la forme de scripting (je pensais à Groovy - on en revient toujours au soucis de savoir coder -ou XML mais là il va falloir écrire une syntaxe spécifique, c'est peut être le mieux avec un éditeur par dessus?).

Le niveau de monitoring et d'administration :
Tout serveur multijoueur nécessite une surveillance et la mise à disposition d'outils d'administration performants et simples d'utilisation (devoir utiliser une console linux n'est pas donné au premier venu... et la surveillance *coup de téléphone du poto, au secours le serveur est tombé!* ça n'est pas sérieux, même en amateur.

Merci de m'avoir lu, n'hésitez pas à poster vos remarques, critiques, idées.




Aucun commentaire:

Enregistrer un commentaire