Ciao raga! Sono uno sviluppatore full-stack italiano. Ho costruito da solo un progetto che è partito come una cosa e ne è diventata un’altra, e voglio spiegarvi per bene cosa fa e com’è fatto sotto il cofano.
Si chiama vibeAI ed è composto da due metà che si incastrano.
━━ LA PARTE CHAT ━━
- Crei i tuoi personaggi AI: personalità, storia, avatar, modo di parlare
- Ci chatti uno a uno, oppure li metti insieme in una chat di gruppo e li fai interagire tra loro
- Puoi scoprire e chattare con i personaggi creati dagli altri utenti
- Messaggi giornalieri gratuiti per tutti
━━ LA PARTE GIOCO (Vibe Battle) ━━
Dentro l’app c’è un picchiaduro completo, e i nemici sono anche i personaggi che hai creato tu.
- Combattimento a tempismo, non a pressione di tasti: fermi una barra in movimento nella zona verde per colpire, tocchi al momento giusto un cerchio che si restringe per parare — e occhio alle finte
- Campagna con 60+ avversari: 50 predefiniti più i tuoi, mescolati con un seed così ogni run ha un ordine diverso
- Un boss che compare a sorpresa durante la run, volutamente imbattibile: ti distrugge e se ne va, per farti capire cosa ti aspetta alla fine
- Boss finale a 3 forme che scala in base a quanto sei forte
- Skin con bonus permanenti di vita e attacco, mosse speciali limitate a un uso per match
- PvP live 1v1 contro giocatori reali, accoppiati per XP
- Classifica mondiale con le statistiche di ogni giocatore
━━ COM’È FATTA SOTTO ━━
Stack: React + TypeScript sul front, Supabase (auth, Postgres, Realtime) e funzioni serverless sul back, Stripe per i pagamenti, deploy su Vercel. È una PWA, quindi niente store: si apre nel browser e si installa sulla home di Android e iPhone.
La parte che mi ha portato via più tempo di tutto il resto è l’anti-cheat del multiplayer. Il PvP è arbitrato dal server: i client non dichiarano quanti danni fanno, comunicano solo quanto è stato preciso il loro tempismo, e il danno lo calcola il server leggendo le statistiche reali dal database. Anche i premi di fine partita li assegna il server tramite sessioni firmate e monouso, così modificare il client lato browser non serve a niente. La sincronizzazione real-time va sul broadcast di Supabase, con un fallback REST quando il websocket non consegna.
━━ SULLA MONETIZZAZIONE, per essere chiaro ━━
Il gioco è gratuito e nessun contenuto è bloccato: campagna, boss finale e PvP sono accessibili a tutti. Gli acquisti opzionali (skin e valuta di gioco) servono a coprire i costi delle API e dell’infrastruttura. Lo dico subito per trasparenza.
━━ ━━ ━━
Se qualcuno ha lavorato su multiplayer real-time o su Realtime di Supabase, mi interessa confrontarmi — ci sono un paio di scelte (gestione dei match abbandonati, fallback del broadcast) su cui non sono sicuro di aver preso la strada migliore. E se volete provarlo e dirmi cosa non funziona, soprattutto sul feel del combattimento, mi fate un favore.
Rispondo a qualsiasi domanda tecnica.

