Game Jam
Là où tout a commencéLors d'une fête organisée chez des amis, j'ai eu la chance de rencontrer des membres de l'association Extra Coin avec qui j'ai pu discuter développement, jeux vidéo.
Ils m'ont présenté un évènement que je ne connaissais pas : une Game Jam.
Ce que j'avais retenu à cet instant, en substance, c'était qu'il s'agissait d'un rassemblement de personnes aux profils différents ayant pour objectif la création de jeux vidéo autour d'un thème imposé et dans un temps limité.
Développeur un peu enfermé dans les langages du web, je ne pensais pas avoir ma place.
Ils ont tenu à me rassurer tout de suite : chacun y a sa place, débutants, confirmés, passionnés, curieux.
Tout le monde peut apporter sa contribution ne serait-ce qu'au travers des idées de jeux.
J'ai gardé précieusement les infos sous le coude, les contacts et j'ai commencé à réfléchir à l'éventualité d'y participer.
Contact est repris mi-août pour le BBQ Game Jam prévu à la fin du mois.
J'envisageais plusieurs cas, notamment le fait de me retrouver seul par peur d'être un frein pour une équipe.
Je me suis mis à réfléchir à des idées de jeu pour avoir une piste sur laquelle démarrer.
Autre problème : quel langage utiliser ? J'ai eu envie de partir sur un jeu Android, alors j'ai commencé à faire du JAVA.
Heureusement, j'ai retrouvé du monde sur place et nous avons fait un jeu ensemble.
Le travail en équipe était nouveau pour moi. Mais grâce à leur bonne humeur et leur simplicité, j'ai très vite mis de côté mes peurs et mes doutes.
Je me suis senti capable de remplir ma mission : faire un jeu en équipe en m'amusant et en apprenant.
De cette collaboration est né DiscoStar vs TaxInspector Haunted Karaoke Edition, un petit jeu fait en 24h.

1ère Version
Que faire après la Game Jam ?Début septembre, une fois reposé et l'euphorie de l'évènement passée, il était temps pour moi de réfléchir à une éventuelle suite à donner à cette expérience.
Est-ce que j'allais reprendre mes habitudes ? Est-ce que mes idées pouvaient être transformées en jeux ?
De toutes les idées, celle qui revenait le plus souvent à moi était ce qui deviendra DualRUN.
Le concept de base était de faire un runner. Cette catégorie est déjà fortement représentée avec de très bons jeux. Je voulais aller un peu plus loin en proposant le contrôle de 2 personnages à la fois.
J'ai pris le parti très tôt de faire un jeu avec vue du dessus avec une génération aléatoire des pistes.

Cette image représente la toute première version du jeu. On peut voir un décor de fond très simple, un vaisseau très sommaire et une piste qui donne la nausée.
Le décor est épuré et permet de voir le scrolling.
Le vaisseau est très simple, c'est juste pour faire un prototype du jeu et mettre en place les sprites puis les collisions.
La piste est constituée de sections transparentes pour voir le décors qui se trouve en dessous. L'alternance de couleur est destinée à vérifier que la piste est bien en mouvement.
La collision est déjà en place, bien que très rudimentaire.
Je suis alors confronté à mon premier problème : comment faire pour que la piste ne soit pas qu'une simple ligne droite ?
Je suis parti sur une idée qui s'est avérée être une horreur à gérer : faire des sections de pistes comme celle de l'image incluant le mur de gauche et de droite.
Pour chaque mur il fallait gérer :
- élargissement de la piste
- rétrécissement de la piste
- conservation de la position du mur
Soit au total 53 sections à faire, en tenant compte des dimensions mini et maxi de la piste.
Je devais vraiment faire une réflexion plus poussée sur ce que je comptais faire du jeu et comment y arriver.
Brainstorming
Repenser ce qui n'a pas été penséMi-septembre, je me pose pour réfléchir à différents points.
Entre autres :
- Comment enchainer les différents décors ?
- Comment faire varier la piste ?
- Comment gérer les collisions ?
- Comment monétiser le jeu ?
- Comment aider le joueur dans sa partie ?
- Comment compter le score ?
Pour les décors, je suis parti sur une table de compatibilité pour gérer les transitions :
Chaque image est compatible bord à bord avec 1 à n images, ce qui me permet de garder des transitions cohérentes et varier la vue sous la piste.
Pour les pistes, j'ai découpé les sections en 3 :
- Mur gauche
- Mur droit
- Section centrale
A ce stade,
- le décor bouge
- le vaisseau entre en collision avec les murs
- la piste change de manière aléatoire en respectant les compatibilités, mais il n'y a pour chaque mur que 3 possibilités : | / ou \.
Les pistes étaient alors très pointues, les collisions mal gérées, mais le jeu est jouable.
La question de la monétisation du jeu m'a posé des soucis. Version payante ? Bannière publicitaire ? Achats in-app ?
Je suis parti sur les achats in-app, car je n'aime pas les bannières publicitaires et j'aime me dire que le plus grand nombre pourra jouer à mon jeu sans forcément dépenser d'argent.

