Spindle Garden
Un simulateur de jardinage où l’on croise d’étranges plantes. Chaque plante est assemblée à partir de modules, et deux plantes qui se rencontrent peuvent donner un hybride.
- Année
- 2024–2025
- Contexte
- Projet de fin d’études, ICAN
- Rôle
- Seul programmeur, design des systèmes, outils, technical art
- Réalisé avec
- C#, Unity, FMOD, shaders
- Ampleur
- Plus de 15 000 lignes de C#, plus de 50 classes

Le concept
Le joueur cultive des plantes sur un réseau de cellules reliées entre elles : il les arrose, les regarde pousser et les laisse se propager. Quand deux plantes différentes se rencontrent en se propageant, elles peuvent se croiser et donner un hybride qui mêle les traits de ses deux parents.
Chaque plante est faite de trois modules, une tête, un corps et un pied, et chaque module porte ses propres propriétés. Les combinaisons se comptent par millions, et chaque nouveau module les multiplie.

Ce que j’ai construit
J’ai programmé le jeu seul. Voici les systèmes sur lesquels il repose.
- Les cellules reliées
- Les cellules sont des nœuds reliés par des liens plutôt qu’une grille fixe. Les plantes se propagent le long de ces liens grâce à une recherche de chemin, et des outils d’éditeur permettent de dessiner et d’inspecter le réseau.
- Le cycle de vie des plantes
- Une machine à états mène chaque plante de la croissance à la maturité, à la décomposition puis à la mort, synchronisée avec le cycle jour-nuit, l’arrosage et le son FMOD.
- L’hybridation
- Quand deux plantes se rencontrent, les parents sont validés, des modules sont tirés de chacun, à 50/50 par défaut ou selon l’engrais de la cellule, les propriétés sont moyennées et une nouvelle définition de plante est créée. La consanguinité est empêchée pour garder des lignées variées.
- L’assemblage modulaire
- Les modules s’emboîtent sur des points d’ancrage ; positions et statistiques combinées sont calculées à l’exécution.

(ouvre l’image en taille réelle)
(ouvre l’image en taille réelle)Autour du cœur
- L’herbier
- Un livre de collection dans l’esprit d’un Pokédex. Les plantes découvertes y sont affichées en 3D en temps réel, filtrables par famille, avec les propriétés de chaque hybride obtenu.
- Les agents invasifs
- Des nuisibles autonomes cherchent les plantes du joueur, s’en approchent et les parasitent, chacun piloté par sa propre machine à états.
- L’économie
- Les prix suivent la complexité d’une plante. Les zones et l’inventaire s’améliorent, et des commandes de PNJ réclament des hybrides précis.

(ouvre l’image en taille réelle)
(ouvre l’image en taille réelle)L’architecture
Le code s’appuie sur quelques patrons : managers singletons, machines à états, observateurs et fabriques, avec un système d’événements entre les modules et des ScriptableObjects pour les données.
Ce qu’on y gagne, c’est l’extensibilité. Un nouveau type de module, de comportement ou de règle de propagation tient en quelques lignes plutôt qu’en une réécriture.


