1 pontos por GN⁺ 2024-05-14 | 1 comentários | Compartilhar no WhatsApp
  • Static Chess é um experimento de xadrez na web que cria todas as telas do jogo apenas com HTML e CSS, e cada jogada é feita clicando em links
  • Depois que um jogador faz sua jogada e envia o link gerado para um amigo, o outro responde enviando outro link para continuar a partida
  • Com uma interface brutalista que abre mão de animações e interações suaves, o foco fica no tabuleiro e na própria escolha das jogadas
  • As funcionalidades ainda são bastante limitadas e pode haver partes quebradas, então ainda existem restrições para jogar de fato
  • No futuro, o projeto deixa em aberto possibilidades de expansão como suporte a partidas reais, uma interface simples para jogos longos e um oponente de IA estática

Xadrez estático jogado por links

  • Static Chess é um site de xadrez com a proposta de ser “plain, brutalist, no bloat chess”
  • A interface é composta apenas por HTML e CSS, e as jogadas são executadas por cliques em links
  • A partida continua por meio da troca de links
    • Um jogador faz sua jogada e depois envia o link para um amigo
    • O amigo faz sua jogada nesse link e envia outro link de volta para passar o turno seguinte
  • Animações e interações suaves foram deliberadamente excluídas
  • O autor também levanta a questão de saber se, ao indexar o site, o Google acabaria calculando todas as jogadas possíveis de xadrez

Limitações atuais e ideias de expansão

  • As funcionalidades ainda são limitadas e pode haver partes quebradas
  • O autor pede que avisem caso encontrem bugs
  • O projeto foi inspirado por uma discussão no HN sobre um site com todos os estados possíveis de partidas de jogo da velha
  • Há planos de expandi-lo para dar suporte a partidas reais no futuro
  • Ele pode evoluir para uma interface simples para partidas longas entre amigos
  • O autor também acha que seria interessante adicionar a opção de jogar contra uma IA estática
  • Se houver alguma funcionalidade desejada, é possível sugerir mudanças por meio de um PR

