Bruno Tessaro Insights

image

Voxel engine in vanilla javascript

by Bruno Tessaro, posted on November 28, 2025

Chiunque abbia mai giocato a Minecraft sa quanto possa essere affascinante esplorare e plasmare un mondo fatto interamente di blocchi. Ma cosa succede davvero dietro le quinte di un tale universo? Come si generano paesaggi infiniti, colline, grotte e pianure da semplici cubi virtuali?

Per rispondere a queste domande, ho intrapreso un esperimento personale: costruire un motore 3D da zero in JavaScript, capace di generare e renderizzare un mondo voxel, un mondo fatto interamente di blocchi. Nessun framework pesante, nessun motore precostruito: solo WebGL per il rendering e gl-matrix per la matematica 3D, perché il mio obiettivo era comprendere pienamente, riga per riga, come nasce un mondo digitale interattivo.


Al cuore del progetto c'è la generazione procedurale. Il terreno non viene disegnato manualmente, ma creato dinamicamente utilizzando un algoritmo Perlin noise combinato con il fractal Brownian motion (FBM), che produce paesaggi organici e realistici: montagne, pianure, laghi, e persino grotte sotterranee. Il mondo è diviso in "blocchi", sezioni di terreno che vengono caricate e renderizzate solo quando necessario, mantenendo alte prestazioni anche sui browser più modesti.


Il motore non solo disegna blocchi; simula la fisica: gravità, caduta del giocatore, espansione di fluidi. Ogni blocco ha proprietà specifiche, e il sistema è progettato per essere estensibile. Ho implementato un sistema di inventario, selezione e posizionamento dei blocchi, con un'interfaccia minimalista ma funzionale. Il giocatore può esplorare, raccogliere materiali e costruire liberamente.


Questo progetto non è un videogioco completo, ma piuttosto un laboratorio aperto. Ogni feature scritta, ogni algoritmo testato è stata un'opportunità di apprendimento. E soprattutto, ho capito come la tecnologia possa diventare uno strumento per l'espressione creativa.

Tags