Onalyan - Post Mortem

2011-08-30

Il y a déjà 3 ans (j’avais alors seulement 13 ans), j’ai voulu créer moi-même un jeu vidéo. Moins ambitieux que mes précédents essais (qui ont tous été des échecs), ce projet ne semblait pas au départ mieux parti que les autres.

Aujourd’hui, le jeu est à présent terminé. Malgré de nombreuses choses qui mériteraient grandement d’être améliorées, quelques bugs et autres problèmes, le jeu est tout de même terminé. Certes, ce n’est pas le jeu du siècle, mais d’après les commentaires que j’ai pu recevoir, il est plutôt bien réalisé pour un débutant, et des jeux complets de cette ampleur sont assez rares sur les forums amateurs.

Afin de clôturer complètement tout ça, j’ai donc décidé d’écrire un article sur ce que j’ai pu apprendre durant la réalisation d’Onalyan.

Onalyan Post Mortem - Une cinématique du jeu montrant le héros parlant à un homme fou

Tout commence en juillet 2008…

C’est à cette date que commence les premières idées du projet. À l’époque, je n’étais pas très différent de n’importe quelle autre ado qui rêve de créer un jeu vidéo. Des projets, j’en avais déjà eu d’autres d’ailleurs : un RPG (abandonné), un jeu en ligne (abandonné), et d’autres que j’ai sans doute oubliés. À l’époque, je rêvais surtout des MMORPG. Et le pire est que je pensais pouvoir en réaliser un !

En effet, « connaissant » la programmation (apprise grâce au siteduzero), je pensais être à présent capable de tout faire. Un MMORPG ne posait pas plus de problèmes qu’un bête Pacman, ça demandait juste plus de temps. Mais pour régler ce problème, il suffisait de recruter une équipe, et hop! c’était réglé.

Heureusement, grâce à mes précédents échecs, j’avais revu mes ambitions à la baisse. Plus question de MMORPG, je voulais avant tout réussir à terminer un de mes projets. Cela semble être le cas pour beaucoup de gens, et pas seulement pour les jeux vidéos : on a toujours plein d’idées et d’envie en tête, mais à peine ont-elles commencées qu’on finit par les abandonnés, découragés par la surcharge de travail ou bien l’arrivée d’une nouvelle idée plus intéressante.

J’étais comme ça avant (et toujours un peu maintenant, je dois l’avouer). Les jeux vidéos n’étaient d’ailleurs pas mes seuls échecs. J’ai dû commencer quelques dizaines de romans quand j’étais petit. Étonnamment, aucun n’a abouti ^^. Là, c’en était trop, et je voulais au moins une fois dans ma vie terminer quelque chose.

Je m’étais amusé récemment à imaginer un univers (même si je n’avais qu’un début de carte). J’avais aussi quelques personnages réalisés en Pixel Art et les restes de mon ancien RPG. J’ai finalement fusionné tout ça pour créer mon nouveau projet.

Je n’étais pas si bien parti pourtant…

Malgré tout, mon projet aurait pu disparaître rapidement si je n’avais pas découvert certaines choses au bon moment.

Car mes ambitions étaient au départ toujours trop grande. Je comptais ainsi recruter toute une équipe sur Internet pour s’occuper des graphismes, de la musique, etc. Je voulais des cinématiques proches d’un vrai dessin animé, peut-être même en 3D. Je voulais commencer directement un site web. Je voulais trop de contenu (cela dit cette erreur est restée même après avoir réduit ce que je voulais). J’imaginais qu’une communauté de joueurs allait pouvoir s’installer autour de mon jeu…

Heureusement, j’avais tellement envie de réussir ce projet, que j’ai eu la bonne idée de chercher des conseils pour y arriver… Et c’est ainsi que j’ai trouvé http://www.conquerirlemonde.com/. Je pense bien qu’il m’a sauvé. J’ai dévoré les articles sur les erreurs classiques à éviter pour les jeux vidéos amateurs. Je les ai lus et relus, et j’ai fini par comprendre qu’il y avait des choses qui n’allaient pas.

J’ai bien compris que mon Game Design Document qui faisait 5 ou 6 pages n’était pas suffisant et qu’il fallait quelque chose de plus complet. L’équipe a été oubliée pour un temps, ainsi que le site web. J’ai volontairement limité le contenu du jeu, et j’ai commencé à décrire, dans les moindres détails, le futur Onalyan.

