06.60.34.40.22 🇫🇷

Logo antWeb.fr 2026
Border Rush

Border Rush – The Liberty Line

Et si le bord du plateau était une sortie ?

Dans tous les jeux de territoire que j’ai pratiqués, le bord du plateau est un mur. On s’y adosse, on s’y appuie, on l’utilise comme un dos solide contre lequel l’adversaire ne peut plus rien. Mais on ne le franchit jamais. C’est la limite du monde.

Border Rush part de l’idée inverse. Ici, le bord est une porte. Ce qui l’atteint s’en va, et ce qui s’en va compte.

Vous êtes l’eau

L’arène est un lit de sable clair, posé au milieu d’un paysage calme. Vous jouez la source. À chaque tour, vous déposez une tuile d’eau ; en face, la roche pose la sienne.

Deux tuiles côte à côte cessent d’être deux tuiles. Leurs frontières s’effacent, elles fusionnent en une seule masse, un même courant continu qui ondule sur le sable. La roche fait pareil de son côté, en blocs terreux qui s’agglomèrent en massifs.

Une masse vit par ce qu’elle touche de vide. Chaque face en contact avec du sable libre est une respiration. Étouffez une masse de tous les côtés, elle se fige et devient du basalte noir : de la terre morte, infranchissable, qui rétrécit l’arène pour tout le monde. Personne ne récupère le terrain. La partie s’assèche à mesure qu’on la joue.

Et puis il y a les rives.

Ce qui sort ne revient pas

Posez une tuile sur un bord, et son énergie s’écoule hors du plateau. Vous la voyez partir : un filet de particules qui franchit la lisière et retombe dans la nature environnante. Cette masse-là ne pourra plus jamais mourir. Aucun blocage ne rattrape ce qui est déjà dehors.

C’est là que le jeu se dévoile. En fin de partie, quand le sable a disparu sous les tuiles et les terres mortes, il ne reste plus une seule respiration à l’intérieur de l’arène. Les seules libertés qui subsistent sont celles qui sortent. Les rives font le score.

Ce qui change tout à la façon de jouer. Le réflexe naturel — accumuler des cases, occuper le centre, faire gros — vous mène droit à un zéro pointé. Le plus grand bloc ne gagne pas. Le plus ouvert, oui.

Le vrai coup, c’est le canal

Une masse branchée sur un bord est déjà à l’abri. Une masse branchée sur deux bords opposés est une victoire en construction : deux échappées qui s’additionnent, un canal qui traverse l’arène de part en part.

Sauf que votre adversaire le sait. La roche ne joue pas au hasard : elle regarde vos libertés, elle repère la rive vers laquelle vous vous dirigez, et elle vient s’asseoir dessus. Chaque bloc qu’elle pose sur un bord au contact de votre eau est un coup de ciseaux dans votre canal. Elle anticipe aussi votre réponse — au niveau le plus élevé, elle simule ce que vous pourriez jouer avant de décider.

Une partie de Border Rush, c’est donc une course. Vous cherchez la deuxième rive, elle cherche à vous en couper. Le sable disparaît entre vous deux, et la place manque de plus en plus.

Une pression qui monte

Le jeu commence doucement, sur une petite arène de neuf cases de côté, entièrement vide. Le temps de comprendre comment l’eau fusionne, comment on étouffe, pourquoi les bords brillent.

Gagnez, et l’arène s’agrandit : onze cases, puis treize. Gagnez encore, et vous retournez sur le petit plateau du début — sauf que la roche vous y attend cette fois avec trois blocs déjà plantés au milieu. Puis quatre. Puis six. Le même terrain, mais l’air en moins.

C’est cette respiration qui rend la progression intéressante : on retrouve régulièrement un décor familier, et on découvre à chaque retour qu’il est devenu bien plus étroit qu’en mémoire.

La musique suit la même courbe. Elle est calme, faite de nappes et de clochettes lentes, tant que votre eau respire. Quand une de vos masses commence à manquer d’air, elle bascule en mineur, se resserre, et une pulsation grave s’installe. Vous entendez le danger avant de le compter.

À l’arrivée

Quand la dernière case est jouée, la lumière baisse. La masse victorieuse s’illumine, la caméra descend jusqu’à raser le sable, et vous voyez enfin l’eau franchir la rive et tomber au-dehors — ce que le score racontait depuis le début, en images.

C’est ici, et c’est gratuit

