Tutti gli articoli
Tutorial · 2 min read

Costo zero a runtime: come Numivo converte tutto in asset nativi del motore

La decisione architetturale dietro Numivo, perché ogni scatter, blend e grid diventa un normale asset del motore, e cosa significa per i tuoi build, il tuo repository e il tuo team.

Illustration of Numivo scene data being baked into engine-native asset files

La funzione più importante di Numivo è invisibile: il tuo gioco pubblicato non ne contiene nulla. Ogni strumento nella scatola (scatter, mesh blending, grid) produce normali asset del motore e niente altro. Questo articolo spiega cosa significa tecnicamente, e perché lo consideriamo non negoziabile.

Cosa significa "nativo" in concreto

Quando fai il bake di una passata di scatter in Unreal, Numivo scrive componenti Hierarchical Instanced Static Mesh o istanze di foliage: le stesse strutture che otterresti posizionando le cose a mano. In Unity sono normali istanze di prefab o dettagli del terreno. I materiali del mesh blending vengono compilati in normali materiali del motore con transizioni delle normali perfette al pixel; non c'è alcuna passata di shader personalizzata, nessun lavoro di plugin per frame, nessun modulo "runtime di Numivo" nel tuo Build.cs o nel tuo manifest del pacchetto.

I numeri che ne derivano:

  • 0 righe di codice Numivo nel tuo build
  • 0 ms di tempo di frame aggiunto: non c'è niente da eseguire
  • < 150 MB di RAM dell'editor in scene tipiche, perché la strumentazione dell'editor è l'intera impronta
  • 1 core condiviso tra Unreal e Unity, così i preset passano da un motore all'altro

Perché rifiutiamo una dipendenza a runtime

Le dipendenze a runtime sono un debito che qualcun altro deve pagare:

  1. Certificazione. I team di certificazione console chiedono cosa fa ogni modulo di terze parti. "Non ce n'è nessuno" è la risposta più breve possibile.
  2. Longevità. I giochi sopravvivono agli abbonamenti degli strumenti. Poiché i risultati del bake sono asset ordinari, una scena creata con Numivo si apre e si pubblica tra dieci anni, con o senza di noi. Se disdici, mantieni tutto ciò che hai creato: non è una promessa nei nostri termini, è una proprietà dell'architettura.
  3. Controllo delle prestazioni. Il tuo profiler mostra primitive del motore che sai già ottimizzare (distanze di cull, LOD, impostazioni Nanite) non una scatola nera.

Cosa significa per il tuo repository

I risultati del bake si versionano come qualsiasi altro asset: si confrontano, si uniscono, si revisionano. I preset di specie e di grid di Numivo sono piccoli file semplici che puoi committare e condividere con il tuo team. L'unica cosa che non dovrebbe finire nel controllo di versione è la cache locale dell'indice dei contenuti (si ricostruisce da sola); una regola di ignore e hai finito.

Il compromesso, detto onestamente

L'editing procedurale non distruttivo richiede il plugin: una volta fatto il bake, un pendio è dato del motore, e rieditarlo in modo procedurale significa riaprirlo con Numivo. Pensiamo sia il compromesso giusto: l'alternativa (mantenere le scene dipendenti da uno strato di runtime) tiene in ostaggio il tuo progetto in silenzio. I tuoi livelli dovrebbero appartenere al tuo gioco, non ai tuoi strumenti.

Se questa filosofia corrisponde al modo in cui lavora il tuo team, il livello gratuito è il modo più semplice per metterla alla prova: disperdi qualcosa, fanne il bake, elimina il plugin e osserva la scena non curarsene.