1 comentários

 
GN⁺ 2024-05-14
Opiniões no Hacker News
  • Se você anexar uma FEN à URL, também dá para usar Chess960 (Fischer Random Chess) ou outras variantes com “posição inicial personalizada”. Basta trocar os espaços por underscores
    Ex.: https://chess.maxmcd.com/bbnqrknr/pppppppp/8/8/8/8/PPPPPPPP/...

    • No Chess960, as regras de roque também são diferentes das do xadrez comum, mas acho que o site não teria como saber, só pela FEN, que deve usar essas regras
  • Não sei bem se o primeiro parágrafo, sobre “xadrez puro, tosco e sem firulas”, é uma vantagem ou desvantagem desta implementação
    Uma coisa é divulgar que foi implementado de um jeito incomum para explorar possibilidades; outra é descrever software feito com a tecnologia adequada como inchado, com animações ridículas e interações suaves que atrapalham o jogo
    No segundo parágrafo, ele diz que os recursos são limitados e que talvez esteja quebrado, o que expõe ainda mais as limitações desse tipo de implementação. Claro, talvez tudo fosse sátira e eu tenha caído. De todo modo, é uma implementação inteligente e bem feita

    • Parece bem provável que seja uma descrição bem-humorada, levando algum benefício a um extremo ilógico
      As limitações de recursos ainda assim parecem se referir a outros recursos, não às coisas que ele chamou de inchaço
    • Parece mais algo feito “porque tive a ideia de que isso era possível”, e acho que esse é sempre um motivo válido para criar algo meio peculiar
      Gosto bastante da ideia de jogar por meio de links sem estado, e a “beleza” das animações e interações, pelo menos para mim, não parece um ganho líquido
      A “tecnologia correta” depende muito da experiência de usuário que se quer criar. Para este objetivo, HTML e CSS eram as tecnologias certas, assim como, para as metas de UX de um site com mais recursos, outro conjunto de tecnologias seria o adequado
    • A ideia de não querer animações em jogos é bem engraçada. Ou é piada, ou a pessoa mergulhou fundo demais no lado de que a web não deveria ter JavaScript
  • Estritamente falando, isto não seria um site estático, certo? A cada requisição, o backend renderiza dinamicamente
    Não acho que exista, em algum lugar do servidor, 999999919291293923 páginas pré-renderizadas

    • Tecnicamente, para cobrir todas as posições legais de xadrez, seriam necessárias cerca de 4,8 * 10^44 páginas [1]
      Além disso, ele também serve normalmente posições totalmente ilegais como esta: https://chess.maxmcd.com/rnbqkbnr/qqqqqqqq/8/8/8/8/QQQQQQQQ/...
      [1] https://github.com/tromp/ChessPositionRanking
    • “Estático” parece significar que não há XmlHttpRequest
    • As páginas pré-renderizadas existem, sim. Elas só estão comprimidas com um método de compressão específico da aplicação
    • O backend nem precisaria renderizar muita coisa. Se fosse um app de página única usando pushState, poderia literalmente ser um único arquivo
  • É bom ele detectar lances legais, mas parece que não reconhece xeque-mate?
    https://chess.maxmcd.com/r1b1kRnr/p1ppB2p/n2P2p1/8/7P/1p6/PP...
    Não deveria mostrar que é xeque-mate?

    • Pelo fato de as peças não se moverem mais, parece que ele detecta o xeque-mate, mas só não exibe corretamente
    • Se a página de xeque-mate realmente contiver a palavra “checkmate”, o bot do Google pode indexar o site inteiro e depois encontrar xeques-mates
      Idealmente, cada página deveria conter uma string resumindo todos os estados anteriores do tabuleiro que levaram até aquele estado. Assim, seria possível pesquisar o estado atual do tabuleiro junto com “checkmate white” e encontrar todas as formas de vencer a partir de uma posição específica
      Para transformar o Google no oráculo supremo do xadrez, só falta convencer o adversário a jogar exatamente os lances encontrados
    • Também não permite en passant
  • Eu esperava que fosse uma variante de xadrez em que nenhuma peça pudesse se mover

    • Eu também. Enquanto isso, dá para jogar Go, um jogo parecido, mas mais estático. As buscas funcionam melhor pelo nome chinês, Weiqi, ou pelo nome coreano, Baduk
    • Se você não clicar em nenhum link, é exatamente isso
  • Trabalho bacana. Seria interessante colocá-lo atrás de uma CDN como a Cloudflare e ver como fica a taxa de acerto de cache

    • O explorador de aberturas do Lichess provavelmente seria um indicador bastante preciso de como a taxa de acerto de cache evoluiria
      https://lichess.org/analysis#explorer
      Acho que ficaria mais próximo do banco de dados do Lichess, que é bem diferente do banco Masters. Por exemplo, no Masters, 46% respondem a e4 com c5, mas no Lichess c5 fica em apenas 19%
  • https://chess.maxmcd.com/rnbqk3/pppp2pB/2P1p3/1P1P2Bp/3n4/b2...
    Muito legal; fui até o fim e consegui fazer xeque-mate

    • Seria bom se a URL contivesse apenas a cadeia de lances, em vez do estado do tabuleiro. Assim, bastaria colar a cadeia de lances na URL para obter o estado do tabuleiro
  • Há algum tempo eu também fiz uma página de xadrez estática e adicionei uma conexão P2P via WebRTC para poder jogar com amigos

    • Try it
    • Fork it
    • Às vezes vejo um bug estranho em que o jogo faz um lance automaticamente no lugar do jogador. Especialmente quando uma dama captura uma peça e a dama adversária pode capturar essa dama, parece que o jogo automaticamente faz o lance de dama capturando dama
    • Os efeitos sonoros são realmente bons. Especialmente o som de xeque
  • A promoção de peão está fixa como dama. Seria bom suportar outras promoções também: https://www.chess.com/forum/view/game-showcase/checkmate-by-...

  • Muito legal. Além da FEN, seria bom ter também o histórico de lances, e talvez dê para colocá-lo no fragmento
    Ex.: https://chess.maxmcd.com/rnbqkbnr/ppp1pppp/8/3p4/3P1B2/8/PPP...