Le Game Design

Deux mois après avoir eu les premières idées, je commençais enfin à écrire le Game Design Document du jeu. J’avais décidé de ne rien oublier : rien ne devait être décidé concernant le jeu pendant la réalisation de celui-ci.

Cela m’a pris un an. Une année complète à écrire un GDD immense, un scénario de 50 pages, ainsi que tous les dialogues des personnages du jeu (plus de 300). En plus de ça, j’ai fais beaucoup de dessins de personnages, et je me suis « entraîné » à programmer certaines choses.

Et c’est là que j’ai fais sans doute une première erreur. Car bien que cette année entière passée sur le projet ait finalement renforcé ma détermination à finir ce jeu (« Je ne peux pas abandonner après avoir fait tout ça), j’ai aussi perdu beaucoup de temps à faire des choses inutiles. Par exemple, le scénario a été modifié plusieurs mois après pendant la réalisation même du jeu, car je le trouvais trop peu intéressant. Il y avait des choses qui clairement n’allaient pas que je ne voyais pas avant. En clair, si j’avais attendu le meilleur moment, je n’aurais pas eu à recommencer plusieurs choses.

De plus, certains détails extrêmement précis auraient pu être déterminés par la suite pendant la réalisation, parce qu’il y a de toute façon toujours des imprévus durant la réalisation qui nous forcent à modifier certaines choses prévues car on se rend compte qu’elles sont trop difficiles à réaliser, ou qu’il y a une meilleure solution plus simple.

Pour résumer, je pense que le Game Design doit permettre de se faire idée assez précise du jeu et de son fonctionnement, sans pour autant faire trop long et « fixer » tout avec trop de précision, puisqu’il sera toujours difficile de tout faire comme prévu. Il y a un juste milieu entre un Game Design presque vide et un Game Design qui donne trop de détails inutiles.

Un autre problème était que j’ai beaucoup détaillé du contenu sans vraiment réfléchir au joueur et à la jouabilité.

Enfin, le Game Design était terminé, et j’avais fait là un exploit pour moi : travailler plusieurs mois sur un même projet sans arrêter. Ça n’a pas été simple, j’ai dû parfois « m’obliger » à faire quelque chose, mais grâce à cela, je pouvais enfin être fier et content d’avoir terminé quelque chose sans succomber à la tentation d’un autre projet que j’aurais abandonné lui aussi.

Préparation à la programmation

Finalement, je pouvais attaquer le jeu en lui-même. Mais avant, n’étant pas très sûr de moi niveau programmation, j’ai voulu avant tout bien préparer le code pour partir sur quelque chose de clair.

J’ai donc commencé à réfléchir sur les différentes classes dont j’aurais besoin dans mon code, les fonctions, etc. Je ne connaissais pas l’UML à l’époque, donc j’ai tout fait à la main. Ça a été une première perte de temps. Mais je pense que le vrai problème, c’était que je ne connaissais pas vraiment la Programmation Orientée Objet. Je connaissais les bases, mais je n’ai pas vraiment programmé en POO. Je programmais un peu comme en C, mais en utilisant des classes. Certes, le jeu a fonctionné quand même, mais je n’ai rien appris concernant la POO, alors que ça aurait pu être une bonne occasion de l’apprendre vraiment et de progresser encore plus. Bien sûr, j’ai appris des choses, mais j’aurai pu en découvrir plus si j’avais pris le temps de vraiment maîtriser le concept de POO.

Le schéma fait aura été très utile malgré tout, mais tout comme le Game Design, j’avais poussé le détail tellement loin que certaines choses ont finalement été inutiles puisqu’il a fallu les changer pour telle ou telle raison.

La programmation du moteur du jeu

1er septembre 2009 : la programmation du jeu commence enfin. Je redoute cette étape car je ne sais pas si je serai à la hauteur pour programmer tout. D’ailleurs, j’avais pensé à attendre avant de la faire pour m’entraîner d’abord. Eh bien en fait non, j’avais le niveau.