Border Rush se joue directement dans le navigateur, sur ordinateur comme sur téléphone. Pas d’installation, pas de compte, pas de publicité, pas de pistage. On fait pivoter le plateau au doigt, on pince pour zoomer, on tape pour poser. Le jeu est disponible en français et en anglais, et il retient votre progression d’une visite à l’autre.

borderrush.antweb.fr

Comptez deux minutes pour comprendre les règles. Un peu plus pour accepter que le bord du plateau n’est plus une limite, mais l’objectif.


Border Rush est conçu et développé par Anthony Henriques — un jeu indépendant, sans budget et sans publicité. Si vous passez un bon moment, vous pouvez offrir un café à son auteur.

DOSSIER TECHNIQUE & CONCEPTUEL BORDER RUSH — The Liberty Line

Version 3.1 (build 2026.09.06)

Auteur / Concepteur : Anthony Henriques — https://borderrush.antweb.fr
Genre : Stratégie abstraite / placement de tuiles
Thématique : Nature, érosion, dualité fluide / solide


1. Vision

Border Rush est une réinterprétation des jeux de territoire abstraits. Pas d’affrontement militaire : une source d’eau cherche à rejoindre le dehors, une roche aride essaie de l’endiguer.

  • Le joueur (l’eau) : nappe continue, animée de vagues et de reflets, qui cherche les rives.
  • L’IA (la roche) : blocs facettés, statiques, posés pour couper les canaux.
  • L’arène : un lit de sable posé dans un espace naturel. Ses quatre bords ne sont pas des murs mais des sorties. L’enjeu narratif est l’échappatoire.

L’ambiance sonore suit cette dualité : clapotis cristallins pour l’eau, heurts telluriques pour la roche, sur un fond musical génératif qui se tend quand l’eau étouffe.


2. Mécaniques centrales

Grille carrée dont la taille dépend du niveau (9×9, 11×11 ou 13×13 — voir §3 bis). Les joueurs posent une tuile à tour de rôle.

A. La confluence

Deux tuiles d’un même élément posées côte à côte (orthogonalement) perdent leurs frontières internes et forment une seule masse. Le rendu applique une texture continue sur l’ensemble, sans coutures.

B. Le système de libertés

Une liberté est un côté (haut, bas, gauche, droite) d’une tuile de la masse qui touche du sable vide ou qui sort du plateau. Le décompte se fait par face, pas par case : une même case vide adjacente à deux tuiles de la masse compte deux fois.

C. L’échappée (règle d’or)

Une tuile posée sur une case périphérique laisse son énergie s’écouler hors de la grille (particules sortantes). Chaque face sortante est une liberté définitive : elle ne peut jamais être supprimée par l’adversaire. Une masse touchant un bord est donc immortelle.

D. La pétrification

Si une masse tombe à 0 liberté, elle meurt sur place et devient terre morte : la matière se fige en basalte sombre, un bloc en relief plus haut que la roche vivante, infranchissable pour les deux camps. Le relief est délibéré : une dalle en creux laisserait croire que l’eau peut s’y déverser.

Conséquence de règle importante (implicite dans la v1, désormais explicite) : la terre morte n’est pas une case vide. Capturer ne libère donc jamais d’espace, et une capture ne peut pas rendre légal un coup qui serait autrement suicidaire.

E. L’interdit

Un coup est illégal si la masse à laquelle la tuile se rattache se retrouve à 0 liberté à l’issue du tour. Corollaire : toute case de bord vide est toujours jouable, puisqu’elle possède au moins une face sortante.


3. Condition de victoire

Le score d’un camp est le nombre de libertés de sa masse la plus étendue, affiché en temps réel et décomposé en « libertés aux rives » / « libertés au sable ».

La partie s’arrête quand aucun des deux camps ne peut jouer de coup légal. À cet instant, le sable a disparu : les seules libertés qui subsistent sont les faces sortantes. Les rives font donc mécaniquement le score final, ce que l’interface répète tout au long de la partie.

Stratégie de référence : relier plusieurs rives par un canal. L’IA cherche activement à couper ces liaisons (voir §5).


3 bis. Progression par niveaux

Le joueur avance de niveau à chaque victoire, et le niveau est conservé d’une session à l’autre.

