Structure d'un jeu web - Version imprimable +- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org) +-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38) +--- Forum : Débuter et gérer son projet (https://jeuweb.org/forumdisplay.php?fid=60) +--- Sujet : Structure d'un jeu web (/showthread.php?tid=6790) |
Structure d'un jeu web - Kurapika0 - 26-04-2013 Salut à tous, je poste ce message afin de recueillir des information qui pourraient m'aider pour la création de mon jeu. Alors voila il y a de nombreux tutoriels que j'ai lu sur la conception de jeu comme par exemple l'incontournable blog de DA, mais malgré tous les tutoriels que l'on peut trouver sur internet, je trouve qu'il y a un gros manque de tutoriel sur la création d'une structure viable pour son jeu, je veux dire par la, lorsque l'on a l'idée de son jeu, que l'on sait comment on veut qu'il soit, ce que l'on veut en faire, il faut bien savoir par ou commencer, et surtout comment relier tous les modules en quelque chose de parfaitement fonctionnel. Ça rentre bien sur d'avantage dans les questions techniques (d'un point de vue méthodologique) je l'accorde, mais je dois avouer que je me perds dans mon développement, je commence un truc, puis je dois toujours y revenir car je vois que j'ai oublié un truc par rapport à un autre module, et si je continue comme ça je sens que comme beaucoup de projet, le mien risque de tomber à l'eau et je ne veux pas, alors je serais prêt à tout recommencer en repartant d'une bonne base, c'est pour cela que je viens vous demander si vous n'auriez pas des conseils, ou encore des tutos à proposer afin que lors de la conception du jeu, je puisse réaliser le tout de manière fluide, en sachant par ou commencer etc... Merci d'avance RE: Structure d'un jeu web - Sephi-Chan - 26-04-2013 Je pense (n'ayant lancé aucun jeu, ça reste ma théorie) que pour créer un jeu viable, il faut — comme pour n'importe quel système informatique — essayer de découpler au plus les modules en composants indépendants. Le soucis, c'est que ce concept de module est très abstrait et peu avoir différentes formes selon les technologies utilisées. En prenant l'exemple de mon projet Seelies : une jeu de stratégie asynchrone joué en parties indépendantes (avec environ 5 à 10 équipes de 10 joueurs par partie), j'ai isolé un certain nombre de modules "métiers" :
Techniquement, voici la stack que j'ai prévu d'utiliser :
Pour implémenter tout ça, j'ai choisir d'utiliser pour chaque module métier une application dédiée qui tourne sous la forme d'un daemon. Pas mal de jeux Web (surtout dans le milieu amateur) sont juste des applications Web, mais c'est souvent un très mauvais choix technique car il pousse à tout faire dans les requêtes requêtes HTTP, ce qui pose plein de problèmes (notamment sur les performances et les accès concurrents à la base). Moi, j'ai choisi d'utiliser l'application Web comme une simple interface avec le joueur. Pour se parler, les applications utilisent un outil de messaging, RabbitMQ : chaque composant écoute sur une ou plusieurs queues et effectue un traitement à chaque fois qu'un message arrive. Voici par exemple ce qui se passe dans le scénario que j'ai décrit plus haut :
Voilà, j'espère que cet exemple permettra aux gens à comprendre comment on peut créer une application complexe en la séparant en modules faciles à gérer indépendemment. L'autre avantage est que chaque module a son propre code et qu'on peut donc les tester facilement et rapidement, et les mettre à jour sans avoir à relancer tout (si on coupe un module, les messages RabbitMQ lui seront envoyés quand il sera relancé). Bien sûr, on peut partager certains bouts de code (les classes, par exemple), notamment grâce aux systèmes de sous-modules des outils de versionnement comme Git. PS : on parle plus d'architecture que de structure. RE: Structure d'un jeu web - Kurapika0 - 26-04-2013 Merci beaucoup pour cet exemple concret, diviser le jeu en le plus de petits "modules" me semble en effet assez judicieux, avec une interface au milieu permettant d'interagir avec le joueur, cela semble plus simple avec un serveur de messaging, mais je comptais m'en tenir à la simple application web car n'étant pas très expérimenté, l'utilisation de technologies diverses et variés me mettrait mal à l'aise dans le développement. Ton exemple va me permettre de repenser les liens entre les différents modules et c'est bien ce que je cherchais à faire, merci beaucoup Mais pour bien séparer ses modules, comment doit on s'y prendre, tu cites par exemple un module de scoring/ranking, puis un autre d'achievements, dans un jeu ou les deux seraient liés, le score ne dépend que des achievements du joueur, doit on créer un seul et unique module, qui ferait tout le travail ou un qui suivrait les succès, puis un autre qui s'occuperait de faire les stats du joueurs (points, classement etc...)? RE: Structure d'un jeu web - Sephi-Chan - 26-04-2013 Rien n'empêche au module de scoring/ranking d'utiliser des informations crées par le module d'achievements : rien ne l'empêche d'accéder à la base de données MongoDB. Note aussi que l'on n'est pas limité à l'utilisation d'une base unique : un module peut tout à fait utiliser plusieurs base de données. On pourrait par exemple imaginer que le module de communication utilise une base de données Redis (stockage en RAM, extrêmement rapide) pour associer à l'ID d'un joueur son état online/offline. Bien sûr, le découpage que j'expose ne convient pas forcément pour tout (et il n'est probablement pas parfait). On peut tout à fait séparer un module en plusieurs dans le futur, ou au contraire en rassembler plusieurs. Enfin, il ne faut pas hésiter à se frotter à des choses nouvelles : on progresse en sortant de notre zone de confort. RE: Structure d'un jeu web - Maks - 26-04-2013 d'où le choix de Mongo j'imagine RE: Structure d'un jeu web - Kurapika0 - 26-04-2013 (26-04-2013, 09:39 PM)Sephi-Chan a écrit : Rien n'empêche au module de scoring/ranking d'utiliser des informations crées par le module d'achievements : rien ne l'empêche d'accéder à la base de données MongoDB. Oui, c'est pas faux, je dois avouer que cette question était assez bête ^^ (26-04-2013, 09:39 PM)Sephi-Chan a écrit : Bien sûr, le découpage que j'expose ne convient pas forcément pour tout (et il n'est probablement pas parfait). On peut tout à fait séparer un module en plusieurs dans le futur, ou au contraire en rassembler plusieurs. Bien sur, je comprends parfaitement qu'un découpage précis ne conviendra pas à tout type de situation, je pense que je vais étaler mon jeu sur papier, y noter toutes les actions possibles, et les ranger dans des modules, puis ensuite lisser le tout en en fusionnant, en découpant etc... pour voir ce qui conviendrait le mieux pour ce que je veux. (26-04-2013, 09:39 PM)Sephi-Chan a écrit : Enfin, il ne faut pas hésiter à se frotter à des choses nouvelles : on progresse en sortant de notre zone de confort. Je suis bien d'accord, mais la création de jeu n'est pas non plus vraiment ma "zone de confort", je n'en ai jamais fait, je progresse déjà beaucoup rien qu'en imaginant un jeu, et en me rendant compte de tout ce que la création d'un jeu implique. Je préfère m'en tenir à ça actuellement (j'ai déjà beaucoup progressé en programmation depuis le début de mon projet), puis quand je serais plus à l'aise dans le domaine du jeu, alors la je tenterai de nouvelles choses En tout cas je le redis, merci beaucoup pour ces précisions sur la manière dont tu abordes la structure d'un jeu web, il manque de ce genre de conseils dans les différents tutos que l'on trouve sur internet. RE: Structure d'un jeu web - Kassak - 29-04-2013 Pour y rajouter mon grain de sel, ne surtout pas avoir les yeux plus gros le ventre ! Comme dit plus haut, découper ton jeu en module est j'ai envie de dire presque vital et te permettra de voir réellement ton avancé, de savoir plus ou moins combien de temps il te reste avant la fin de ton dev. Maintenant, pour moi, le but c'est de faire le plus rapidement possible un jeu jouable et un minimum intéressant. Plus tu mettras de temps à faire quelque chose de potable, plus les chances que ça te saoul, que ton équipe te lache et j'en passe seront grandes ! Il faut donc définir quels modules seront présents pour ta V1 (le minimum, gestion de membre, inventaire, forum etc.... par exemple). Une fois tes modules terminé, ton jeu est en V1, bravo, maintenant tu y ajoutes les modules que tu avais mis de coté, etc.... et HOP, V2 ! Tu auras ainsi vraiment le sentiment d'avancer et de ne pas te lancer dans un truc de fou que tu mettras 20 ans à faire ou qui ne sera jamais terminé Mais pour cela, il faut imaginer ton jeu à fond avant d'écrire la moindre ligne de code, ça t'évitera de retourner sur des modules 50 fois parceque tu avais oublié un truc. RE: Structure d'un jeu web - Kurapika0 - 29-04-2013 Je vois que cela m'a bien fait défaut de mal séparer mon jeu en modules, de ne pas l'avoir imaginé a fond, et de ne pas l'avoir noté (en détail tout du moins) sur papier, plutôt que de faire les modules au fur et à mesure qu'ils me viennent, je vais tout reprendre depuis le début à la phase de réflexion, et je vais m'y prendre, comme conseillé par module. Ça me paraît extrêmement moins prise de tête, et surtout je ne me découragerais pas, du moins je l'espère Et je vais aussi faire mon maximum pour épurer mon jeu au début, c'est vrai que je voulais qu'il soit assez complet dès le début, mais je me rends compte que c'est inutile, autant avoir un jeu avec peu de contenu (modules etc...) mais qui fonctionne bien qu'un jeu avec beaucoup de contenu, mais qui n'est pas terminé, et qui risque de ne jamais l'être. Merci d'avoir ajouté ton grain de sel, il va aussi m'être très utile. RE: Structure d'un jeu web - Etienne - 29-04-2013 Si je ne m'abuse, dans une production vidéoludique, ces étapes préliminaires s'inscrivent dans ce qu'on appelle la bible du Game Design. Je penses que c'est le genre de document indispensable et même au seins d'un jeu amateur, peu importe la forme que cela prend l'important est que ce soit présent. Le fait de passer par la rédaction t'imposera de mieux penser ton contenu et surtout de le hiérarchiser. Et je penses, comme dit plus haut que cela t'évitera aussi pas mal de code inutile suite à des éléments que tu n'aurais pas assez réfléchis. Mais déjà te placer dans cette optique d'organisation est une démarche très positive, je penses que beaucoup de projet irait plus loin si il y'avait eut plus de temps passer sur ces étapes de pré-productions. Comme quoi les aptitudes techniques ne se suffisent pas en elle même, il faut aussi savoir où l'on va :p Bonne chance pour ton projet en tout cas =) RE: Structure d'un jeu web - Kurapika0 - 29-04-2013 Oui, je m'en rends de plus en plus compte, et c'est bien parce que je sentais que j'allais droit dans le mur que j'ai créé ce topic, et je suis bien content de l'avoir fait, cela va me permettre de repartir sur de bonnes bases. Merci, j'espère que j'arriverais à terme de ce projet car à la base c'est une des raison pour laquelle j'ai eu envie de m'initier à la programmation il y à quelques années |