Postmortem


Dans ce postmortem, je veux vous partager mon expérience technique et pratique acquise lors de cette jam de manière brève, afin que ça ne soit pas trop indigeste.

Je vous conseille de jouer au jeu avant de lire ce postmortem.

Storyboard

Le storyboard s’est fait sur papier. Cela me permet d’avoir rapidement une idée du déroulé, utile notamment pour compter le nombre d’écran et caler les textes aux bons endroits. Il devait y avoir à l’origine des mini-jeux entre certaines scènes, j’ai vite abandonné l’idée.


Des illustrations faites à la va-vite pour mieux cerner le travail à accomplir

J’utilise Godot par facilité. Je vois déjà comment concevoir le jeu. Il doit faire les choses suivantes :

  • Afficher une petite animation, qui boucle ou non,
  • Afficher du texte sur certaines animations,
  • Avancer au clic

Structure du code

Je construis donc mes Ressources personnalisées, que j’appelle des PicScenes, mot valise de picture et scene. Cela me permet de créer et manipuler rapidement des structures communes dans Godot.

extends Resource
class_name PicScene

@export var images: Array[Texture]      # Liste toutes les images
@export var loop: bool = false          # Fait boucler
@export var frames_description: String  # Décrit comment utiliser les images
@export var screen_shake: bool          # Secousses!
@export_multiline() var text: String    # Du texte par dessus l'animation

Je sais que je vais vouloir faire gigoter certaines piscsenes (screen_shake), et contrôler facilement l’ordre des images. Avec frames_description, je peux décrire avec du texte quelles images afficher et dans quel ordre, ce qui me permet de les répéter et ainsi les faire durer plus longtemps. "0,0,0,1,2,3" fait durer la première image trois fois plus longtemps.

Je crée également une autre ressource qui va stocker toute l’histoire, que j’appelle PicSceneCollection. Cela permet d’avoir la liste les picscenes enregistré dans un fichier, chose qu’on ne peut pas faire avec un @export Array[]. Sinon, on peut perdre tout son travail en cas de fausse manipulation (comme supprimer l’export par inadvertance…).

extends Resource
class_name PicSceneCollection

@export var picscenes: Array[PicScene]

Je vais ensuite devoir dessiner les animations. 4 FPS me parait être un bon compromis pour itérer rapidement. Au final, j’ai dessiné pas moins de 45 images.

Graphismes

J’utilise Procreate sur iPad, et j’ai quelques astuces à partager.

Procreate possède une fonction d’aide à l’animation, je m’en suis servi pour activer l’option « pelure d’oignon ». Glisser la timeline d’en bas me permet d’avoir un aperçu rapide de l’animation.

Toutes les images des animations sont dans le même fichier. Penser à être rigoureux dans le nommage des calques, cela est précieux à l’export et à l’utilisation dans le jeu.

Pour exporter une animation, il faut sélectionner les calques (glisser vers la droite), puis utiliser la fonction de partage dans la vue des calques (c’est plutôt caché…).


L’option « Partager », cachée derrière une toute petite flèche bleue

Musique

J’utilise Sunvox sur iPad, un petit tracker/synthé modulaire.

Ma composition comporte 5 motifs (en bas), utilisant différentes progression d’accords.

Mes motifs peuvent se répéter comme s’enchaîner de manière naturelle, pour chacun des 5 instruments que j’ai créé. Ils remplissent chacun une fonction différente.

  • Batterie : La rythmique qui donne un tempo facilement identifiable
  • Basse : La fondamentale de l’accord en cours
  • Synthé: Une nappe douce qui rappelle la fondamentale
  • Orgue : Accords répétés pour illustrer la tension
  • Guitare : Un accord tranchant tout en réverbération

Ainsi, on peut tous les lancer en même temps et modifier leurs niveaux en fonction de la tension voulue.

On peut facilement exporter chacune des voix séparées grace à une option d’export, qui génère un fichier par nœud relié à la sortie.


En haut: la piste, à droite: les nœuds (instruments), à gauche: les paramètres, en bas: Les motifs (une couleur par instrument)

Découpage

Il a fallu ensuite fragmenter chacun des 5 instruments en motifs. J’ai choisi un tempo de sorte qu’un motif dure 6 secondes.

J’ai utilisé ffmpeg, un logiciel en ligne de commande assez obscur mais très puissant, à condition de savoir comment l’invoquer.

ffmpeg -i guitar.wav -f segment -segment_time 6 -c copy guitar%d.wav

New Game +

Avec le temps qui me restait, j’ai trouvé de quoi ajouter un petit bonus pour avoir joué jusqu’à la fin : La possibilité de modifier les instruments pendant le jeu. Cela permet de comprendre un peu mieux comment le jeu a été fabriqué.

La conception de mon jeu m’a permis de rajouter cette fonction avec peu d’efforts.

Soumission

Enfin, pour soumettre le jeu, la plateforme itch met à disposition un utilitaire en ligne de commande, butler.

C’est un coup à prendre mais cela permet de débloquer des options qui ne sont pas accessibles depuis l’interface web, comme suivre la progression d’une soumission, ajouter un canal à une soumission ou bien faire des mises à jour incrémentales (seules les parties qui diffèrent sont envoyées).

Conclusion

Dans ce billet j’ai voulu illustrer comment j’ai réussi à réduire au maximum le temps nécessaire entre l’idée dans ma tête et un aperçu dans le jeu en exploitant les outils que je possédais déjà.

Voilà les p’tits loups, j’espère que vous avez pu comprendre un peu mieux comment ce jeu a été fabriqué, appris des tips pour les logiciels que vous connaissez ou même découvert de nouveaux. Les deux derniers conseils qui reviennent régulièrement lors de jams : faites simple et testez rapidement.

Leave a comment

Log in with itch.io to leave a comment.