J'aime bien ramasser un bonus dans un jeu, quelque chose qui va me servir, m'aider dans ma partie.
J'en ai donc mis quelques-uns à disposition :
- Bonus de point (obsolète)
- Bonus d'invisibilité permettant de passer à travers les murs
- Bonus de rétrécissement pour aider à la maniabilité
- Bonus d'accélération pour se déplacer plus vite
- Malus de perturbation, le déplacement du vaisseau est erratique (obsolète)
- Malus d'obstacle, un objet type mur sur la route (obsolète)
Dans cette version, il y a la distance et un score comme repère pour le joueur.
Le score est fonction de la distance et de ce que le joueur ramasse.
Le joueur amasse des étoiles qui sont transformées en diamants (100 étoiles = 1 diamant) utilisés pour les achats in-app.
Début octobre, je commence à inviter du monde pour tester.
Alpha Test
L'importance des tests et retours
Dans cette réflexion, je suis seul. Alors j'ai décidé de faire appel autour de moi à quelques personnes pour tester et me faire des retours.
Avant de leur montrer la première version de test, j'ai mis en place ce que je venais d'envisager.
Amis et familles se sont prêtés au jeu du test, et les retours que j'ai eu m'ont bien aidé.
Ce qui me semble important c'est de tenir compte des retours et de faire le tri pour avoir ce qu'il y a de mieux pour le jeu.
J'avais pour objectif de récolter des retours de bugs et les corriger tout en ajoutant des choses au jeu.
Au final, j'ai eu la chance d'avoir beaucoup de propositions d'amélioration.
De nombreuses réflexions m'ont permis d'ajuster la difficulté du jeu, de faire du ménage dans les bonus/malus et d'en ajouter de nouveaux.
La monnaie a été simplifiée pour ne conserver que les étoiles. Trop de confusion liée à la double monnaie nous a incité à modifier la donne.
En parallèle, je prenais un peu confiance en moi, j'expérimentais des choses, j'ajoutais de nouvelles fonctionnalités avec plus ou moins de succès mais surtout je me suis amusé à le faire.
Par exemple, chaque vaisseau a une forme différente. Une zone d'impact spécifique qui épouse les contours du vaisseau était nécessaire.
Ceci m'a obligé à modifier ma gestion de collision avec les murs, mais au moins c'est plus précis.
La piste courbe a eu du succès auprès des testeurs. Il y avait plus de variation, ce qui a aussi apporté un peu de challenge.
Ecouter les avis, les demandes, est aussi un sacré challenge. Tout n'est pas à conserver mais tout est à considérer.
J'aurais bien aimé avoir plus de testeurs pour avoir plus de retours. Mais ceux que j'ai eu m'ont déjà beaucoup aidé.
Un énorme merci à tous ceux qui m'ont supporté !!

