Aller au contenu

Titouan Gardy-Lognon

Les robots déblaient la frontière

Progression de frontière

Travail nº 01 — jeu de navigateur

Un démineur qui finit par se déminer seul.

Au début, vous cliquez sur les cases. À la fin, vous ne cliquez plus du tout : vous décidez où envoyer les foreuses et dans quel ordre allumer les phares. Le jeu entier tient dans un fichier, et il n'appelle rien sur le réseau.

Essayer la maquette

La fin de partie, en boucle. Plus personne ne clique : les robots travaillent sur la frontière — les cases fermées qui touchent une case déjà ouverte — et la clairière s'étale au lieu de se piqueter. Même densité de mines que le jeu, 11,7 %. La maquette ci-dessous vous en donne le début.

Essayez la maquette

Une maquette jouable écrite pour cette page : une clairière est déjà dégagée au centre, on creuse sur ses bords, et les pièces achètent un robot qui progresse le long de la frontière — une case par seconde, puis deux, puis trois. La grille s'ajuste à votre écran ; sa taille exacte est annoncée au-dessus d'elle.

La maquette demande JavaScript.

La maquette ci-dessus n'est pas le jeu.

C'est une démonstration jetable de neuf cents cases. Le vrai jeu, lui, n'est pas publié : c'est un prototype commercial, et un jeu web jouable en ligne, c'est son code source intégral offert à qui enregistre la page. Il n'existe aucune protection réelle contre ça. La version complète est disponible sur demande : écrivez-moi.

L'idée

Le démineur classique a un défaut curieux : plus on y devient bon, moins il est intéressant. Les premières grilles demandent de la déduction ; les suivantes demandent la même déduction, en plus long. On ne progresse pas, on répète.

Alors j'ai déplacé la question. Le terrain fait huit mille cases sur cinq mille — quarante millions en tout, dont dix millions de mines. Personne ne le terminera à la main, et c'est le but. Ce qui progresse, ce n'est pas votre habileté à cliquer, c'est la machine que vous construisez pour cliquer à votre place. Une foreuse creuse toute seule mais ne réfléchit pas. Une sonde désamorce au lieu de faire exploser. Un phare éclaire ses voisins, et deux phares bien placés s'entraident.

Il reste quand même une raison de descendre jusqu'au bout : parmi les dix millions de mines, une seule est dorée.

Le vrai jeu apparaît là : ce n'est plus « où est la mine », c'est « quelle machine mérite mon prochain investissement ». La déduction ne disparaît pas, elle change d'échelle.

Ce qu'il y a dedans

Une chaîne de phares
Les phares se relaient : bien alignés, ils couvrent un couloir entier. Mal alignés, ils s'éclairent entre eux et ne servent à rien. C'est le premier vrai casse-tête d'optimisation du jeu.
Vingt-neuf fragments de relique
Éparpillés dans la profondeur, ils se ramassent lentement et se recomposent. Ils donnent une raison de descendre autre que « les chiffres montent ».
Un solveur, sur quatre niveaux
De L1 — les déductions qu'un débutant fait de tête — à L4, qui croise plusieurs contraintes à la fois. C'est ce que vous achetez au lieu de le faire vous-même.

La contrainte que je me suis donnée

Un seul fichier. Pas de bibliothèque, pas d'outil de compilation, pas de serveur. Vous pouvez enregistrer la page sur une clé USB et elle marchera dans dix ans, hors ligne, sur n'importe quelle machine.

Taille
9 804 lignes
608 Ko
Dépendances
Aucune
zéro appel réseau
Ressources
Police et images
embarquées dans le fichier
Technique
JavaScript, Canvas
sans bibliothèque

Ce n'est pas une performance gratuite : le jeu s'ouvre hors ligne, sur n'importe quelle machine, sans rien installer. Un jeu qui a besoin d'un serveur ne se montre pas, il se raconte.

Ce que ce projet m'a appris, et qui a servi ailleurs :

Un fichier de dix mille lignes sans historique de version pardonne très mal. J'y ai perdu 291 lignes d'un coup — dont trois constantes dont tout dépendait — en supprimant un bloc avec une expression trop gourmande. Le fichier restait valide, et la panne n'est apparue qu'à l'exécution. Depuis, je compte les lignes avant de couper.

Une question sur ce jeu, ou envie de voir la version complète ? Écrivez-moi — je réponds le jour même, du lundi au vendredi.