D'abord une sorte, puis cinq : comment ce jeu grandit 🪨
Si vous regardez notre liste de versions, vous y trouverez 29 sorties en un peu plus de cinq semaines – de la 0.1.0 le 20 juin à la 0.9.0 hier. Comment est-ce possible ? Certainement pas en s'asseyant pour construire une fonctionnalité terminée d'un seul grand coup. Nous construisons par étapes : d'abord la plus petite version qui fonctionne vraiment, puis – une fois qu'elle est stable et amusante – l'étape suivante. En ce moment, les astéroïdes l'illustrent mieux que tout.
Étape 1 : ils existent, tout simplement. Quand les astéroïdes sont arrivés dans le jeu, une seule question comptait : est-ce qu'on peut atterrir, marcher et miner sur un corps minuscule dont on fait le tour en quelques minutes ? Un astéroïde n'est pas une petite planète – il a sa propre catégorie de taille, une autre gravité, un autre horizon. C'était ça, l'étape 1, et tout le reste était volontairement secondaire. C'est pour cela qu'il n'existait exactement qu'une sorte : le type était inscrit en dur dans le code, et comme il lui manquait une liste de surfaces possibles, chaque colonne était recouverte de cristal. Tous les astéroïdes de la galaxie se ressemblaient. Seuls changeaient leur circonférence et l'endroit où tombaient les cratères.
Étape 2 : maintenant, ils ont le droit d'être différents. La deuxième étape est terminée depuis hier – elle arrivera dans le jeu avec la prochaine mise à jour. Il y aura alors cinq familles d'astéroïdes, et chaque rocher tire la sienne au sort, selon des probabilités pondérées. L'astéroïde rocheux est la bête de somme, avec du fer, du silicate, du cuivre et de l'étain. Le métallique est presque du métal massif – du titane partout, et plus en profondeur du cobalt, du tungstène et du platine. Le glacé est à −95 °C et contient des substances volatiles plutôt que des métaux : carbone, lithium, soufre. Le carboné est noir comme la suie, criblé de grottes, et cache de l'uranium et du diamant tout au fond. Et le cristallin – exactement ce qu'étaient tous les astéroïdes jusqu'ici – devient la trouvaille rare. En plus, chaque corps reçoit son propre relief de cratères : densité, largeur des bassins, profondeur, hauteur des rebords, et le côté plus ou moins vallonné de la poussière entre eux. Avant, c'étaient cinq nombres fixes pour tout l'univers, et c'est pourquoi tous les corps sans atmosphère se ressemblaient. Les lunes en profitent d'ailleurs aussi, parce qu'elles suivent le même chemin dans le code.
Le vrai bénéfice vient après. Ce qui est beau avec une deuxième étape bien construite, c'est la troisième : une sixième famille n'est plus un travail de programmation, mais une simple entrée dans un fichier de données – nom, surfaces, minerais, fréquence, terminé. « Il faudrait que quelqu'un intègre ça un jour » est devenu « on pourrait essayer ça un soir ». C'est pour ça que la refonte en vaut la peine.
Pourquoi nous faisons toujours comme ça. Trois raisons, toutes apprises à nos dépens. Un : on ne sait pas à l'avance si une idée est amusante. Une première petite version peut être essayée avec Justus en une soirée, et ensuite on sait si l'extension en vaut la peine – ou si l'idée était en fait ennuyeuse. Deux : une petite étape peut être relue, testée et, si besoin, annulée. Pour une fonctionnalité géante qui touche cinquante endroits à la fois, il ne reste plus qu'à prier. Trois, et c'est le plus important pour nous : ce jeu est joué par des enfants. Une fonctionnalité géante à moitié finie est pire pour eux qu'une petite qui fonctionne de façon fiable.
Le même schéma partout. Au début, les blocs n'étaient que des cubes ; les rampes, les escaliers et les sphères sont venus plus tard, puis la mise en couleur, puis les fins chanfreins sur les arêtes, pour que plus rien ne ressemble à un carton. Les planètes ont commencé comme un rocher gris ; les vraies mers, les réseaux de grottes, le climat selon l'altitude et les volcans sont arrivés plus tard, puis les mers gelées sur les mondes froids – et maintenant, les astéroïdes. Pour la protection des enfants, il n'y avait d'abord qu'une commande de signalement dans le chat, puis sont venus les bannissements avec raison et les pauses, et tout récemment le mode observateur invisible. Et nos bandits, à peine sortis, en sont eux-mêmes encore à l'étape 1 : ils vous touchent par un effet de proximité plutôt qu'avec de vrais projectiles. Ce n'est pas un oubli, c'est écrit dans le plan – l'étape 2 viendra, une fois que l'étape 1 aura fait ses preuves.
Ce que coûte cette façon de travailler. Deux choses, honnêtement. D'abord, les mondes existants changent : comme le type d'un corps céleste est recalculé à chaque chargement et jamais enregistré, les astéroïdes de vos anciens mondes recevront d'autres familles et un autre relief avec la prochaine mise à jour. Vos blocs construits sont conservés – mais ils peuvent soudain flotter dans le vide ou se retrouver pris dans la roche. C'est pourquoi ce genre de chose figure toujours dans les notes de version. Ensuite, même la première étape doit être construite de façon à rendre la deuxième possible. Pour les astéroïdes, cela veut dire : il existe désormais exactement un endroit dans le code qui répond à la question « est-ce un astéroïde ? », et un test qui vérifie, pour chaque famille générée, qu'elle est bien classée comme astéroïde. Qu'on oublie un seul appel, et un vieux bug bien désagréable refait surface : un rocher sur lequel on ne peut pas miner un seul bloc.
Et une fois de plus, les tests nous ont sauvés. Pendant la construction des nouvelles familles, une vérification qui existe depuis longtemps s'est déclenchée : elle s'assure que, sur chaque monde avec des gisements de minerai, on peut arriver jusqu'à la recette du câble. Trois des cinq nouvelles familles n'avaient tout simplement pas de cuivre – les joueurs y seraient restés bloqués dans leur progression. Aucun humain ne l'a remarqué ; c'est un test écrit des semaines plus tôt qui l'a vu. Toutes les familles contiennent désormais du cuivre et du silicate.
La prochaine fois, ce sera de nouveau une de ces étapes, quelque part entre les plantes, les animaux et les bandits. Laquelle ? C'est en général Justus qui décide. 🌟
Commentaires