Il Problema
L’idea di AirPoker è nata da un’esigenza concreta: giocare a Texas Hold’em con gli amici nei parchi o da McDonald’s senza doversi portare dietro una valigetta pesante con centinaia di fiches di plastica, col rischio costante di perderle o fare errori nel conteggio dei piatti.
Spesso avevamo con noi un mazzo di carte tradizionale, ma mancavano le fiches; altre volte non avevamo né mazzo né fiches ma volevamo comunque fare una partita rapida tra smartphone. Le app di poker esistenti sugli store richiedevano registrazioni invasive, acquisti in-app di fiches fittizie, annunci pubblicitari continui e connessioni a tavoli con sconosciuti, rendendo impossibile una partita privata immediata e senza attrito.
Cosa Fa AirPoker
AirPoker è una Progressive Web App responsive progettata per funzionare all’istante su qualsiasi browser mobile o desktop, offrendo due modalità di gioco distinte:
- Manager di Fiches per Mazzo Fisico: I giocatori al tavolo usano un vero mazzo di carte fisiche gestito a mano, mentre l’applicazione sincronizza lo stack di fiches, i bui, le puntate, i rilanci e la suddivisione esatta del piatto tra tutti i partecipanti in tempo reale.
- Tavolo Virtuale Completo: Distribuzione automatica delle carte private e comunitarie (flop, turn, river), gestione dei turni con timer, animazioni di puntata e calcolo del vincitore allo showdown con valutazione algoritmica dei punti.
L’accesso a una stanza avviene in pochi secondi tramite codice stanza o link diretto, senza registrazione preventiva.
Le Sfide Tecniche Più Complesse
1. Calcolo Cascading dei Piatti Secondari (Side Pots)
La logica più complessa del Texas Hold’em riguarda le situazioni di all-in multipli con stack disuguali. Quando tre o più giocatori vanno all-in con importi differenti (es. Giocatore A con 20€, Giocatore B con 50€, Giocatore C con 100€), il piatto deve dividersi in un piatto principale e molteplici side pots accessibili solo ai giocatori che hanno coperto il rispettivo importo. AirPoker implementa un algoritmo deterministico che traccia l’impegno di ciascun giocatore per livello di puntata e distribuisce ogni piatto secondario in ordine inverso di eleggibilità allo showdown.
2. Sincronizzazione in Tempo Reale e Concorrenza
Gestire lo stato distribuito di una partita su Firestore richiede la garanzia che due azioni simultanee (es. un fold e un raise allo scadere del timer) non lascino il tavolo in uno stato incoerente. Utilizzando transazioni atomiche di Firestore e sottoscrizioni reattive onSnapshot, ogni mutazione dello stato di gioco viene validata e propagata a tutti i client connessi con latenza sub-secondo.
3. Motore di Valutazione delle Mani (7-Card Hand Evaluator)
Al momento dello showdown, l’algoritmo deve combinare le 2 carte private di ciascun giocatore con le 5 carte comunitarie, identificare la migliore combinazione di 5 carte tra le 21 combinazioni possibili e confrontare i ranghi (dalla carta alta alla scala reale, considerando kicker e pareggi) per assegnare correttamente i piatti.
Lo Stack Tecnologico & Decisioni Architetturali
- React & TypeScript: Garantiscono tipizzazione rigorosa per l’intera macchina a stati del gioco (stati del tavolo, azioni permesse per turno, strutture delle mani e dei piatti).
- Vite & Tailwind CSS: Build ultra-veloce e interfaccia dark-mode ottimizzata per schermi touch, con feedback tattile visivo e contrasto elevato per l’utilizzo all’aperto.
- Firebase Anonymous Auth: Permette ai giocatori di unirsi a una stanza con un solo tocco, creando un’identità temporanea persistente per la durata della sessione senza richiedere email o password.
- Cloud Firestore: Database NoSQL documentale in tempo reale, sfruttato con un modello dati orientato agli eventi e regole di sicurezza per proteggere le carte coperte degli avversari.
- Firebase Hosting: Distribuzione su rete CDN globale con zero costi infrastrutturali e disponibilità istantanea.
Risultati e Considerazioni
AirPoker ha dimostrato che è possibile costruire un’esperienza multiplayer in tempo reale fluida e complessa a costo zero di infrastruttura, sfruttando un’architettura serverless ben progettata. Il progetto ha consolidato competenze avanzate nella modellazione di macchine a stati complesse, nella gestione della concorrenza distribuita e nel design di interfacce mobile-first senza attrito.