README
Il README è in inglese.
Un survivor game per browser con 173 campioni, simulazione deterministica e co-op online. Leggi il README completo su GitHub.
Progetti / Rift Survivors
Un survivor game per browser con 173 campioni ispirati a League, simulazione deterministica e co-op online.
README
Il README è in inglese.
Un survivor game per browser con 173 campioni, simulazione deterministica e co-op online. Leggi il README completo su GitHub.
Cosa è cambiato
È nato come un survivor clone ed è diventato il progetto in cui architettura, performance e multiplayer dovevano funzionare insieme.
La simulazione è un package TypeScript puro, senza DOM, rete o orologio. Intorno stanno contenuti, client, server e protocollo condiviso. Così la stessa simulazione gira in un worker del browser e su un server Node, e i test non hanno bisogno del renderer.
Il gioco gira a 30 Hz fissi con RNG seedato, store struct-of-arrays con pool e uno spatial hash. Gli snapshot deterministici mi hanno permesso di testare due volte lo stesso seed, aggiungere un bot di balance e ragionare sulla rete senza indovinare.
Centinaia di nemici e proiettili mi hanno costretto a evitare allocazioni per frame, riusare gli slot delle entità, limitare i pool e ricostruire un flow field ogni 12 tick invece di calcolare il pathfinding per ogni nemico. Ho imparato a misurare la simulazione, non solo gli FPS.
Il server co-op è autoritativo, invia snapshot completi e delta, e il client interpola tra i tick. Reconnect, resync, messaggi invalidi e un giocatore che cade dovevano essere gestiti esplicitamente. Mi ha cambiato il modo di pensare allo stato condiviso tra più client.
173 campioni, upgrade, nemici e stage sono dati tipizzati e validati all'avvio. I ruleset scelgono i sistemi, i registry risolvono i comportamenti per id e i save hanno migrazioni versionate. Aggiungere un campione non significa più modificare il tick loop.
TypeScript strict, Biome, una pipeline CI e 179 test superati hanno reso possibile il resto. Documentazione, ADR e note di handoff facevano parte del lavoro, non della pulizia dopo.
Ancora aperto
La build browser si sta spostando su rift.carletti.work. Il matchmaking non è ancora configurato, le mosse uniche coprono gli otto campioni originali e il co-op ha bisogno di più playtest umani.