L’arène s’agrandit par cycles de trois niveaux : 9×9, puis 11×11, puis 13×13, puis retour au 9×9 — devenu bien plus serré, puisque le nombre de blocs, lui, n’a cessé de croître. Le débutant découvre le jeu sur un petit plateau vide ; le vétéran retrouve ce même plateau criblé de roche.

  • Au niveau N, la roche démarre avec N−1 blocs déjà posés. Une défaite ne fait pas reculer : le niveau est simplement rejoué.
  • Le réglage « Arène » vaut « Auto » par défaut et suit ce cycle ; les tailles fixes 9×9, 11×11 et 13×13 restent disponibles pour jouer hors progression.
  • Les blocs d’avance sont placés vers le centre, jamais sur les deux anneaux extérieurs, et espacés d’au moins deux cases tant que la place le permet. L’objectif est qu’ils coupent les canaux plutôt qu’ils ne forment un amas central facile à contourner — et que les rives, elles, restent entièrement libres au premier coup.
  • Plafond par plateau : 12 blocs en 9×9 et 11×11, 20 en 13×13. Au-delà, l’écran de fin invite à monter le niveau de la roche dans les réglages.
  • Un bouton « Repartir au niveau 1 » est disponible dans les réglages ; l’historique conserve le niveau joué pour chaque partie.

4. Architecture technique

Fichier unique, HTML5 + Three.js (r128, CDN ; substituable par un fichier local pour un packaging Capacitor). Aucune autre dépendance.

Rendu 3D

  • Lit de sable : boîte texturée en procédural (canvas 1024²) — grain, ondulations, quadrillage discret, bande claire et chevrons sortants sur tout le pourtour pour signaler les sorties.
  • Nappe d’eau continue : un seul maillage couvrant tout le plateau, masqué par une DataTexture n×n mise à jour à chaque coup. Un shader GLSL déplace les sommets (somme de quatre sinusoïdes), calcule la normale analytique, la spéculaire, le Fresnel, des caustiques et une ligne d’écume sur le contour de la masse. La fusion des masses est donc réelle et non
    simulée par des bordures.
  • Roche : cinq géométries de boîte à sommets supérieurs perturbés de façon déterministe (hash sur l’indice de case), rendu à facettes, ombres portées. Teinte terre cuite rougie pour se détacher franchement du sable.
  • Terre morte : mêmes géométries, matériaux basaltiques sombres à légère émissivité rouge, légèrement surélevées, avec une animation de soulèvement à la pétrification.
  • Signalement des masses championnes : aucune géométrie ajoutée. La masse qui donne le score émet simplement deux fois plus de particules d’échappée, dans une teinte plus claire que les autres masses. Le signal se lit sans légende — plus ça coule, plus ça compte — et rien ne vient
    se glisser sous la nappe d’eau translucide. Le tracé complet du périmètre reste disponible en option (désactivé par défaut).
  • Liseré du pourtour : posé juste à l’extérieur du plateau et non dessous, pour qu’aucune arête claire ne transparaisse à travers les tuiles d’eau.
  • Particules : deux systèmes Points recyclés (échappées aux bords, poussières de pose) plus des motes en suspension. Aucun élément DOM créé en boucle.
  • Cadrage : la distance caméra est calculée en projetant les huit coins de la boîte englobante sur le tronc de vision, en tenant compte de la zone d’écran réellement libre entre l’interface haute et l’interface basse. Vérifié sur téléphone portrait et paysage, ordinateur et 4K. Champ de vision de 44° et inclinaison plus verticale sur petit écran, pour limiter l’écrasement du fond de l’arène.
  • Contrôle de vue : orbite libre et zoom, gérés par un seul jeu de gestionnaires pointer qui distingue l’appui (pose d’une tuile), le glissement (rotation) et le pincement à deux doigts (zoom). Molette et flèches du clavier sur ordinateur, + / pour le zoom, R ou le bouton ⟲ pour revenir à la vue d’origine. Le balancement automatique de la caméra s’arrête
    dès que le joueur prend la main.

Son

Web Audio, entièrement génératif, sans fichier externe :

  • nappe de trois oscillateurs filtrés, progression d’accords ;
  • cloches pentatoniques planifiées par ordonnanceur (fenêtre de 1 s) ;
  • réverbération par convolution sur bruit à décroissance exponentielle ;
  • quatre niveaux de tension issus de l’état du jeu (masse en atari, écart de score, absence de rive) : bascule mode majeur → mineur, filtre assombri, tempo resserré, pulsation grave.

