Trente-six heures, trois personnes, un blob
Cherry Jelly est né à l’occasion d’une Game Jam : fabriquer un jeu complet en trente-six heures, à trois.
Tout ça pour travailler ensemble sur un même projet, découvrir un moteur, sans se marcher dessus, tout en se créant des briques le plus rapidement possible.
Le pitch ?
Vous incarnez un petit blob issu d’une expérience alchimique, qui tente désespérément de s’échapper d’un château sombre et obscur.
L’équipe :
- Alexandre “Papin”, dev gameplay : collisions, wall-jump, sprint, animations du blob.
- Sylvain “AmateraZZu”, level design, game design, intégration.
- Cédric (moi), dev principal, art, sons, level design.
Une jam de club étudiant
La jam vient du club Pixel, un club étudiant qu’on a monté en 2012 à l’ISIMA, notre école d’ingénieur. Le club existe toujours et continue de faire des jams. Cherry Jelly, c’est l’une de ces sessions.
Au club, depuis le début, pas mal d’équipes donnent des noms de MANGER à leurs jeux.
Cherry Jelly, pour une petite boule qui rebondit partout… Ça collait bien !
Pourquoi un platformer, pourquoi un blob
On est parti sur un jeu de plateforme parce que c’est ce qu’il y a de plus rapide à monter avec Godot.
En très peu de temps, on a un moteur de base : je saute, je me déplace. C’est pour ça aussi qu’on a choisi un blob. Le minimum d’animation, le minimum de graphisme. (Bah oui, pas de bras, pas de chocolat !)
Comment avoir un prototype fonctionnel le plus vite possible, un truc dans lequel je peux sauter et me déplacer ? Un blob sur des carrés et … Voilà.
Le blob, c’est un peu une gimmick chez moi. Je l’ai utilisé dans pas mal de jams. C’est une petite référence au Poring de Ragnarok Online, cette petite boule rose qui rebondit partout.
Ça m’amuse à chaque fois, et ça se prête bien à un platformer.
![]()
Le wall-jump, on le voulait dès le départ. C’est pas le plus simple à coder, mais on voulait les gimmicks d’un vrai platformer. En gros, un seul script GDScript d’une centaine de lignes qui gère tout : gravité, détection de mur, rebond, animation. Le blob touche un mur en l’air, il se colle, le sprite pivote, et hop, on repart dans l’autre sens.
On l’a implémenté à une heure du mat’ parce qu’il nous le fallait pour le niveau 8.
Oui, on avait encore pas mal d’idées pour changer les mécaniques du jeu en s’appuyant sur la physique et les éléments (feu, glace, vent …), mais 36h, ça défile hyper (hyper) vite.
Le cadavre exquis
On s’est séparé les fonctionnalités.
Un qui code le saut, un autre les checkpoints, un autre qui pond des niveaux (voire plusieurs en même temps sur les niveaux). Chacun fait ses bouts qu’on assemble comme des pièces de puzzle. Pareil pour le graphisme et le son, chacun a pris ce qu’il avait envie de faire.
Côté merge, on était sur du trunk-based git, avec une synchro toutes les deux heures au sein de l’équipe pour savoir où on en était, comment on allait fusionner tout ça, et ce que chacun pouvait amener.
À chaque étape, on ajoute des briques que les autres peuvent récupérer pour créer des niveaux.
Des premiers bouts de graphisme, les gens piochent dedans et ajoutent des morceaux au fur et à mesure. Une sorte de cadavre exquis. On a toujours un truc jouable, et ça s’améliore de passe en passe.
Un extrait de la timeline git :
- 09h, init de Godot, premiers sprites du blob
- 13h, animations, spriteframes, premiers assets graphiques
- 15h, collisions, sons, tileset, niveaux 1 à 3. Du coup les autres peuvent taper dedans et construire des niveaux
- 18h, lumières dynamiques, engrenages décoratifs, fix merge
- 21h, six niveaux jouables, checkpoints, plateformes mobiles
- 00h, sprint, wall-jump, boss level avec l’ombre
- 03h, niveaux 9 et 10, chrono, compteur de morts, fades
- 09h, animation de victoire, splash, particules
- 11h, menu titre, écran de fin, build final
Le commit le plus honnête : “Fix le putain de repo pété !!” à 17h50. Un grand classique de jam.
Une fois que le jeu tient debout, on a un coffre à jouets dans lequel chacun pioche. Les gouttes d’eau qui tombent, les rouages qui tournent en arrière-plan, les lumières dynamiques, ce sont des petits bonus que chacun a posé dans les niveaux quand il avait cinq minutes. Ça ne change rien au gameplay, mais ça donne vie aux décors. Et puis on a ajouté la mort, les checkpoints, le respawn, tout ce qui transforme un prototype en jeu qu’on peut vraiment parcourir.
La difficulté, niveau par niveau
On a testé chaque niveau indépendamment, puis on les a assemblés en se demandant ce qui était plus ou moins facile, plus ou moins dur.
Quand quelqu’un en bavait vraiment beaucoup, on allégeait.
Par contre, l’idée c’est qu’on ne posait pas de veto sur les briques que chacun avait faites. Même si un morceau n’était pas tout à fait à son goût, pas grave, on l’intégrait quand même. C’est ça qui était cool.
(oui on pense toi bout de niveau qui nous fait faire le saut de l’ange…)
L’ambiance visuelle
On est parti sur quelque chose d’extrêmement simple à déployer : un environnement sombre, des cases géométriques. C’est pour ça qu’on ne fait pas du pixel art. Dans un niveau, on prend un bout d’asset qu’on a déformé dans tous les sens pour pouvoir le réutiliser un peu partout. On étire, on tourne, on scale, et ça donne des variations sans avoir à tout redessiner. Il n’y a qu’une seule branche d’épine dans tout le jeu. Après, c’est un composant godot avec ses collisions qui est trituré un peu partout.

