Skip to main content
Torna ai lavori selezionati
Case Study · 2025

Terathos
La ferita della mortalità.

Un souls-like web-native che vive dentro una scheda del browser e ti chiede comunque di sanguinare per andare avanti. TypeScript, PixiJS e GSAP sulla superficie; una spina dorsale NestJS che non si fida del client.

Ruolo
Design, ingegneria, backend
Anno
2025 → in corso
Stato
Playtest chiuso
Terathos — title screen: THE WOUND OF MORTALITY
Fig. 01pastacode.xyz / title
01

Genesi

Un souls-like senza launcher, senza installer, senza scuse per non morire di nuovo.

Faccio giochi da più di dieci anni — Unity, Phaser, clienti del settore casino, esperimenti multiplayer. Terathos è nato da una domanda semplice: cosa si proverebbe a giocare un souls-like se vivesse sul web aperto?

Niente installer. Niente store. Solo un URL e una porta che dice enter as guest. Ne è venuto fuori qualcosa a metà tra roguelike e bestiario — un mondo pixel dove ogni morte insegna qualcosa, e ogni sessione lascia un segno che non puoi riprenderti.

02

Artigianato

Tre cose sostengono tutta l'esperienza.

Combattimento
Stamina, windup, recovery frame. Il timing è tutto. Niente auto-aim, niente quick-save, niente ammorbidimenti. Il gioco punisce, non ricompensa.
Spazio
Stanze procedurali, incontri scritti a mano. La generazione dà scala; il level design scritto tiene il significato.
Voce
Un unico filo editoriale — descrizioni di oggetti, iscrizioni dei boss, voci tra una run e l'altra. Niente lore dump. Tutto si guadagna.
03

Il problema difficile

Non è un problema di rendering. È un problema di fiducia.

Il browser è un runtime ostile: devtools aperti, memoria ispezionabile, ogni chiamata di rete intercettabile. Un souls-like il cui progresso conta deve difendere il ricordo del giocatore.

Il client è quindi intenzionalmente sottile. Le run sono autenticate. Lo stato viene riconciliato. Perfino il bestiario che stai riempiendo vive sul server. La finestra è bella; la verità è altrove.

04

Cosa sto ancora imparando

Il web impone un'economia che le console non hanno mai chiesto.

Ogni asset è un download. Ogni animazione è banda. Ogni sprite caricato è un momento in cui il giocatore sente il gioco prima ancora di iniziarlo.

Spedire Terathos è stato un esercizio continuo: chiedere, per ogni pixel, ti guadagni lo spazio?

Stack

  1. 01

    PixiJS

    Rendering retained-mode, 60fps con dozzine di sprite animati in scena.

  2. 02

    GSAP

    Tutto ciò che il giocatore sente: flash d'impatto, damage number, screen-shake, peso UI.

  3. 03

    TypeScript

    Layer entità in stile ECS. I sistemi si compongono senza ereditarietà.

  4. 04

    NestJS

    API autenticate, validazione server-side, una sola verità per ogni run.

  5. 05

    PostgreSQL

    Progresso, bestiario, classifiche. Relazionale, indicizzato, verificabile.