Un intero gioco di scacchi, server-autoritativo, su NATS

FeatureMediaService
Spegnimento
8 settembre 2026 alle ore 00:22 UTC
Autore
Kamo
Impegno
3c48418

Le regole vivono in un posto ed è questo. ChessEngine implementa il intere regole — movimento generazione, legalità sotto pin e controllo, castling, en passant, promozione, checkmate, stallo, triplice ripetizione, la cinquantina regola e materiale insufficiente — e il browser non possiede nessuno di esso. Ogni stato il server pubblica trasporta `legalMoves` con esso, in modo che la scheda si accende nessun giro e ancora non può non essere d'accordo su ciò che è legale, non essendo mai stato ha chiesto di avere un parere. Proved by perft piuttosto che da ispezione: foglia-nodo conta fino a profondità 3-4 da le quattro posizioni canoniche. Non era una cerimonia. La prima corsa fallì profondità 3 su una guardia chiave a `Math.abs(delta)`, che silenziosamente respinse ogni movimento cavaliere della forma "un rango, due file" — un generatore diritto su tutti 20 mosse di apertura e tre mosse sbagliate giù. Non c'e' niente di meno che per furto. ChessAi è alfa-beta sopra lo stesso generatore, con quiescenza (senza di esso un la ricerca fissa si ferma a metà scambio e ritiene un conteggio materiale temporaneo), MVV-LVA ordinazione, e pezzi-quare tabelle. Due bug degno di registrazione: la ricerca era fail-HARD, quindi una mossa di radice confusa ha restituito il limite alfa, che ha negato in un enorme punteggio positivo e ha fatto la peggiore vittoria mossa; e un tranquillo middlegame a profondità 6 ha preso 22 secondi, che non è un avversario difficile, ma una scheda che guarda rotto. Ora è fail-soft, e ogni livello ha un budget di tempo che iterativo approfondimento rende sicuro — ogni profondità completa lascia un intero movimento utilizzabile dietro. Realtime è `chess.member.{memberId}`, per membro e NON per partita. Questo è solo forma StompDestinazione Authz può controllare: è una guardia statica sulla percorso di intercettatore senza database, quindi un argomento di gioco non potrebbe essere autorizzato. Guardiato su SEND così come SUBSCRIBE — il semplice broker percorsi per destinazione senza preoccuparsi quale comando ha portato la cornice, quindi un guardia su SUBSCRIBE da solo avrebbe ancora permesso a chiunque sulla presa di dipingere una scheda fabbricata sullo schermo di un collega. Un gioco live per coppia è un indice unico parziale, non un controllo nel servizio: un controllo perde a due inviti inviati nello stesso secondo, che è esattamente quando Succede. Il servizio segnala la gara piuttosto che fallire, e restituisce il gioco che volevano entrambi.

Tutte le modifiche

Come quello che vedi la spedizione?

Ognuno di questi aggiornamenti atterra automaticamente nello spazio di lavoro. Inizia gratis e guardalo crescere settimana dopo settimana.

Inizia gratis per sempreVisualizza il prezzo