voxelforge
Un motore voxel con demo giocabile nel browser. Il renderer punta a WebGL2/WASM, mentre il core di simulazione si compila in modo nativo ed è coperto da test - decine di migliaia di asserzioni.
Un motore voxel con una demo giocabile nel browser. Il trucco è che il core di simulazione non sa nulla del rendering - il che permette di testare la logica senza GPU, attraverso decine di migliaia di asserzioni.
Panoramica
voxelforge è un motore voxel con una demo giocabile che gira nel browser. Il renderer punta a WebGL2 e WASM, ma la decisione più interessante non riguarda la grafica, bensì l'architettura: il core di simulazione è completamente separato dal disegno. È lui a tenere i voxel, le regole e i vicinati, e non sa nulla del fatto che qualcosa appaia sullo schermo.
Questa singola decisione ha cambiato il carattere del progetto. Invece di un motore che funziona solo se lo avvii con una scheda grafica, è nata una libreria di logica che gira ovunque e si può testare come codice ordinario. Il resto di questo caso di studio racconta perché ne è valsa la pena.
Un motore voxel deve fare due cose difficili contemporaneamente: disegnare il mondo velocemente e simularlo correttamente. Entrambe sono facili da rompere in un modo che a prima vista sembra a posto eppure è sbagliato - un blocco sparisce un fotogramma troppo tardi, un vicinato viene contato un voxel accanto. Questi errori non gridano, rovinano il mondo in silenzio.
Quando rendering e logica sono intrecciati in un unico corpo di codice, non si possono separare né per i test né per il debug. Non si riesce a dire se un blocco è sparito male perché la simulazione lo ha calcolato male, o perché il renderer lo ha disegnato male. Districare questi due mondi è stata la cosa più importante di tutto il progetto.
Un core che non conosce la GPU
La soluzione era anche la più semplice: il core di simulazione è logica pura, e il renderer prende il suo stato e lo trasforma in triangoli. Nessuna parte del core tocca un canvas o una GPU. L'interfaccia tra loro è stretta ed esplicita, quindi il renderer può essere qualsiasi, e il core non lo sa.
Chi fa cosa
| Livello | Ruolo | Dipendenza dalla GPU |
|---|---|---|
| Core di simulazione | voxel, regole, vicinati | nessuna |
| Renderer | trasformare lo stato in triangoli | WebGL2 / WASM |
Poiché il core non dipende da una GPU, viene costruito nativamente e testato come una libreria normale. Il renderer punta a WebGL2 e WASM, ma la logica supera i suoi test anche su una macchina di CI senza scheda grafica.
Test invece di speranza
Questa separazione non è un lusso accademico. È il motivo per cui la simulazione ha una copertura di test dell'ordine di decine di migliaia di asserzioni - ed è l'unico modo per dire che un motore voxel è corretto, e non solo che "sembra a posto". Gli errori di un voxel accanto emergono in un test, non dopo un'ora di gioco.
Il risultato: una demo che cresce senza paura
Ne esce una demo giocabile nel browser che può crescere senza il timore di rompere in silenzio la logica del mondo lungo la strada. Poiché il core è testato a sé, una modifica nel renderer non può rompere di nascosto la simulazione, e una modifica nella simulazione emerge subito nelle asserzioni. Il motore non è solo scenografico - è verificabile.
Altri progetti
Altri lavori della stessa categoria - scopri come affrontiamo sfide simili.
Hai un progetto simile?
Contattaci - il preventivo è gratuito e arriva entro un'ora.