Les ronces, ces grosses formes rondes, c’est ce qui casse la géométrie et ramène un côté organique. Un peu comme dans Super Meat Boy, la grosse épine qui fait peur, qui pique, et dans laquelle on va forcément mourir.

Et si on regarde bien, il y a des cercles de transmutation de Fullmetal Alchemist absolument pas cachés dans les niveaux.

Une boucle de gameplay jusqu’au boss
L’idée c’était d’avoir un tout cohérent. Les premiers niveaux posent les mécaniques, et ça pousse de plus en plus jusqu’au boss.
Le level run, c’est le dernier niveau : une ombre tentaculaire qui avance depuis la gauche, pendant que … Cours Forest, cours !
Le chrono et le compteur de morts, c’est ce qui donne envie de recommencer. Sur itch.io, des gens sont revenus juste pour battre leur temps.
Le son avec les moyens du bord
Une fois qu’on a des bouts de graphisme et des bouts de niveau, il faut du son. Et le son, c’était aller taper un morceau de papier bulle au sol et le retourner pour faire le bruit du blob. On a enregistré ça à travers un tuyau en carton avec le micro du téléphone, passé dans Audacity avec un pitch-shift et un léger reverb. C’est bizarre mais ça sonne bien.
Le son dans un club de JV d’ingés en informatique c’est la section qui passe le plus à la trappe. Et pourtant, c’est un moment fun dans lequel il faut être très créatif pour illustrer avec du bruit ; et frotter / taper / déchirer / mordre tout ce qui passe par là.
Le saut, l’atterrissage et la mort sont trois variations autour du même papier bulle : accéléré, ralenti, passé dans tous les sens.
Bref, un seul son qu’on a déformé pour en faire trois.
On a trouvé un triangle dans la salle de musique pour avoir des petits effets cristallins sur les checkpoints.
Le boss: dans un micro, ma voix grasse et tonitruante.
Les gouttelettes, ça a été enregistré dans les toilettes avec un évier à faible débit. Le wall-jump, c’est toujours du papier bulle, encore une variation.
On a utilisé tout ce qu’on avait sous la main pour s’amuser sur le son, quelque chose qu’on fait trop rarement en jam.
Le tout en moins de deux heures, avec un zoom en poche, zéro budget, et franchement ça marche.
Pour la musique par contre, on n’avait pas les compétences, du coup on a pris des morceaux d’auteurs externes (et impossible de retrouver l’autrice / auteur avec le temps… je m’en veux).
Le menu titre en trente minutes
Le menu titre s’est fait dans la toute dernière demi-heure. Un dessin sur un bout de papier, numérisé, colorisé dans la foulée.
Bouclé ? Oui, d’accord, on n’a pas adapté les boutons à la manette utilisée !
Après la jam
Après avoir mis le jeu sur itch.io, on s’est rendu compte que des gens s’amusaient à le speedrunner. VanOri, un joueur allemand, nous a même envoyé une vidéo. Son commentaire : “Video is in german, you have been warned :D”
Jouer dans le navigateur
Jouer à Cherry Jelly
S'ouvre dans un nouvel onglet · ~30 Mo · clavier requis · Chrome recommandé
Ce que j’en retiens
En trente-six heures, on avait un jeu jouable.
L’idée était qu’à chaque incrément de deux heures, on avait toujours un objet fonctionnel, livrable, qui s’améliorait à chaque passe.
Cerise dans la gelée ?
Deux des trois personnes découvraient Godot et on a quand même sorti un truc complet.
Quand on compare avec nos anciennes jams en OpenGL vanilla C++ où au bout de trente-six heures on en était encore à réimplémenter la boucle d’animation de sprites… là, on avait une vraie bricole.