Conclusion
Mais ce n'est que le débutParticiper à ce BBQ Game Jam a été une très belle opportunité.
Ce que je retiens plus particulièrement, c'est le côté communautaire, partage de l'évènement.
Je n'ai pas senti la moindre compétition, les gens ont accepté de tester les jeux des collègues pour donner un avis.
J'ai aussi pu apprendre beaucoup sur moi, mes relations avec les gens, le travail en équipe.
Il a été un déclic pour la création de DualRUN et je ne peux que recommander à tout le monde de participer à une Game Jam.
Quand on ne connait pas, qu'on n'a encore jamais participé, on se dit qu'on ne peut pas y arriver, qu'on n'a pas ce qu'il faut pour faire un jeu.
Il suffit de se demander ce qu'il faut pour faire un jeu et on trouve alors sa place :
- Game Design (règle, mécanique du jeu)
- Level Design (création des niveaux ou cartes du jeu)
- Sound Design (Création de musiques/bruitages)
- Graphisme (Faire les graphismes du jeu)
- Développement (programmer le jeu)
Pas besoin d'être le meilleur, juste d'être passionné et de faire ce qu'il vous plait.
Alors, ça ne vous tente toujours pas ?
Questions
Quelques questions qui trouvent réponsesQuels ont été tes choix techno, par exemple Android, avec ou sans framework ? Quelles versions d'Android sont supportées ? As-tu rencontré des problèmes techniques avec Android ?
Ayant à ma dispositions plusieurs appareils Android, j'ai voulu développer sur cette plateforme.
N'ayant jamais fait de JAVA, j'ai du apprendre les bases du langage et de la création de jeu en 15 jours pour pouvoir commencer le BBQ Game Jam.
J'ai hésité entre l'utilisation d'un framework ou de partir de zéro.
Voulant apprendre comment les choses fonctionnent, j'ai décidé de partir de zéro.
J'avais ensuite le choix entre Opengl et les Canvas.
Ayant eu trop peu de temps pour pouvoir appréhender Opengl, je me suis dirigé vers un Canvas.
Android est un écosystème fragmenté :
- Versions d'android
- Résolutions
- CPU / RAM
Dans mon cas, le jeu accepte plus de 99% des versions d'Android (à partir de 2.3)
L'affichage est en 16/9ème au format paysage centré si besoin.
La mémoire par contre est un sujet plus délicat. En gros, Android autorise une certaine quantité de mémoire utilisable par application.
Dans le cas des Canvas, les images sont comptées dans cette quantité de mémoire ce qui est une limite non négligeable, alors qu'en Opengl, ce n'est pas le cas.Je pense que c'est un de mes principaux problèmes rencontrés.
Comment as-tu procédé pour les graphismes et la musique ?
Entre les versions, il y a eu de nombreuses évolutions graphiques. Je pense notamment à l'interface et aux véhicules.
Tout d'abord le jeu est composé de plusieurs couches :
- le décor de fond
- des éléments flottants sous la piste comme des nuages
- la piste en elle-même
- les sprites (vaisseaux, bonus, étoiles)
Dans les premières versions, je me suis occupé de faire des prototypes pour visualiser. N'étant pas graphiste, il me fallait trouver de l'aide dans mon entourage ou sur le net.
Ne connaissant personne de disponible, je me suis dirigé vers le net.
J'ai donc acheté des licences d'exploitation commerciale pour l'interface et les vaisseaux. Il est important de respecter la propriété des auteurs et il existe de nombreux sites proposant des kits très abordables (comme GameArt 2D) ou gratuits (comme Kenney NL sous licence CC0).
Les décors et les pistes sont encore fait par moi-même en utilisant les ressources acquises.
Un jeu a besoin d'une ambiance sonore, une bande son, des bruitages. La problématique est la même : le respect des licences.
Ayant rencontré un musicien lors du BBQ Game Jam, je me suis naturellement dirigé vers lui et je tiens à le remercier pour son travail (SoundCloud).
Les bruitages ont été générés avec le logiciel bfxr.
Est-ce que ton level design est complètement génératif ?
Les pistes sont, actuellement, générées à 100% en automatique.
Evidemment, il était nécessaire d'avoir une certaine cohérence, ce qui a été rendu possible par les tables de compatibilité.
D'autres règles sont là aussi pour gérer la faisabilité de la piste comme la largeur mini.
A un certain stade, j'ai envisagé la création de pistes toutes faites, j'ai gardé l'idée sous le coude.
C'est un mode de fonctionnement totalement différent, qui nécessite beaucoup de level design.
L'autre possibilité, c'est de générer des portions de piste et de les assembler.
Le level design est moins important et on garde un côté aléatoire contrôlé.
Quelle a été pour toi la partie la plus difficile de ton projet ?
Plusieurs points ont été problématiques. Le premier a été de me décider à commencer le développement du jeu.
J'ai dû prendre confiance en moi me dire que je pouvais faire un jeu seul, et que ce jeu pouvait plaire à des gens. J'ai dû faire un véritable travail sur moi-même.
La phase de réflexion a été délicate, sans confrontation d'idée, il est difficile de se remettre en question.
Je pense que sans mes testeurs, ayant tout fait seul, je n'aurais pas pu évoluer.
Certaines parties m'ont posé problème comme la gestion de la piste avec des courbes ou comment gérer les écrans avec un ratio différent de 16/9ème.
Là, une fois de plus, ces choses n'ayant pas été pensées au début, j'ai eu quelques difficultés.



