Cette page raconte la fabrication de Dragon's Gems Swipe. Pour le jeu lui-même — ce qu'il propose, ce qu'il coûte, où le télécharger — la page de l'appli est faite pour ça, et la version web se joue tout de suite.
Un mini-jeu d'abord
Le jeu est né sur ce site, dans la rubrique des mini-jeux. Un geste fait glisser tout le plateau jusqu'au bord, comme dans 2048 ; trois gemmes de la même couleur qui se touchent explosent, et le plateau reglisse. Chaque règle a été gardée ou jetée sur une mesure : un robot joue des milliers de parties pour dire si une variante fait plus de chaînes, si un niveau se gagne, en combien de coups. C'est lui qui choisit les 250 niveaux de la carte et leur nombre de coups : assez pour qu'un joueur moyen en gagne quatre sur cinq, un peu moins un niveau sur dix.
Un seul moteur, deux plateformes
Les règles tiennent dans un moteur pur écrit en TypeScript pour le site. L'appli ne les réécrit pas : elle les recopie ligne à ligne en C#, dans un assembly qui ne connaît rien d'Unity, avec le même générateur pseudo-aléatoire. Un script rejoue le moteur TypeScript sur des parties de référence et en tire un fichier de parité ; les tests de l'appli rejouent les mêmes parties et comparent chaque état, coup par coup.
La règle du jeu entre les deux : quand un test de parité échoue, c'est le portage qui a tort, jamais le fichier. C'est ce qui permet au défi du jour d'être le même plateau sur le site et dans l'appli, avec un seul classement mondial pour les deux.
Des tests qui jouent
Le robot du site existe aussi en C#. Dans les tests de l'appli, il joue chacun des niveaux jusqu'au bout : un niveau impossible ou une règle cassée par un changement se voit avant d'arriver sur un téléphone.
Des sons sans fichiers
Aucun son du jeu n'est un enregistrement. Les effets du site sont synthétisés en direct (WebAudio) ; l'appli porte ce code en C# et fabrique chaque son à sa première utilisation, avec une réverbération de type Freeverb et un compresseur calqué sur celui de WebAudio. Le jeu web et l'appli sonnent donc pareil, sans un fichier audio dans le paquet.
Une interface générée
L'appli est faite avec Unity 6 (URP), sur le gabarit des applis du studio. Ses écrans ne sont jamais retouchés à la main : des scripts d'éditeur les génèrent, avec Prefab Fusion, l'outil du studio pour construire et modifier des prefabs par description. Un écran se refait donc en relançant son script, dans les cinq langues du jeu.
Des captures tournées par un robot
Les captures des stores et les vidéos de présentation sortent des tests en mode jeu : le robot joue à 30 images par seconde de temps de jeu, chaque image est enregistrée, et les sons joués sont notés puis remixés sur la vidéo. Refaire toutes les images après un changement d'écran, pour l'iPhone, l'iPad et Android et dans chaque langue, ne demande qu'une commande.



