1 puntos por GN⁺ 2024-05-14 | 1 comentarios | Compartir por WhatsApp
  • Static Chess es un experimento de ajedrez web estático que construye toda la interfaz del ajedrez solo con HTML y CSS, y cada jugada se realiza haciendo clic en enlaces
  • Después de que un jugador hace una jugada y envía el enlace generado a un amigo, la otra persona continúa la partida enviando otro enlace
  • Con una interfaz brutalista que deja de lado las animaciones y las interacciones fluidas, se enfoca en el tablero y en la selección de jugadas en sí
  • Todavía tiene funciones bastante limitadas y puede haber partes rotas, así que aún existen restricciones para jugar de verdad
  • Más adelante deja abierta la posibilidad de ampliarlo con soporte para partidas reales, una interfaz simple para juegos largos y un oponente de IA estática

Ajedrez estático que avanza por enlaces

  • Static Chess es un sitio web de ajedrez cuyo objetivo es ser “plain, brutalist, no bloat chess”
  • La pantalla está construida solo con HTML y CSS, y las jugadas se ejecutan con clics en enlaces
  • La partida continúa intercambiando enlaces
    • Un jugador hace su jugada y luego envía el enlace a un amigo
    • El amigo hace una jugada desde ese enlace y vuelve a enviar otro para pasar al siguiente turno
  • Las animaciones o interacciones fluidas se excluyen intencionalmente
  • También deja la pregunta de si Google, al indexar el sitio, terminaría calculando todas las jugadas posibles de ajedrez

Limitaciones actuales e ideas de expansión

  • Las funciones siguen siendo limitadas y puede haber partes rotas
  • Pide que le avisen si encuentran errores
  • Está inspirado en una discusión en HN sobre un sitio con todos los estados posibles de una partida de tres en raya
  • Planea ampliarlo en el futuro para dar soporte a partidas reales
  • Podría evolucionar hacia una interfaz simple para partidas largas entre amigos
  • También cree que podría ser divertido agregar una función para jugar contra una IA estática
  • Si hay alguna función deseada, se pueden proponer cambios mediante un PR

