{"id":234,"date":"2010-02-16T19:51:32","date_gmt":"2010-02-16T18:51:32","guid":{"rendered":"http:\/\/conquerirlemonde.com\/blog\/?p=234"},"modified":"2010-02-21T16:25:50","modified_gmt":"2010-02-21T15:25:50","slug":"erreur-classique-n%c2%b010-le-plantage-post-proto","status":"publish","type":"post","link":"https:\/\/conquerirlemonde.com\/blog\/2010\/02\/16\/erreur-classique-n%c2%b010-le-plantage-post-proto\/","title":{"rendered":"Erreur classique n\u00b010: le plantage post-proto"},"content":{"rendered":"<p><center><a href=\"https:\/\/conquerirlemonde.com\/blog\/wp-content\/uploads\/2010\/02\/fail.jpg\"><img loading=\"lazy\" src=\"https:\/\/conquerirlemonde.com\/blog\/wp-content\/uploads\/2010\/02\/fail.jpg\" alt=\"\" title=\"fail\" width=\"540\" height=\"261\" class=\"aligncenter size-full wp-image-321\" srcset=\"https:\/\/conquerirlemonde.com\/blog\/wp-content\/uploads\/2010\/02\/fail.jpg 540w, https:\/\/conquerirlemonde.com\/blog\/wp-content\/uploads\/2010\/02\/fail-300x145.jpg 300w\" sizes=\"(max-width: 540px) 100vw, 540px\" \/><\/a><\/center><\/p>\n<p>D&rsquo;apr\u00e8s une \u00e9tude pas du tout objective (juste une impression en fait&#8230;), il semblerait qu&rsquo;il y ait deux moments critiques dans la vie des projets amateurs, deux moments o\u00f9 la plupart des projets se plantent.<\/p>\n<p>Le premier moment, c&rsquo;est juste au d\u00e9but, quand le projet est vraiment foireux et que la bande de coll\u00e9giens qui voulait faire un \u00ab\u00a0WOW en mieux\u00a0\u00bb clashe parce qu&rsquo;ils ne sont pas d&rsquo;accords sur la couleur des poils des loup-garous qui seront pr\u00e9sents dans le jeu.<br \/>\n\u00c7a, c&rsquo;est classique, on l&rsquo;a d\u00e9j\u00e0 abord\u00e9.<\/p>\n<p>Le deuxi\u00e8me moment est plus \u00e9trange, on voit le projet avancer, des screenshots arrivent, c&rsquo;est jouable, il y a m\u00eame un prototype, une petite communaut\u00e9 qui se cr\u00e9e et soudain \u00ab\u00a0pouf\u00a0\u00bb&#8230; le projet s&rsquo;arr\u00eate: soit d&rsquo;un coup avec une annonce, soit il ne donne plus signe de vie et dispara\u00eet \u00e0 petit feu.<\/p>\n<p>Je me suis donc demand\u00e9 pourquoi. Surtout que c&rsquo;est un probl\u00e8me qui m&rsquo;est d\u00e9j\u00e0 arriv\u00e9 plusieurs fois.<\/p>\n<p>Voici donc les principales causes selon moi:<\/p>\n<p><strong><u>1. Trop de diff\u00e9rences par rapport \u00e0 ce qui \u00e9tait souhait\u00e9 :<\/u><\/strong><\/p>\n<p>C&rsquo;est ce qui arrive quand on a pass\u00e9 beaucoup de temps pour atteindre le prototype et que l&rsquo;on se rend compte qu&rsquo;il reste encore \u00e9norm\u00e9ment de chemin pour atteindre ce que l&rsquo;on souhaitait au d\u00e9but. Si le d\u00e9veloppement a d\u00e9j\u00e0 pris plusieurs ann\u00e9es et que l&rsquo;on se rend compte qu&rsquo;il reste encore plusieurs ann\u00e9es devant soi, \u00e7a d\u00e9courage.<\/p>\n<p><em>Solution:<\/em> faire des projets plus simples<\/p>\n<p><strong><u>2. \u00ab\u00a0Les autres 90%\u00a0\u00bb :<\/u><\/strong><\/p>\n<p>En d\u00e9veloppement informatique, on dit qu&rsquo;une fois les premiers 90% du logiciel d\u00e9velopp\u00e9s, il ne reste plus qu&rsquo;\u00e0 faire les \u00ab\u00a0autres\u00a0\u00bb 90%.<br \/>\nCela a un m\u00eame un nom, la r\u00e8gle des 90-90 : <a href=\"http:\/\/en.wikipedia.org\/wiki\/Ninety-ninety_rule\">http:\/\/en.wikipedia.org\/wiki\/Ninety-ninety_rule<\/a>.<\/p>\n<p>En fait, cela vient de l&rsquo;impression d&rsquo;avancer tr\u00e8s vite au d\u00e9but et de faire du sur place vers la fin.<br \/>\nPar exemple pour un projet de jeu vid\u00e9o, on met en place Ogre pour avoir un moteur 3d qui marche, on a un d\u00e9but de gameplay, etc&#8230; Ce qui fait qu&rsquo;on progresse tr\u00e8s vite au d\u00e9but. Au bout d&rsquo;un moment, il ne reste plus que les d\u00e9tails&#8230; en gros \u00e9quilibrer le gameplay, faire les menus, les options, l&rsquo;aide en ligne, paufiner l&rsquo;IA, enlever le lag du jeu en r\u00e9seau, d\u00e9bugger, traduire les textes en anglais, etc&#8230; Presque rien quoi&#8230; (ce que l&rsquo;on appelle le polishing).<\/p>\n<p>Sauf qu&rsquo;en fait, en cumulant tous les \u00ab\u00a0petits d\u00e9tails\u00a0\u00bb de ce genre, cela prend autant de temps (sinon plus) que tout ce qui a \u00e9t\u00e9 fait avant.<\/p>\n<p>Ceci provoque tout un tas de d\u00e9sagr\u00e9ments: <\/p>\n<ul>\n<li> On a l&rsquo;impression de ne plus avancer car les r\u00e9sultats des changements sont minimes<\/li>\n<li> On ne voit pas la fin du projet car il y a toujours quelque chose \u00e0 modifier<\/li>\n<li> C&rsquo;est un travail ennuyeux<\/li>\n<li> Il n&rsquo;y a plus de cr\u00e9ativit\u00e9, plus de challenge, ce n&rsquo;est que du travail \u00ab\u00a0idiot\u00a0\u00bb<\/li>\n<li> Quand on voit tout ce qu&rsquo;il reste \u00e0 faire, on a plus envie de le faire<\/li>\n<\/ul>\n<p><em>Solution :<\/em> simplifier le projet, anticiper ces \u00e9tapes <\/p>\n<p><strong><u>3. Le contenu :<\/u><\/strong><\/p>\n<p>Faire un proto avec une map de test, c&rsquo;est marrant.<br \/>\nFaire des niveaux ou des graphismes \u00e0 la cha\u00eene, c&rsquo;est moins marrant&#8230; \u00e7a peut m\u00eame \u00eatre lassant, voire d\u00e9courageant.<\/p>\n<p><em>Solution :<\/em> \u00e9viter les jeux \u00e0 contenu, ou avoir quelqu&rsquo;un qui aime bien faire \u00e7a dans l&rsquo;\u00e9quipe.<\/p>\n<p><strong><u>4. La sensation \u00ab\u00a0d&rsquo;avoir atteint sa vision\u00a0\u00bb :<\/u><\/strong><\/p>\n<p>Quand on veut cr\u00e9er un jeu amateur, on a plein d&rsquo;images en t\u00eate sur ce \u00e0 quoi \u00e7a ressemblera quand \u00e7a sera fini.<br \/>\nLe truc, c&rsquo;est que lorsqu&rsquo;on atteint le proto et que celui-ci est conforme aux attentes, on se dit \u00ab\u00a0ouais, \u00e7a marche, j&rsquo;ai enfin r\u00e9ussi ce que je voulais faire\u00a0\u00bb.<br \/>\nComme on fait abstraction des d\u00e9tails qui manquent (les autres 90%) et qui peuvent attendre, on a l&rsquo;impression d&rsquo;avoir atteint sa vision et on rel\u00e2che les efforts.<br \/>\nEt l\u00e0&#8230; c&rsquo;est le drame, on perd le momentum (= la lanc\u00e9e qu&rsquo;on avait) et c&rsquo;est tr\u00e8s dur de le r\u00e9cup\u00e9rer.<\/p>\n<p><em>Solution :<\/em> anticiper cette sensation pour redoubler d&rsquo;efforts \u00e0 ce moment l\u00e0<\/p>\n<p><strong><u>5. Les probl\u00e8mes techniques non anticip\u00e9s :<\/u><\/strong><\/p>\n<p>Quand on est tout seul sur son projet, tout va \u00e0 peu pr\u00e8s bien.<br \/>\nQuand on commence \u00e0 avoir des joueurs, il faut g\u00e9rer plein de choses suppl\u00e9mentaires:<\/p>\n<ul>\n<li> les probl\u00e8mes de configuration et de compatibilit\u00e9 (syst\u00e8me d&rsquo;exploitation, drivers&#8230;)<\/li>\n<li> les probl\u00e8mes de taille d&rsquo;\u00e9cran<\/li>\n<li> les probl\u00e8mes de lag pour le jeu sur internet<\/li>\n<li> les probl\u00e8mes de scalabilit\u00e9 quand le jeu est trop gourmand niveau serveur<\/li>\n<li> etc.<\/li>\n<\/ul>\n<p>Tout cela d\u00e9motive car on doit r\u00e9gler les probl\u00e8mes des autres que l&rsquo;on a pas chez soi, ils sont souvent inattendus et ne font pas progresser le jeu d&rsquo;un point de vue cr\u00e9atif. <\/p>\n<p>On rajoute \u00e0 cela tous les probl\u00e8mes techniques li\u00e9s \u00e0 l&rsquo;apprentissage de technos diff\u00e9rentes (rendu graphique, moteur physique, IA, etc.), ce qui allonge la liste de toutes les choses \u00e0 r\u00e9gler.<\/p>\n<p><em>Solution :<\/em> ne pas avoir de projets sur lesquels il faut apprendre trop de choses techniques en m\u00eame temps, \u00e7a limitera les surprises.<\/p>\n<p><strong><u>6. La diff\u00e9rence de qualit\u00e9 :<\/u><\/strong><\/p>\n<p>Si le projet est cons\u00e9quent, on apprend beaucoup au cours de son d\u00e9veloppement. Le probl\u00e8me est que la diff\u00e9rence de qualit\u00e9 entre ce qui a \u00e9t\u00e9 fait au d\u00e9but et maintenant (qualit\u00e9 des graphismes, des maps, du code, etc.) est parfois telle que le jeu est devenu beaucoup trop in\u00e9gal.<br \/>\nComme continuer sur une base instable n&rsquo;est pas une bonne id\u00e9e, g\u00e9n\u00e9ralement soit le projet est recommenc\u00e9 du d\u00e9but \u00ab\u00a0en plus propre\u00a0\u00bb, soit abandonn\u00e9 au profit d&rsquo;un autre projet.<\/p>\n<p><em>Solution :<\/em> privil\u00e9gier les projets courts, surtout si ce projet sert d&rsquo;apprentissage<\/p>\n<p><strong><u>7. Les engueulades dans l&rsquo;\u00e9quipe :<\/u><\/strong><\/p>\n<p>Si le projet commence \u00e0 avoir du potentiel, il arrive que l&rsquo;\u00e9quipe se d\u00e9chire pour divergences d&rsquo;opinions. Soit parce que certains veulent avoir une plus grosse part du g\u00e2teau que pr\u00e9vu, soit parce que rien n&rsquo;a \u00e9t\u00e9 pr\u00e9vu et que chacun a sa propre vision de ce que le jeu pourrait lui rapporter&#8230;<\/p>\n<p>Une autre raison peut \u00eatre un d\u00e9saccord sur l&rsquo;objectif r\u00e9el du jeu (gratuit, open source, payant, etc.) ou de son style graphique une fois un proto technique r\u00e9alis\u00e9.<\/p>\n<p><em>Solution:<\/em> bien d\u00e9finir les r\u00f4les et pr\u00e9voir un accord \u00e0 l&rsquo;avance avant de s&rsquo;engager avec quelqu&rsquo;un, notamment sur la propri\u00e9t\u00e9 des \u00e9l\u00e9ments r\u00e9alis\u00e9s en cas de d\u00e9part de la personne.<\/p>\n<p><strong><u>8. Le d\u00e9part des membres qualifi\u00e9s :<\/u><\/strong><\/p>\n<p>Si l&rsquo;\u00e9quipe est compos\u00e9e de personnes comp\u00e9tentes et que le projet commence \u00e0 se faire conna\u00eetre, celles ci vont s\u00fbrement avoir des propositions r\u00e9mun\u00e9r\u00e9es pour leur talent&#8230; A ce moment l\u00e0, il sera dur de les garder pour un jeu amateur&#8230; <\/p>\n<p>De plus, les nouveaux qui pourraient \u00eatre recrut\u00e9s pour les remplacer risquent d&rsquo;\u00eatre largu\u00e9s.<\/p>\n<p><em>Solution:<\/em> avoir des projets courts, particuli\u00e8rement s&rsquo;ils sont b\u00e9n\u00e9voles. Si le projet est \u00e0 vis\u00e9e commerciale, l&rsquo;objectif est d&rsquo;\u00eatre rentable rapidement pour pouvoir payer l&rsquo;\u00e9quipe. <\/p>\n<p><strong><u>9. Le nouveau super projet qui est vachement mieux que l&rsquo;actuel :<\/u><\/strong><\/p>\n<p>Ben oui, vous avez une super nouvelle id\u00e9e qui est vachement mieux que le projet actuel. Et puis de toute fa\u00e7on votre code il est pas beau, il faudrait le rendre plus flexible. Et puis il y a ce nouveau moteur 3D qui a l&rsquo;air bien mieux que Ogre\/Irrlicht\/Unity\/Whatever. Quoique vous avez vu un tuto sur \u00ab\u00a0comment cr\u00e9er son propre moteur 3D\u00a0\u00bb et \u00e7a a pas l&rsquo;air si compliqu\u00e9 que \u00e7a en fait&#8230;<\/p>\n<p>De plus, c&rsquo;est \u00e0 ce moment que vous allez voir tous les d\u00e9fauts du projet actuel. Il est pas assez ceci, un peu trop cela&#8230; et au final, est-ce que \u00e7a vaut vraiment le coup de le finir ?<\/p>\n<p><em>Solution :<\/em> Savoir se fixer sur un projet. Pas toujours facile. Cela d\u00e9pend aussi de vos objectifs: apprendre ou finir un projet ?<\/p>\n<p><strong><u>10. \u00catre un concepteur et non un r\u00e9alisateur :<\/u><\/strong><\/p>\n<p>Certaines personnes sont tr\u00e8s bonnes pour concevoir des projets, \u00e9laborer la strat\u00e9gie, les diff\u00e9rents \u00e9l\u00e9ments du concept, etc.<br \/>\nD&rsquo;autres personnes sont tr\u00e8s bonnes pour les r\u00e9aliser, passer au concret, appliquer les strat\u00e9gies.<\/p>\n<p>\u00catre les deux en m\u00eame temps n&rsquo;est pas toujours facile.<\/p>\n<p><em>Solution :<\/em> \u00eatre les deux, ou trouver les personnes qui vous compl\u00e8tent<\/p>\n<p><strong><u>Conclusion :<\/u><\/strong><br \/>\nTout ceci peut \u00eatre chang\u00e9 par des facteurs aggravants :<\/p>\n<p>&#8211; \u00catre sur plusieurs projets en m\u00eame temps (\u00e0 \u00e9viter au maximum car un projet va toujours prendre le dessus sur un autre)<br \/>\n&#8211; Complexit\u00e9 du projet<br \/>\n&#8211; Facteurs externes qui jouent sur le moral<\/p>\n<p>Si je devais r\u00e9sumer, la plupart des causes viennent de la complexit\u00e9 du projet. Donc :<\/p>\n<ul>\n<li>Fa\u00eetes court<\/li>\n<li>Fa\u00eetes simple<\/li>\n<li>Cr\u00e9ez un momentum pour bosser d&rsquo;une traite sur le jeu et qu&rsquo;il n&rsquo;y ait pas de temps morts, surtout si vous \u00eates une \u00e9quipe<\/li>\n<li>M\u00e9fiez vous de l&rsquo;impression d&rsquo;aller super vite au d\u00e9but<\/li>\n<li>Une fois fini, recommencez en augmentant l\u00e9g\u00e8rement la difficult\u00e9<\/li>\n<\/ul>\n<p>Et vous, pour quelles raisons votre projet a plant\u00e9 apr\u00e8s le proto ?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>D&rsquo;apr\u00e8s une \u00e9tude pas du tout objective (juste une impression en fait&#8230;), il semblerait qu&rsquo;il y ait deux moments critiques dans la vie des projets amateurs, deux moments o\u00f9 la plupart des projets se plantent. Le premier moment, c&rsquo;est juste au d\u00e9but, quand le projet est vraiment foireux et que la bande de coll\u00e9giens qui [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":[],"categories":[4,18],"tags":[],"_links":{"self":[{"href":"https:\/\/conquerirlemonde.com\/blog\/wp-json\/wp\/v2\/posts\/234"}],"collection":[{"href":"https:\/\/conquerirlemonde.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/conquerirlemonde.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/conquerirlemonde.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/conquerirlemonde.com\/blog\/wp-json\/wp\/v2\/comments?post=234"}],"version-history":[{"count":49,"href":"https:\/\/conquerirlemonde.com\/blog\/wp-json\/wp\/v2\/posts\/234\/revisions"}],"predecessor-version":[{"id":322,"href":"https:\/\/conquerirlemonde.com\/blog\/wp-json\/wp\/v2\/posts\/234\/revisions\/322"}],"wp:attachment":[{"href":"https:\/\/conquerirlemonde.com\/blog\/wp-json\/wp\/v2\/media?parent=234"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/conquerirlemonde.com\/blog\/wp-json\/wp\/v2\/categories?post=234"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/conquerirlemonde.com\/blog\/wp-json\/wp\/v2\/tags?post=234"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}