Les robots déblaient la frontière
Progression de frontièreTravail 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.
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.