1 points par GN⁺ 2024-05-14 | 1 commentaires | Partager sur WhatsApp
  • Static Chess est une expérimentation de jeu d’échecs web statique dont tous les écrans sont créés uniquement avec HTML et CSS, et où chaque coup se joue en cliquant sur un lien
  • Après qu’un joueur a joué son coup, il envoie le lien généré à un ami ; l’adversaire renvoie ensuite à son tour un lien pour poursuivre la partie
  • Avec une interface brutaliste dépouillée des animations et des interactions fluides, l’expérience se concentre sur l’échiquier et le choix des coups eux-mêmes
  • Les fonctionnalités sont encore très limitées et certaines parties peuvent être cassées, ce qui laisse des contraintes pour une vraie partie
  • Le projet laisse ouvertes plusieurs pistes d’extension : prise en charge du vrai gameplay, interface simple pour parties longues, ou encore adversaire IA statique

Des échecs statiques qui avancent par liens

  • Static Chess est un site d’échecs qui vise un « plain, brutalist, no bloat chess »
  • L’écran est composé uniquement avec HTML et CSS, et les coups d’échecs s’exécutent par clic sur un lien
  • La partie se poursuit par échange de liens
    • Un joueur joue son coup puis envoie le lien à un ami
    • Son ami joue un coup depuis ce lien, puis renvoie un nouveau lien pour passer au tour suivant
  • Les animations et interactions fluides sont volontairement exclues
  • Le site pose aussi la question de savoir si, si Google l’indexe, il finira par calculer tous les coups d’échecs possibles

Limites actuelles et idées d’extension

  • Les fonctionnalités sont encore limitées, et certaines parties peuvent être cassées
  • L’auteur demande qu’on lui signale les bugs découverts
  • Le projet s’inspire d’une discussion HN sur un site contenant tous les états possibles d’une partie de tic-tac-toe
  • Il est prévu de l’étendre pour prendre en charge un vrai gameplay
  • Il pourrait évoluer vers une interface simple pour les parties longues entre amis
  • L’ajout d’une fonctionnalité permettant de jouer contre une IA statique pourrait aussi être intéressant
  • Si vous souhaitez une fonctionnalité, vous pouvez proposer le changement via une PR