Interface

  • Registre des libertés en haut : jauge par camp, portion « échappées » hachurée et animée.
  • Aperçu au survol : score projeté du coup (14 libertés +3 · échappée), avertissement si le coup est interdit, nombre de cases pétrifiées. Cet aperçu chiffré est une aide d’apprentissage : il s’efface de lui-même à partir du niveau 4, et revient si le joueur active les compteurs de libertés. L’avertissement de coup interdit, lui, reste à tous les niveaux. L’infobulle
    disparaît dès que le coup est posé, pour ne pas s’attarder après un appui tactile.
  • Compteurs de libertés posés sur les masses : optionnels, masqués par défaut pour ne pas charger l’écran d’un téléphone. Le score reste lisible dans le registre du haut et l’aperçu au survol donne le détail à la demande.
  • Guide contextuel en bas, qui suit l’état réel (aucune rive / une rive / canal reliant deux rives / asphyxie imminente).
  • Annulation du dernier coup, mode « confirmer le coup » (activé par défaut au tactile), historique des douze dernières parties avec courbe, réglages persistés en localStorage.
  • Bilingue français / anglais. Toute l’interface passe par un dictionnaire à deux colonnes ; les textes statiques sont balisés data-i18n et les messages dynamiques appelés par T(clé).
    La langue est détectée depuis le navigateur au premier lancement, basculable à tout moment par le bouton FR/EN et conservée dans les réglages. Les dates de l’historique suivent la locale.
  • Fin de partie mise en scène. À la dernière pose, l’éclairage de la scène baisse de 70 %, la masse victorieuse est nappée d’une lueur pulsée, et l’eau se met à déborder par chacune de ses faces gagnées : les particules franchissent la rive et retombent hors de l’arène, portées par une gravité inversée par rapport aux échappées normales. Un souffle de bruit filtré
    accompagne la cascade. La fenêtre de résultat n’arrive qu’au bout de 4,3 secondes (1,6 en cas de match nul, sans vainqueur à montrer).
  • Caméra cinématique de fin de niveau. Pendant ces quatre secondes, la caméra descend de son angle de jeu (54°) vers un angle rasant (26°), pivote d’environ 55° et se rapproche du barycentre de la masse victorieuse : l’eau est alors vue de profil en train de franchir la rive et de tomber au-dehors. Interpolation en smoothstep, puis dérive lente pendant que la
    fenêtre de résultat est ouverte. Le plan est interrompu net si le joueur touche la caméra — sans saut, la position courante devient sa position — et la vue précédente lui est rendue au démarrage du niveau suivant s’il n’y a pas touché.
  • Pied de page lisible portant le titre (lien vers le site du jeu), le copyright, la version et un bouton de soutien Ko-fi ; second appel au soutien sur l’écran de fin de partie.
  • Responsive intégral par clamp() et recadrage caméra ; prefers-reduced-motion respecté.

5. Intelligence de la roche

Trois niveaux (Ruisseau / Rivière / Torrent). Évaluation en deux passes :

  1. Passe large sur les coups pertinents (bords + abords des masses) : libertés propres, libertés adverses, échappées adverses, captures, bonus de bord et de coin, et surtout un bonus de coupure quand le coup est sur un bord au contact de l’eau — c’est ce terme qui empêche le joueur de longer une rive.
  2. Passe profonde sur les 10 à 16 meilleurs candidats : simulation de la meilleure réponse de l’eau, retranchée du score du coup.

Coût mesuré : 23 ms par coup au niveau 1, 223 ms au pire au niveau 3 sur un 13×13.


6. Correctifs apportés depuis la v1

  1. AudioEngine.playBoing() inexistant — exception à chaque défaite, le bouton « Nouvelle partie » n’apparaissait jamais.
  2. Score final relu depuis le DOM (textContent) au lieu d’être recalculé.
  3. .cell:nth-last-child(-n+13) faussé par le <svg> enfant de #board : une cellule de la dernière ligne conservait sa bordure.
  4. Particules de liberté invisibles : z-index négatif dans le contexte d’empilement de la cellule, masquées par le fond des cases eau.
  5. Reconstruction complète du plateau (169 nœuds + écouteurs) à chaque coup : animations CSS réinitialisées, coût élevé sur mobile.
  6. Messages de statut en concurrence via plusieurs setTimeout.

Le noyau de règles de la v2 est couvert par des tests automatisés : libertés en coin et au centre, pétrification, interdiction du suicide, non-libération des cases mortes, parties complètes en 9×9 / 11×11 / 13×13, légalité de tous les coups de l’IA, invariant « aucune masse à 0 liberté après résolution ».