UBF: Universal Binary Format
Dall'ontologia dell'oggetto digitale alla performance binary-raw. Un formato proprietario progettato per eliminare il parser e consegnare i dati direttamente alla GPU.

La dittatura dei formati standard
OBJ · FBX · GLTF
Parse overhead. Strutture rigide.
Zero logica applicativa.
- I formati OBJ/FBX sono progettati per la portabilità, non per la performance. Ogni load attraversa un parser testuale/binario generico che ricostruisce strutture dati intermedie prima di arrivare alla GPU.
- Questo introduce overhead di parsing, allocazioni heap non necessarie e zero possibilità di codificare logica applicativa (fisica, stato, rete) nel file stesso.
- Il risultato: l'engine deve mantenere tabelle di lookup esterne, configurazioni su prefab e sistemi di ownership separati. Complessità accidentale che UBF elimina alla radice.
- ontology→fisica, acustica, rifrazione
- states→integrità, autorità di rete
- lod_rules→budget per livello LOD
- net_auth→ownership multiplayer
Leggibile da editor, versionabile con Git, estensibile senza breaking changes.
- vertex_buf[]→posizioni nello spazio oggetto
- index_buf[]→topologia della mesh
- skin_weights[]→bone influences per vertex
- blend_shapes[]→morph targets pre-calcolati
Caricato con un singolo memcpy(): zero parsing, zero allocazioni intermedie.
Tratti intrinseci
Ogni oggetto UBF incorpora nel proprio layer JSON una sezione dedicata ai tratti fisici immutabili: densità geometrica (poligoni/unità volume), indice di rifrazione dei materiali e proprietà acustiche superficiali.
Questo permette all'engine di leggere il comportamento fisico di un oggetto (come si comporta alla luce, come riflette il suono) direttamente dal file, senza ricorrere a tabelle esterne o configurazioni su prefab.
Stati dinamici
UBF introduce il concetto di stato contestuale del file: l'integrità strutturale di un oggetto (intatta, danneggiata, distrutta) può essere definita come valore float normalizzato nel metadata JSON e letta a runtime dall'engine.
Il campo `net_authority` specifica quale peer ha il diritto di modificare lo stato dell'oggetto in una sessione multiplayer, eliminando la necessità di sistemi di ownership esterni al formato stesso.
Ottica & fisica multi-LOD
Il sistema LOD di UBF non si limita a sostituire la mesh a distanza: ogni livello LOD porta i propri parametri fisici e ottici, permettendo che la semplificazione geometrica coincida con la riduzione della precisione fisica.
Un oggetto a LOD3 può avere ombre semplificate, nessun calcolo di rifrazione e collider convex a capsula: tutto codificato nel file, nessun tweaking manuale su prefab.
C++ Authoring Studio
Un editor visuale nativo costruito su stack OpenGL + GLFW + Dear ImGui per la costruzione, anteprima e ottimizzazione di asset UBF a livello di buffer.
- Viewport OpenGL real-time con preview della mesh e dei suoi LOD in overlay wireframe.
- Pannello Dear ImGui per la modifica in-place di tutti i metadati JSON (fisica, stati, LOD rules) con hot-reload immediato.
- Esportazione diretta in formato UBF binario con validazione dell'header e checksum CRC32.
- Profiler integrato: mostra vertex count, memory footprint per LOD e stima di upload time GPU.
- Deserializzazione del JSON layer tramite JsonUtility di Unity: nessuna allocazione heap aggiuntiva.
- Il binary stream viene caricato con NativeArray<byte> via Unity.Collections e passato direttamente al VertexBuffer della Mesh API, zero conversioni intermedie.
- La skinned mesh architecture legge bone weights e bind poses direttamente dal binary stream, bypassando la pipeline di default dello SkinnedMeshRenderer.
- Il sistema LOD si integra con il LODGroup di Unity usando i parametri di poly_budget e physics_mode estratti dal JSON.
Native Unity Importer
Un custom AssetImporter C# integrato nella pipeline Unity che carica asset UBF con gestione low-level della memoria, skinned mesh nativa e LOD automatico.
- Core
- C++17CMakeAssimp
- Authoring Studio
- OpenGLGLFWDear ImGui
- Engine Side
- C# (Unity)Low-level Memory MgmtSkinned Mesh Arch.