1 commentaires

 
GN⁺ 2024-05-14
Commentaires Hacker News
  • En ajoutant une FEN à l’URL, on peut aussi jouer à Chess960 (Fischer Random Chess) ou à d’autres variantes avec « position de départ personnalisée ». Il suffit de remplacer les espaces par des underscores
    Ex. : https://chess.maxmcd.com/bbnqrknr/pppppppp/8/8/8/8/PPPPPPPP/...

    • En Chess960, les règles du roque sont aussi différentes de celles des échecs classiques, et je ne pense pas que le site puisse savoir, à partir de la seule FEN, qu’il doit appliquer ces règles
  • Je ne sais pas trop si le premier paragraphe, « des échecs purs, bruts et sans fioritures », présente cela comme un avantage ou un inconvénient de cette implémentation
    Il y a une différence entre promouvoir une implémentation atypique pour explorer ce qui est possible, et décrire un logiciel construit avec les technologies appropriées comme de la bloat, avec des animations ridicules et des interactions fluides qui gênent le jeu
    Le deuxième paragraphe, qui dit que les fonctionnalités sont limitées et que cela peut être cassé, met encore plus en évidence les limites de cette implémentation. Bien sûr, c’était peut-être entièrement satirique et je suis tombé dans le panneau. Cela reste une implémentation astucieuse et bien réalisée

    • Cela ressemble surtout à une description humoristique, qui pousse un avantage jusqu’à un extrême illogique
      Les limitations fonctionnelles semblent tout de même concerner d’autres fonctionnalités que celles qualifiées de bloat
    • Cela ressemble plutôt à quelque chose fait « parce que l’idée semblait possible », et je trouve que c’est toujours une raison valable de créer quelque chose d’un peu étrange
      L’idée de jouer via des liens sans état me plaît pas mal, et la « joliesse » des animations et des interactions ne me semble pas forcément être un gain net, du moins pour moi
      Les « bonnes technologies » dépendent fortement de l’expérience utilisateur que l’on veut construire. Pour cet objectif, HTML et CSS étaient les bonnes technologies, de la même manière qu’un autre ensemble de technologies serait adapté aux objectifs UX d’un site avec davantage de fonctionnalités
    • L’idée de ne pas vouloir d’animations dans un jeu est assez drôle. C’est soit une blague, soit quelqu’un allé beaucoup trop loin dans l’idée qu’il ne devrait pas y avoir de JavaScript sur le Web
  • Techniquement, ce n’est pas vraiment un site statique, si ? Le backend rend dynamiquement la page à chaque requête
    Il n’y a probablement pas 999999919291293923 pages pré-rendues quelque part sur le serveur

    • Techniquement, pour couvrir toutes les positions légales aux échecs, il faudrait environ 4,8 * 10^44 pages [1]
      En plus, le site sert très bien des positions totalement illégales comme celle-ci : https://chess.maxmcd.com/rnbqkbnr/qqqqqqqq/8/8/8/8/QQQQQQQQ/...
      [1] https://github.com/tromp/ChessPositionRanking
    • « Statique » semble vouloir dire qu’il n’y a pas de XmlHttpRequest
    • Il y a bien des pages pré-rendues. Elles sont simplement compressées avec un schéma de compression propre à l’application
    • Le backend n’a même pas vraiment besoin de faire le rendu. Avec une application monopage utilisant pushState, cela pourrait littéralement être un seul fichier
  • La détection des coups légaux est sympa, mais il ne semble pas reconnaître le mat ?
    https://chess.maxmcd.com/r1b1kRnr/p1ppB2p/n2P2p1/8/7P/1p6/PP...
    Il ne devrait pas l’indiquer comme mat ?

    • Vu que les pièces ne bougent plus, il détecte probablement le mat, mais l’affichage seul est incorrect
    • Si la page d’échec et mat contenait effectivement le mot « checkmate », le bot de Google pourrait indexer tout le site puis trouver les mats
      Idéalement, chaque page devrait contenir une chaîne résumant tous les états précédents de l’échiquier ayant mené à cette position. On pourrait alors rechercher l’état actuel du plateau avec « checkmate white » pour trouver toutes les façons de gagner depuis une position donnée
      Pour faire de Google l’oracle ultime des échecs, il ne resterait plus qu’à convaincre l’adversaire de jouer exactement les coups trouvés
    • Il n’autorise pas non plus la prise en passant
  • Je m’attendais à une variante des échecs où aucune pièce ne peut bouger

    • Moi aussi. En attendant, on peut essayer un jeu similaire mais encore plus statique : Go. Les recherches marchent mieux avec le nom chinois Weiqi ou le nom coréen Baduk
    • Si on ne clique pas sur les liens, c’est effectivement le cas
  • Beau travail. Ce serait intéressant de le mettre derrière un CDN comme Cloudflare et de voir à quoi ressemble le taux de cache hit

    • L’explorateur d’ouvertures de Lichess donnerait sans doute une indication assez précise de l’évolution du taux de cache hit
      https://lichess.org/analysis#explorer
      Je pense que ce serait plus proche de la base de données Lichess, assez différente de la base Masters. Par exemple, dans Masters, 46 % des réponses à e4 sont c5, alors que sur Lichess, c5 ne représente que 19 %
  • https://chess.maxmcd.com/rnbqk3/pppp2pB/2P1p3/1P1P2Bp/3n4/b2...
    Très cool, je suis allé jusqu’au bout et j’ai même obtenu un mat

    • Ce serait bien que l’URL contienne uniquement la chaîne de coups plutôt que l’état du plateau. On pourrait alors simplement coller la chaîne de coups dans l’URL pour obtenir la position
  • J’avais moi aussi créé une page d’échecs statique il y a quelque temps, et j’y avais ajouté une connexion P2P avec WebRTC pour pouvoir jouer avec un ami

    • Try it
    • Fork it
    • Je vois parfois un bug étrange où le jeu joue automatiquement un coup à la place d’un joueur. En particulier, lorsqu’une dame prend une pièce et que la dame adverse peut prendre cette dame, le jeu semble jouer automatiquement la prise de dame par la dame
    • Les effets sonores sont vraiment bons. En particulier le son de l’échec
  • La promotion du pion est verrouillée sur la dame. Ce serait bien de prendre en charge les autres promotions aussi : https://www.chess.com/forum/view/game-showcase/checkmate-by-...

  • Très cool. En plus de la FEN, ce serait bien d’avoir aussi l’historique des coups, et il pourrait probablement être placé dans le fragment
    Ex. : https://chess.maxmcd.com/rnbqkbnr/ppp1pppp/8/3p4/3P1B2/8/PPP...