Cette page raconte la fabrication de Pétanque Game. Pour le jeu lui-même — ce qu'il propose, ce qu'il coûte, quand il sort — la page du jeu est faite pour ça, et la version web se joue tout de suite.
Du navigateur au téléphone
Le jeu est né dans la rubrique des mini-jeux du site, en TypeScript et three.js. L'appli est faite avec Unity 6 (URP), et son cœur ne réinvente rien : les règles, la physique des boules, l'adversaire et le tremblement de la main sont recopiés ligne à ligne en C#, dans un assembly qui ne connaît rien d'Unity. Un script fait tourner le code du site et en tire un fichier de référence : hauteurs du terrain, lancers menés jusqu'à l'arrêt des boules, plans de l'ordinateur. Les tests de l'appli rejouent tout et doivent retomber sur les mêmes chiffres.
Le diable est dans les détails : le bruit du terrain repose sur Math.imul et
>>>, qui deviennent de l'arithmétique entière non vérifiée en C# ; les hauteurs
restent en float parce que le site les range dans un Float32Array ; et
Math.round n'arrondit pas les demis comme Math.Round. Chaque écart se voit dans
un test avant de se voir sur le terrain.
Deux téléphones, une seule partie
En ligne, seuls les lancers voyagent : la vitesse de la boule et l'endroit où la main la lâche, numérotés et appliqués dans l'ordre, par Unity Netcode et Relay. Chaque téléphone rejoue le lancer avec le même moteur, qui ne s'autorise que des racines carrées pour tomber juste sur les deux appareils. Après chaque lancer, le téléphone qui a ouvert la partie envoie son arbitrage, que l'autre adopte ; un téléphone en retard redemande ce qui lui manque.
Pour le vérifier, un script ouvre deux éditeurs Unity qui jouent une vraie partie privée l'un contre l'autre, par les services en ligne, et doivent finir avec le même jeu au millimètre. C'est lui qui a trouvé l'invité qui ne démarrait jamais : la partie le connectait avant que son lien existe, et le signal de départ se perdait.
Un terrain qui se lit
Un terrain se règle du plus lisse au plus accidenté : une pente, des bosses, des trous de plombée, des plaques de quatre sols, des cailloux qui dévient une boule, et une couche de gravier meuble plus épaisse le long des planches. Le shader du sol mélange les quatre textures là où chaque sol joue vraiment, et accentue les pentes six fois pour la lumière seulement : dessinées à leur vraie taille, quelques centimètres par mètre, l'œil ne les lisait pas. La physique, elle, ne voit jamais cette exagération.
L'ordinateur et le chemin affiché avant de lâcher calculent sur une copie « aveugle » de la partie : sans les cailloux cachés, sans ce que personne ne peut lire sur le sol. Le vrai lancer, lui, les sent, et de la même façon sur les deux téléphones.
Des joueurs qui ont leurs manies
Les joueurs sont des corps 3D de Microsoft Rocketbox, posés par le code à chaque image, sans fichier d'animation : l'accroupi, le balancier du pointeur, le tir qui monte sur la pointe des pieds, la marche qui garde le pied au sol. Les postures suivent des photos de vrais joueurs. Avant chaque boule, chacun a son rituel, tiré au sort et toujours le même : soupeser la boule, l'essuyer, fléchir les genoux, viser. Les tenues sont dessinées par un shader à partir de la place de chaque point sur le corps : n'importe quelle tenue va à n'importe quel joueur, sans une texture par combinaison.
Mesurer plutôt que deviner
Les réglages se mesurent en faisant jouer l'ordinateur contre lui-même. Le niveau Facile, trop dur au départ, a été refait sur mesures ; les droits d'inscription et les gains des ligues sortent de centaines de matchs simulés ; et chaque modèle de boule (poids, diamètre, dureté) affronte la boule standard sur trois terrains, pour qu'aucun ne soit meilleur partout.
Pour des joueurs qui jouent pour de vrai
Le jeu vise des joueurs de 45 à 75 ans : une seule échelle de textes, jamais sous 15 pt, des boutons de bonne taille, et des contrastes vérifiés dans les six ambiances des menus. Les tests en mode jeu lancent l'appli, jouent une mène entière, prennent des captures dans les cinq langues et listent chaque texte qui déborde de son cadre ; ces mêmes captures font les images des stores. Les bruits du jeu (chocs des boules, sol, bouchon, planches) sont synthétisés, comme sur le site, sans un fichier audio.