1 comentarios

 
GN⁺ 2024-05-14
Comentarios en Hacker News
  • Si le agregas un FEN a la URL, también se pueden jugar variantes como Chess960 (Fischer Random Chess) u otras con “posición inicial personalizada”. Solo hay que cambiar los espacios por guiones bajos
    Ej.: https://chess.maxmcd.com/bbnqrknr/pppppppp/8/8/8/8/PPPPPPPP/...

    • En Chess960 también cambian las reglas del enroque, pero no parece que el sitio pueda saber solo por el FEN que debería usar esas reglas
  • No me queda claro si el primer párrafo, eso de “ajedrez puro, tosco y sin adornos”, es una ventaja o una desventaja de esta implementación
    Es distinto promocionarlo como una exploración de posibilidades con una implementación poco común, que describir software hecho con tecnología adecuada como hinchado, con animaciones ridículas e interacciones pulidas que estorban al jugar
    En el segundo párrafo dice que las funciones son limitadas y que puede estar roto, así que ahí se notan más las limitaciones de este enfoque. Aunque también puede ser que todo fuera sátira y yo haya caído. Igual es una implementación inteligente y bien hecha

    • Parece más bien una descripción humorística, como si llevara alguna ventaja hasta un extremo ilógico
      Y las limitaciones de funciones probablemente apunten a otras cosas, no a las mismas que llamó hinchazón
    • Se siente más como algo hecho porque “pensó que era posible”, y como motivo para crear algo medio raro, siempre me parece válido
      Me gusta bastante la idea de jugar pasando enlaces sin estado, y la “belleza” de las animaciones e interacciones, al menos para mí, no se siente como una ganancia neta
      La “tecnología correcta” depende mucho de la experiencia de usuario que quieras construir. Para este objetivo, HTML y CSS eran la tecnología adecuada, igual que para sitios con más funciones puede ser adecuado otro conjunto de tecnologías
    • La idea de no querer animaciones en un juego es bastante chistosa. O es broma, o se metieron demasiado en la postura de que la web no debería tener JavaScript
  • Técnicamente esto no sería un sitio estático, ¿o sí? El backend renderiza dinámicamente cada vez que hay una solicitud
    No creo que haya 999999919291293923 páginas prerenderizadas guardadas en algún lugar del servidor

    • Técnicamente, para cubrir todas las posiciones legales de ajedrez harían falta unas 4.8 * 10^44 páginas [1]
      Y además también sirve posiciones completamente ilegales como esta: https://chess.maxmcd.com/rnbqkbnr/qqqqqqqq/8/8/8/8/QQQQQQQQ/...
      [1] https://github.com/tromp/ChessPositionRanking
    • Parece que “estático” aquí significa que no hay XmlHttpRequest
    • Sí existen páginas prerenderizadas. Solo que están comprimidas con un esquema de compresión específico de la aplicación
    • Ni siquiera haría falta que el backend renderice mucho. Si fuera una app de una sola página con pushState, literalmente podría ser un solo archivo
  • Está bueno que detecte jugadas legales, pero parece que no sabe qué es un jaque mate
    https://chess.maxmcd.com/r1b1kRnr/p1ppB2p/n2P2p1/8/7P/1p6/PP...
    ¿No debería marcarlo como jaque mate?

    • Viendo que las piezas ya no se pueden mover, parece que sí detecta el jaque mate, pero no lo muestra bien
    • Si la página de jaque mate realmente dijera ‘checkmate’, entonces el bot de Google podría indexar todo el sitio y encontrar los jaques mate
      Idealmente, cada página debería incluir una cadena que resuma todos los estados previos del tablero que llevaron a ese estado. Así uno podría buscar el estado actual del tablero junto con ‘checkmate white’ para encontrar todas las maneras de ganar desde una posición específica
      Para convertir a Google en el oráculo definitivo del ajedrez, lo único que faltaría sería convencer al rival de que haga exactamente las jugadas encontradas
    • Tampoco permite captura al paso
  • Yo esperaba que fuera una variante de ajedrez donde ninguna pieza pudiera moverse

    • Yo también. Mientras tanto, se puede probar Go, que es parecido pero más estático. Para buscarlo, funciona mejor el nombre chino Weiqi o el nombre coreano Baduk
    • Si no haces clic en el enlace, de hecho sí es así
  • Gran trabajo. Estaría bueno ponerlo detrás de un CDN como Cloudflare y ver cómo sale la tasa de aciertos de caché

    • El explorador de aperturas de Lichess probablemente sería un indicador bastante preciso de cómo se comportaría la tasa de aciertos de caché
      https://lichess.org/analysis#explorer
      Probablemente se parecería más a la base de datos de Lichess que a la de Masters, que es bastante distinta. Por ejemplo, en Masters responden a e4 con c5 un 46% de las veces, pero en Lichess c5 apenas llega al 19%
  • https://chess.maxmcd.com/rnbqk3/pppp2pB/2P1p3/1P1P2Bp/3n4/b2...
    Está muy bueno, y fui hasta el final para lograr un jaque mate

    • Estaría bueno que la URL guardara solo la secuencia de jugadas en vez del estado del tablero. Así bastaría con pegar la secuencia en la URL para obtener la posición
  • Hace tiempo yo también hice una página de ajedrez estático, pero le agregué conexión P2P con WebRTC para poder jugar con un amigo

    • Try it
    • Fork it
    • A veces veo un bug raro donde la partida hace una jugada sola en lugar del jugador. En especial, si una dama captura una pieza y la dama rival puede capturar a esa dama, parece que la partida juega automáticamente la captura de dama por dama
    • Los efectos de sonido están buenísimos. En especial el sonido de jaque
  • La promoción de peón está fija en dama. Estaría bueno que soportara otras promociones: https://www.chess.com/forum/view/game-showcase/checkmate-by-...

  • Está muy bueno. Además del FEN, estaría bueno tener también el registro de jugadas, y probablemente podría ir en el fragmento
    Ej.: https://chess.maxmcd.com/rnbqkbnr/ppp1pppp/8/3p4/3P1B2/8/PPP...