Mille niveaux, et personne n’en a placé un seul à la main
Dix régions, cent paliers de difficulté et cinquante familles de boss, générés depuis un modèle — et la passe de recette qui devait prouver que chaque route est gagnable.
· · 6 min de lecture
Swarm Kingdoms compte mille niveaux répartis sur dix régions. Personne ne s’est assis pour en placer un seul à la main, et ce n’est pas un raccourci : c’est la seule manière pour qu’une campagne aussi longue puisse être équitable.
Une campagne de mille niveaux placée à la main offre mille occasions qu’un niveau soit accidentellement impossible, et aucun moyen de le découvrir sinon qu’une joueuse se retrouve bloquée. Elle dérive aussi : le niveau 400 est équilibré contre la courbe d’améliorations telle qu’elle était quand 400 a été écrit, et cette courbe a bougé deux fois ensuite. Générer depuis un modèle de difficulté transforme mille jugements en un seul, et rend ce seul vérifiable.
Ce que le modèle produit réellement
Cent paliers de difficulté sur dix régions, avec cinquante familles de boss tirées de cinq archétypes, vingt-deux améliorations, onze types d’ennemis et huit déblocages d’armée pour les dépenser. Chaque niveau se résout en une table de rencontres : un temps, une réserve de points de vie, un taux de dégâts, un effectif, un type et une formation, par vague. Le premier niveau ouvre sur seize attaquants au corps à corps en ligne à six secondes, puis vingt à vingt-deux secondes, puis vingt-quatre en coin. Cela se lit comme un tableur parce que c’en est un, et c’est la fonctionnalité : un tableur peut être balayé à la recherche d’une ligne imbattable.
Chaque chiffre de ce paragraphe est compté dans les fichiers que charge le build livré, par le pipeline qui construit cette page, plutôt que saisi par quelqu’un. Il échoue si un fichier de région manque. Un chiffre sur une campagne de mille niveaux saisi par une personne est un chiffre qui sera faux d’ici une version.
Gagnable est une affirmation sur chaque route, pas sur le jeu
La propriété utile n’est pas « le jeu est équilibré ». C’est que toute combinaison de routes qu’une joueuse peut emprunter dans la campagne est gagnable dans des conditions définies — une affirmation différente et bien plus large, car un chemin d’améliorations qu’une joueuse pourrait raisonnablement choisir peut la laisser sous-équipée au palier 60 alors que tous les autres chemins vont bien.
Le projet fait donc tourner sa propre passe de recette sur toute la campagne et rend compte exactement de cela, conditions énoncées. Trancher cela a demandé un rééquilibrage documenté. La raison pour laquelle c’était tranchable, c’est que la campagne est une fonction d’un modèle : on change le modèle, on relance le balayage, et on apprend en quelques minutes si on a cassé le palier 60 pour une route.
Pourquoi c’est au Lab et pas sur un store
Voilà la partie qu’une page de portfolio laisse habituellement de côté. Swarm Kingdoms est un jeu complet, à l’équilibre vérifié, sans aucune plomberie de production autour. Les builds Windows et Android tournent et la campagne est jouable du premier niveau au millième. La couche store est déclarée factice dans son propre fichier de données et s’affiche comme store de développement dans le jeu. L’identifiant d’application est encore une chaîne de développement locale. Le projet lui-même déclare que les tests sur appareil physique, la facturation de production et la publicité de production sont des barrières non franchies.
Il porte donc un badge LAB, et ce badge est l’honnête. Un jeu fini et un produit livrable sont deux choses différentes, et la distance entre les deux est presque entièrement le travail que personne ne montre.
Une dernière chose qui a l’air d’un détail et n’en est pas une : il est livré en dix langues, avec les identifiants de langue du jeu conservés exactement comme le jeu les nomme — y compris ceux qui sont une région et pas seulement une langue. La démo de ce site parle ces chaînes plutôt qu’une traduction écrite pour un site web, et retombe sur l’anglais comme le fait le code de localisation du jeu lui-même.