Bonjour à tous,

Voilà après avoir sorti mon premier petit projet de jeu sur Android (trouvable ici: http://bit.ly/1nY5oPK ), j'avais envie de partager un peu mes expériences sur le développement.

 

Intro

 

J'ai fait mon jeu avec le logiciel Construct 2 de Scirra. c'est un logiciel qui permet de simplifier le code pour faire des jeux en HTML5/JS. c'est-à-dire des jeux flash ou mobile. J'aurais pu coder directement mais je ne suis pas forcément le plus fort en JS, donc autant laisser de côté ceci

 

J'avais envie de faire un jeu sur mobile qui se joue de manière verticale. Mais comme toute personne qui apprend il faut d'abord copié ce qui à déjà marché (comme un joueur de musique qui va reprendre des morceaux). Donc quitte à choisir j'ai pris Flappy Bird, parce que c'est quelque chose de très simple.

 

 Les bases

 

Dans un FB-like il y a 3 éléments principaux:

- le personnage (Ici Chopperman)

- Les obstacles (les tonneaux)

- le sol

Par ordre Z (c'est à dire la profondeur) c'est le sol qui est en premier, puis le personnage et enfin les tonneaux.

 

On va indiquer qu'on veut que le personnage commence à tel hauteur, (mi-écran) et qu'a chaque instant, il va effectuer une rotation qui le fait pointer vers le sol.  Et qu'il se dirige vers le sol à une vitesse qui augmente au fur et à mesure (vitesse*0.2) de manière exponentielle.

Comme vous le voyez le personnage n'avance pas.

En effet c'est les obstacles et le sol qui bougent. Pour cela nous allons indiquer que la pile de  tonneaux du haut va être créee à un point précis (en dehors de l'écran) à une hauteur fixée aléatoirement entre telle et telle valeur. (@Vicporc voilà le seul élément procédurale)

la pile du tonneau du bas sera elle aussi créee mais en fonction de la position de la pile du haut. Cette événement je le répète chaque X secondes et je determine la vitesse de la pile en disant qu'a chaque instant il change de position en fonction de sa précédente position (Position-1).

Le sol et la pile ont le même concept : ils vont d'un point A à un point B, quand ils sont à B, ils sont détruits pour éviter la surcharge d'objets (optimisation de RAM) .

 

Le gameplay

Quand le joueur touche l'écran Chopperman est projeté sur une distance précise et orienté aussi précisément. Cela surplombe le fait qu'il tombe constamment.

S'il rentre en contact avec un tonneau, le fait qu'il tombe constamment surplombe le fait de sauter. Du coup chopperman ne peux plus sauter et s'écrase sur le sol.

Voilà c'est très simple, et ce sont les seuls règles à suivre pour faire un flappy bird, mais ce serait trop simpliste et il y a des éléments qu'il est important à prendre en compte pour améliorer l'expérience de jeu.

 

Tips and Tricks

 

Bon il y a certains trucs basiques à ajouter comme les bruit à chaque fois que chopper vole ou qu'il se cogne (en plus d'un effet de flash qui dure 0.1 sec). Ou encore le score auquel on ajoute 1 à chaque fois que chopper dépasse une pile. Il faut aussi animer chopperman, faire bouger sa cape et sa phase de standby, prendre en compte le High-score etc...

Le truc que j'ai appris en faisant ce jeu c'est que si le décor ne bouge pas l'impression de mouvement du personnage s'en retrouve grandement affecté (en gros il fait du sur-place mais il ne faut pas donner cette impression). Donc pour cela il faut donner l'impression  que le décor bouge.

Pour cela j'ai ajouté des nuages qui se déplacent à des vitesse différentes. Les effets de vagues aussi sont traités de cette manière, sauf qu'il est important de réduire la vitesse et la taille du sprite  en fonction de la distance du décor.

 

Conclusion

Bref si vous voulez savoir j'ai fait les bases et le gameplay en 2 jours, (pour indiquer à quel point c'était simple) mais tout ce qui est l'amélioration de l'expérience joueur à duré beaucoup plus longtemps (3 semaines), j'ai fait tester à des potes, pour savoir comment il le trouvais , comment je pouvais l'améliorer etc... La majorité du travail que j'ai fait était plus en rapport avec l'esthétique et les fonctionnalités qui n'ont rien à voir avec le coeur du gameplay.