Dieci Giochi, Un Motore
L'aggiunta di una nuova variante solitaria costa qui un oggetto di configurazione. Tutto il resto — trascinamento, disfare, suggerimenti, punteggio, risparmio — esiste già.
Dieci giochi è nove giochi troppi
Klondike, Spider, FreeCell, Yukon, russo, piramide, TriPeaks, golf, quaranta ladri e Canfield sono, dal punto di vista del giocatore, dieci giochi diversi.
Il modo ingenuo per costruire un sito come questo è quello di scrivere dieci giochi. Questo ti porta dieci implementazioni separate di trascinamento, dieci sistemi di annullare, dieci bugs subtly diversi, e una tassa permanente su mai cambiare nulla.
Quello che il motore possiede
Tutto quello che non è una regola appartiene al motore condiviso, che si rivela essere quasi tutto il lavoro.
| Le maniglie del motore | Perché è condiviso |
|---|---|
| Layout e dimensionamento | Ogni gioco è un insieme di posizioni di pile su una scheda che deve adattarsi a qualsiasi schermo |
| Drag & drop, tap-to-play | Interazione identica in tutti e dieci i giochi; i giocatori non dovrebbero mai riavviarlo |
| Undo | Esaminare l'intero stato, ripristinarlo. Regole-agnostica dal design |
| Timer, punteggio, numero di mossa | Stesso HUD ovunque, con le regole di punteggio per-game passate in |
| Hints | Il motore chiede al gioco "che cosa è una buona mossa qui?" e anima la risposta |
| Risparmio e ripresa | Un serializzatore per ogni gioco |
| Vinci il rilevamento e la celebrazione | Il gioco fornisce la prova; il motore fornisce i coriandoli |
Che cosa un gioco in realtà è
Un gioco, in questo codebase, è un oggetto che risponde a una manciata di domande. Quanti mazzi? Dove vanno i pilastri? Come è l'accordo iniziale stabilito? Data una carta e un pila di destinazione, è quello mossa legale? Il gioco ha vinto? Che cosa è un suggerimento ragionevole?
Yukon e russo Solitaire sono l'illustrazione più chiara. Sono lo stesso gioco, tranne che Yukon si costruisce in colori alterni e russo si costruisce nella stessa tuta. Condividono un file, e la differenza tra loro è un singolo booleano passato nella stessa funzione di fabbrica.
Nessun quadro, nessun passo di costruzione
Non c'è nessun React qui, nessun bundler, nessun transpiler e nessun Node_modules Le pagine sono HTML statico, gli stili sono due fogli di stile, e la logica è semplici moduli JavaScript caricati direttamente dal browser.
Le pagine stesse sono generate — pagine di gioco, guide e questo blog tutti escono da piccoli script di Node che leggono un file di contenuto e scrivono HTML. Questo ci dà l'unico vero vantaggio di un sistema di costruzione, che è che i mobili di pagina condivisa non possono derivare dalla sincronizzazione, senza il costo, che è che nulla funziona fino a quando la toolchain non fa.
Anche gli effetti sonori evitano lo schema. Ogni capovolto, luogo, suono e ronzio è sintetizzato dal vivo con l'API Web Audio piuttosto che caricato come file audio, quindi non c'è nulla da scaricare e niente da autorizzare.
Cosa ti costa caricare
Il risultato pratico è una pagina di gioco che è un paio di decine di kilobyte di markup, stili e script, più le immagini della carta, che sono precaricate su pagine di gioco in modo che il primo flip non appare mai vuoto, e memorizzato in modo aggressivo perché un mazzo di carte non cambia.
Nessun tracker, nessun script pubblicitario, nessuna parete di consenso di fronte alla scheda, che è in parte una decisione di valori e in parte una performance: lo script di terze parti più veloce è quello che non c'è.
L'unica cosa che siede davanti a tutto questo è Cloudflare, che memorizza il sito e filtra il traffico dannoso. privacy policy esclama quello che vede.
Dove il motore si ferma
Il sito ora ha dodici giochi, e dieci di loro funzionano sul motore descritto sopra. Cuori e Spade, aggiunto nell'agosto 2026, non farlo, e la ragione vale dire chiaramente: non sono giochi di pazienza.
Tutto sopra assume un giocatore contro un mazzo. Piles si trascina carte tra, uno stato di bordo, un test per se il gioco è vinto. Cuori e le spade sono giochi di trucco per quattro. Le mani sono trattate, le carte sono passate o le offerte sono fatte, quattro posti giocano a turno, i trucchi sono vinti, e i punteggi si accumulano sopra il giro dopo il giro fino a quando qualcuno raggiunge un obiettivo.
Quindi condividono ciò che è autenticamente condiviso: il mazzo, l'opera della carta, gli effetti sonori, il feltro, l'intestazione, l'abitudine di salvataggio e di risume e i mobili della pagina. Sotto hanno il loro piccolo modulo da tavolo, che conosce i sedili, un ordine di svolta, un trucco negli avversari del mezzo e del computer che pensano a quale carta giocare piuttosto che scegliere uno legale a caso.
Domande frequenti
Questo sito funziona offline?
In parte, le pagine sono statiche e cache bene, e ogni gioco salva il suo stato localmente, quindi una connessione sfacciata non perderà la mano.
- Hai rintracciato i giocatori?
Le statistiche di stato del gioco e di vita vengono memorizzate nel proprio browser utilizzando localStorage. Non vengono inviate da nessuna parte, e la cancellazione dei dati del browser li cancella.
Vuoi aggiungere altri giochi?
Sì. Per le varianti solitarie il motore è progettato in modo che un nuovo gioco è un oggetto di configurazione piuttosto che un nuovo codebase, che è ciò che rende l'aggiunta realistica. Giochi che non sono affatto pazienza, come Hearts e Spades, ottenere il proprio modulo invece di essere forzato attraverso di esso.