Mio padre mi ha stretto la mano troppo forte... come al solito. Poi mi ha lasciato lì, davanti al portone di un castello buio, con in mano una sola candela: è la prova di coraggio che farà di Mark un adulto.
Mark in DeDark è un gioco stealth dall'alto: ti muovi nell'ombra, eviti i nemici che pattugliano le sale, trovi la chiave e raggiungi l'uscita prima di essere scoperto. Tutto succede al buio, e l'unica cosa di cui ti puoi fidare è la fiamma che tieni in mano.
La storia di Mark
All'ultimo anno di università dovevamo realizzare un progetto per l'esame di Reti. Avevo già sviluppato il videogioco INFART, e mi sembrò molto più stimolante cimentarmi con qualcosa di nuovo: un videogioco multiplayer. L'idea era semplice: due giocatori partono agli estremi opposti di un labirinto, e vince chi raggiunge per primo l'uscita.
Scrissi il gioco ex novo e poi, attorno, tutta l'infrastruttura di rete: una lobby per scoprire gli altri giocatori sulla stessa LAN e un protocollo di sincronizzazione su UDP, con un payload che mi ero inventato per comunicare di continuo ad entrambi i client la posizione dell'avversario sulla mappa condivisa. Scelsi UDP proprio perché in un gioco in tempo reale la latenza conta più dell'affidabilità del singolo pacchetto: meglio una posizione leggermente datata che un movimento che arriva in ritardo. Fu l'unico esame in cui meritai 30 e lode.
Nell'oscurità: candela, chiavi e mostri
Il cuore del gioco è la candela che Mark tiene sempre in mano: illumina il suo intorno, è inesauribile e non si spegne mai da sola. È il suo unico punto fermo nel buio.
Le candele che si trovano sparse nei livelli, invece, servono a tutt'altro: si piazzano a terra come esca, per attirare, distrarre o bloccare i nemici e creare un varco. Sono centellinate apposta — se le sprechi, ti tocca ricominciare — e ogni livello parte sempre a inventario vuoto, come un piccolo sistema chiuso da risolvere.
Per uscire bisogna prima trovare la chiave che apre il portone di fine livello. Il buio non è mai un labirinto cieco da setacciare a tentoni: è uno strumento di tensione, sempre attraversabile, con i bracieri ad accendere i punti di riferimento e i bivi importanti. Il vero gioco è leggere le mostruosità che lo abitano e capire come scivolare oltre.
Il bestiario
Ogni nemico ha una sua personalità e un suo punto debole: imparare a leggerli è metà del gioco.
- Zombie — pattuglia lento e meccanico, avanti e indietro, senza mai deviare. Non ti vede: basta studiare il ritmo dei suoi passi e attraversare al momento giusto.
- Scheletro — ti insegue se ti scorge in linea retta, orizzontale o verticale. Passa quando è di spalle; se ti vede, esci dalla sua linea di vista e se ne andrà.
- Taurus — un guardiano che carica in linea retta e sfonda i muri rompibili sulla sua traiettoria. Lo si può usare a proprio favore: indirizzalo contro un muro, una trappola, o addirittura contro gli altri nemici.
- Ghost — attraversa i muri e attacca solo se ti muovi: quando ti sta per oltrepassare, resta immobile e ti passerà attraverso senza farti nulla.
- Bubu — il suo scopo nella non-vita è spegnerti le candele. Ha però paura dei bracieri grossi: attiralo verso uno e bloccalo dall'altra parte mentre passi.
- Goblin — conosce sempre la tua posizione e ti insegue senza tregua. Peggio: diventa più veloce ogni volta che usi una candela.
La pipeline di rendering: un 2D che finge il 3D
Questo è il videogioco che, ad oggi (2026), per me è stato il più complesso da sviluppare: cerca di renderizzare un mondo in 2D fingendo il 3D, e la gestione di luci e ombre è stata la parte più impegnativa.
L'immagine finale nasce dalla sovrapposizione di tre layer: il pavimento, una lightmap di sole ombre, e gli oggetti (muri, pilastri, personaggi). Ogni layer è illuminato con il normal mapping: una mappa delle normali dà volume e rilievo alle superfici, così muri e personaggi sembrano scolpiti dalla luce anche se sono semplici sprite piatti.
Le ombre morbide vengono proiettate in tempo reale dalla candela e da ogni altra sorgente, eredi della magnifica libreria Penumbra — che nella versione originale usavo per MonoGame e che ho riscritto e rielaborato per il mondo TypeScript. Il tocco finale è che ogni entità emette la propria luce colorata e animata: il viola dello scheletro, il rosso acceso del Taurus quando carica, il verde menta del ghost. È il dettaglio che, più di ogni altro, dà al castello la sua atmosfera.
Il potere dell'amicizia
Ho sviluppato questo gioco insieme ad un amico architetto, fotografo e artista: Marco Oppici, che ha curato in toto la direzione artistica e ha disegnato a mano ogni singolo asset. È stato un periodo di confronto tanto bello quanto impegnativo: la sfida più grande è stata conciliare la sua ambizione visiva fatta di normal map, illuminazione dinamica, ombre proiettate, con i tempi di sviluppo e la voglia di pubblicare il gioco prima di diventare nonni. Ogni asset grafico, in fondo, è anche un requisito tecnico per la pipeline di rendering: dietro ogni texture che vedete c'è stata una trattativa tra ciò che era bello e ciò che era sostenibile da realizzare.
Un videogioco interamente gratis, open source, e senza pubblicità
Questo gioco è interamente gratis ed open source: non utilizza alcuna libreria tracciante, nessun log per monitorare l'utilizzo da parte degli utenti, nessuna pubblicità.
Inizialmente lo avevo sviluppato in C# utilizzando MonoGame (l'evoluzione dell'ex XNA di Microsoft Xbox) ed era stato rilasciato sui vari store per smartphone e PC. Successivamente, per mancanza di tempo nel mantenere aggiornate tutte quelle versioni native, ho optato per una riscrittura completa in TypeScript in modo da erogarlo comodamente sul web e renderlo giocabile su tutte le piattaforme (smartphone, tablet, PC) all'interno del browser, senza problemi di installazione.
Oggi, questa versione web utilizza le seguenti librerie: