Um jogo inteiro de xadrez, servidor-autoritativo, sobre NATS

FeatureMediaService
Shipped
8 de setembro de 2026 às 00:22 UTC
Author
Kamo
Commit
3c48418

As regras vivem em UM lugar e é este. ChessEngine implementa o todo o conjunto de regras — geração de movimento, legalidade sob pin e verificação, casting, en passageiro, promoção, xeque-mate, impasse, repetição tríplice, o regra e material insuficiente — e o navegador não possui nada disso. Cada estado o servidor publica carrega `legalMoves' com ele, para que o tabuleiro acende com nenhuma viagem de ida e volta e ainda não pode discordar sobre o que é legal, nunca ter sido pediu para ter uma opinião. Provado por perft em vez de por inspeção: o nó-folha conta para profundidade 3-4 de As quatro posições canónicas. Isso não foi uma cerimónia. A primeira execução falhou em profundidade 3 sobre um guarda chaveado para `Math.abs(delta)', que silenciosamente rejeitou cada cavaleiro movimento da forma "um posto, dois arquivos" — um gerador direito sobre todos 20 movimentos de abertura e três camadas erradas para baixo. Nada menos que isso. ChessAi é alfa-beta sobre o mesmo gerador, com quiescência (sem a pesquisa de profundidade fixa impede o intercâmbio e acredita numa contagem temporária de materiais), Ordenação de VVM-LVA e tabelas quadradas. Dois erros que valem a pena gravar: a pesquisa foi fail-HARD, então um movimento de raiz refutado devolveu o limite alfa, que negou em uma enorme pontuação positiva e fez o pior movimento ganhar; e um jogo meio silencioso na profundidade 6 levou 22 segundos, que não é um adversário duro, mas uma placa que olha Partido. Agora é suave e cada nível tem um orçamento de tempo que iterativo o aprofundamento torna seguro — cada profundidade completa deixa para trás todo um movimento utilizável. Em tempo real é `chess.member.{memberId}`, por membro e NÃO por jogo. Este é o Apenas forma StompDestination Authz pode verificar: é uma guarda estática na caminho do interceptor sem base de dados, então um tópico com a tecla do jogo não poderia ser autorizados. Guardado no SEND, bem como no SUBSCRIBE — o simples corretor rotas por destino sem se importar qual comando carregou o quadro, então um guarda em SUBSCRIBE sozinho ainda deixaria qualquer um na tomada pintar um Placa fabricada no ecrã de um colega. Um jogo ao vivo por par é um índice único parcial, não uma verificação no serviço: a check perde para dois convites enviados no mesmo segundo, que é exatamente quando Acontece. O serviço relata a corrida em vez de falhar, e retorna O jogo que ambos queriam.

All changes

Como o que vês no transporte?

Cada uma dessas atualizações pousa automaticamente em seu espaço de trabalho. Comece grátis e veja crescer semana após semana.

Começar Livre Para SempreVer Preços