Le seul problème, c’est que j’ai voulu tout faire moi-même. Ainsi, je ne m’étais pas renseigné sur comment on programme un jeu avec des maps. J’ai fait à ma manière, et ce n’était malheureusement pas une très bonne manière. Maintenant encore, les erreurs faites sont encore visibles dans le jeu même si tout fonctionne correctement. Et surtout, si je m’étais renseigné, j’aurais sans doute avancé plus rapidement et plus proprement.

Ça aura duré 4 mois. À Noël 2009, tout le moteur du jeu était terminé. Enfin, pour le moment, car j’allais encore devoir modifier beaucoup de choses mal faites mais qui n’apparaissaient pas encore. Toujours est-il que ça n’aura pas été facile. J’ai découvert la joie de passer des heures à tenter de corriger un bug… plusieurs fois. Mais quel plaisir de voir à nouveau quelque chose de terminé !

L’étape finale

À présent, il ne me restait plus qu’à faire « le reste », c’est-à-dire l’ensemble des images du jeu, les cinématiques, les bruitages, la quête, les quêtes secondaires, et intégrer tout ça dans le jeu. Les premiers dessins se faisaient rapidement, alors je me suis fait une sorte de planning, avec pour objectif de terminer le jeu pour fin juin, soit en 6 mois. Ça me semblait correct et même si j’allais devoir travailler pas mal, ce n’était pas irréalisable. J’avançais donc enfin vers la fin de ce jeu.

Mais rapidement, les imprévus ont commencé à arriver : en créant les premières maps, des bugs sont apparus, bugs qui n’apparaissaient pas avant. En testant certaines choses, de nouvelles erreurs surgissaient. Au final, j’ai passé des heures à coder et à corriger des bugs incompréhensibles, à cause d’un code pas assez bien pensé à la base et d’un manque de certaines habitudes de programmation.

Le scénario ne me plaisait plus comme dit plus haut, alors j’ai du le modifier à nouveau.

Ensuite, il s’est avéré que 1232 images pour les PNJ, c’était beaucoup plus long que prévu. Ça avançait un peu, mais travailler à la chaîne est très vite devenu énervant, et j’ai dû me forcer à en faire.

En ayant tellement marre, mon rythme de travail a progressivement diminué, pour finalement presque s’arrêter pendant plusieurs semaines. Un mois avant la fin des 6 mois, je m’y suis enfin remis complètement. J’ai commencé à dessiner pour les cinématiques, une première cinématique à vu le jour, et j’ai presque terminé de faire toutes les maps.

Ou pas

Fin juin 2010. Je pensais avoir terminé à cette date là. Raté. Il me restait encore un petit millier d’images de PNJ, des tas de dessins à faire et mettre en couleur, des choses à améliorer, des bruitages à faire, des petits détails à ajouter, etc.

J’avais enfin compris la fameuse règle du 90-90, qui dit que quand on terminé 90% d’un jeu, il reste les 90% restants à faire. Cela veut dire que même si on a l’impression d’avoir fait la plus grosse partie du travail, les 10% restants sont plein de petits détails qui finalement prennent autant de temps que la première partie. Je n’y croyais pas trop à cette règle, mais finalement, il s’est passé exactement ça : il me faudrait encore des mois avant d’arriver à la fin.

J’aurais pu demander de l’aide bien sûr, mais je n’osais pas. D’une part j’avais peur que mon projet n’intéresse personne, d’autre part j’avais peur que la personne qui m’aiderait ne soit pas assez sérieuse et ne travaille pas assez ou parte après un certain, ce qui m’aurait attiré beaucoup de problèmes.

Finalement j’ai donc continué seul. Pendant les vacances j’ai travaillé comme j’ai pu, et le projet a tout de même bien avancé. Travailler pour Onalyan était devenu une sorte d’habitude, la motivation n’était sans doute plus aussi forte qu’aux premiers jours mais je prenais toujours plaisir à y travailler. Cependant, j’avais quand même très envie de voir la fin de ce projet, car le faire seul pendant aussi longtemps m’a donné très envie de passer autre chose.

Enfin, après 2 mois, les dessins des cinématiques se sont presque tous terminés, et j’ai pu obtenir une première démo jouable à la fin des vacances. Le moment était venu d’obtenir quelques premières critiques.

Avis extérieurs

