Alle artikelen
Tutorials · 2 min read

Nul runtimekosten: hoe Numivo alles bakt tot native engine-assets

De architectuurbeslissing achter Numivo: waarom elke scatter, blend en grid een gewoon engine-asset wordt, en wat dat betekent voor je builds, je repo en je team.

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

De belangrijkste functie van Numivo is onzichtbaar: je uitgeleverde game bevat er niets van. Elk gereedschap in de doos (scatter, mesh blending, grids) produceert gewone engine-assets en niets anders. Deze post legt uit wat dat technisch betekent, en waarom we het als niet-onderhandelbaar beschouwen.

Wat "native" concreet betekent

Wanneer je in Unreal een scatter-pass bakt, schrijft Numivo Hierarchical Instanced Static Mesh-componenten of foliage-instanties: dezelfde structuren die je met handmatig plaatsen zou krijgen. In Unity zijn het standaard prefab-instanties of terreindetails. Materialen uit mesh blending compileren naar gewone engine-materialen met pixelperfecte normal-overgangen; er is geen aangepaste shader-pass, geen plugin-werk per frame, geen "Numivo-runtime"-module in je Build.cs of je package-manifest.

De getallen die hieruit volgen:

  • 0 regels Numivo-code in je build
  • 0 ms toegevoegde frametijd: er valt niets uit te voeren
  • < 150 MB editor-RAM in typische scènes, want de editor-tooling is de hele voetafdruk
  • 1 gedeelde kern voor Unreal en Unity, zodat presets tussen engines overgaan

Waarom we een runtime-afhankelijkheid weigeren

Runtime-afhankelijkheden zijn schuld die iemand anders moet betalen:

  1. Certificering. Console-cert-teams vragen wat elke module van derden doet. "Die is er niet" is het kortst mogelijke antwoord.
  2. Levensduur. Games overleven tool-abonnementen. Omdat gebakken resultaten gewone assets zijn, opent en levert een met Numivo gebouwde scène over tien jaar, met of zonder ons. Als je opzegt, houd je alles wat je hebt gemaakt: dat is geen belofte in onze voorwaarden, het is een eigenschap van de architectuur.
  3. Eigenaarschap over prestaties. Je profiler toont engine-primitieven die je al weet te optimaliseren (cull-afstanden, LOD's, Nanite-instellingen), geen black box.

Wat het voor je repo betekent

Gebakken resultaten versioneren als elk ander asset: ze diffen, mergen, reviewen. Numivo's species- en grid-presets zijn kleine, eenvoudige bestanden die je kunt committen en met je team delen. Het enige dat niet in versiebeheer hoort, is de lokale content-index-cache (die bouwt zichzelf opnieuw op); één ignore-regel en je bent klaar.

De afweging, eerlijk gesteld

Niet-destructief procedureel bewerken heeft de plugin nodig: eenmaal gebakken is een helling engine-data, en het procedureel opnieuw bewerken betekent het opnieuw openen met Numivo. Wij vinden dat de juiste afweging: het alternatief (scènes afhankelijk houden van een runtimelaag) gijzelt je project stilletjes. Je levels horen bij je game, niet bij je gereedschap.

Als die filosofie past bij hoe je team werkt, is het gratis niveau de makkelijkste manier om het te testen: scatter iets, bak het, verwijder de plugin en zie de scène er niets om geven.