Pour la première présentation du jeu, j’ai voulu prendre un forum pas trop fréquenté pour être sûr de ne pas être submergé de messages et pouvoir repérer les plus gros points à améliorer. J’ai donc choisi le forum de la SFML, la librairie utilisée pour mon jeu.

Recharger les pages d’un forum en attendant un commentaire est quelque chose de vraiment très excitant, car on ne sait pas si on va se prendre plein de commentaires négatifs ou bien au contraire, des avis positifs. Dans mon cas, ça a été assez positif, heureusement. Bon, mon jeu n’a captivé personne, mais au moins on l’a trouvé « mignon », « drôle », et c’est déjà très motivant pour la suite.

Par contre, j’ai dû faire face à de nouveaux bugs que je n’avais jamais eu mais qui apparaissaient chez les autres. Et c’est généralement très embêtant car si on manque de détails et qu’on ne peut rien tester directement, on doit chercher « à l’aveugle ». Et malheureusement, les gens nous aident rarement beaucoup car ils n’ont pas autant de temps à consacrer au jeu et ont déjà eu la « gentillesse » de tester.

Cette première démo m’aura permis de me remotiver pour la suite.

L’étape finale (bis)

Cette « dernière étape »aura duré presque un an de plus. Il n’y a pas grand-chose à dire sur cette partie, si ce n’est que j’ai réussi à garder la motivation, mais que c’était long. Toujours plus long. J’avais l’impression que je ne verrais jamais le bout de ce projet. Il a fallu que je me concentre vraiment pour terminer mes 300 PNJ, mes 19 cinématiques, et ajouter toutes les quêtes secondaires.

Mais j’ai réussi à obtenir une version terminée à montrer sur Internet. Cette fois, je ne me suis pas limité à un petit site : j’ai posté mon projet sur 6 forums différents, je l’ai montré à des amis, et j’ai amélioré le site Internet pour l’occasion. Du coup, les avis ont été beaucoup plus nombreux… même si j’en espérais quand même plus pour un projet de cette envergure. Sans doute ais-je fait des erreurs dans ma façon de présenter le projet. Peut-être ais-je mal choisi la période, je ne sais pas.

Premièrement, j’ai dû à nouveau faire face à des bugs, toujours plus de bugs. Et puis, il y a eu des améliorations à apporter qui m’étaient conseillées. Mais j’ai corrigé tout ça. Il y a quelques minutes (au moment où j’écris cet article), je viens de recevoir un nouveau message m’expliquant certains ralentissements… Je ne les ai jamais eu, je ne corrigerai sans doute jamais ça, parce qu’il faut bien mettre un terme un jour.

Mon seul regret dans ce projet aura été d’avoir fait ma plus grosse erreur : vouloir faire un jeu trop gros. Certes, j’avais diminué le contenu au début, mais malgré tout, il y avait toujours trop de contenu. Si le problème semble être que faire un jeu nécessitant beaucoup de contenu prend beaucoup de temps, il y a d’autres désavantages, que j’ai pu découvrir car je suis venu quand même à bout de toutes ces choses à ajouter. Le problème, c’est qu’une fois tout cela terminé, mon projet restait au final amateur, le gameplay n’était pas assez bien, le jeu pas assez agréable à jouer. Par conséquent, les joueurs s’arrêtent au début du jeu, et ignorent complètement 90% de celui-ci. Du temps perdu. Un conseil donc : si vous voulez faire un jeu à contenu, assurez-vous que le gameplay est très bien réalisé, et que le joueur aura réellement envie de continuer à jouer.

Je ne regrette pas d’avoir fait ce projet pourtant. Les commentaires n’ont pas été mauvais du tout. Visiblement, mon travail a été remarqué, et on m’a beaucoup félicité pour ça. Mon jeu est terminé, très complet, et résulte d’un travail de 3 ans. C’est pas rien, et je suis content que ça n’ait pas été oublié. J’ai même peut-être motivé un peu de jeunes programmeurs grâce à ça (mais n’exagérons pas quand même ^^) . Mon objectif était de finir quelque chose, à présent, c’est réussi.

Et grâce à ça, je peux enfin faire d’autres projets. J’ai gagné tout de même beaucoup d’expérience dans le domaine, et beaucoup de motivation, et ce n’est pas rien.