Усі статті
Туторіали · 2 min read

Нульові витрати під час виконання: як Numivo запікає все в нативні ассети рушія

Архітектурне рішення в основі Numivo, чому кожен скатер, бленд і грід стає звичайним ассетом рушія, і що це означає для ваших білдів, репозиторію та команди.

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

Найважливіша функція Numivo невидима: у вашій випущеній грі немає жодної його частинки. Кожен інструмент у наборі, скатер, mesh blending, гріди, створює звичайні ассети рушія і нічого більше. Ця стаття пояснює, що це означає технічно, і чому ми вважаємо це таким, що не підлягає обговоренню.

Що «нативний» означає конкретно

Коли ви запікаєте прохід скатера в Unreal, Numivo записує компоненти Hierarchical Instanced Static Mesh або інстанси foliage, ті самі структури, які ви отримали б, розставляючи об'єкти вручну. В Unity це звичайні інстанси префабів або деталі терейну. Матеріали з mesh blending компілюються у звичайні матеріали рушія з ідеальними на рівні пікселя переходами нормалей; немає жодного користувацького проходу шейдера, жодної роботи плагіна на кадр, жодного модуля «Numivo runtime» у вашому Build.cs чи маніфесті пакета.

Числа, що з цього випливають:

  • 0 рядків коду Numivo у вашому білді
  • 0 мс доданого часу кадру, виконувати нічого
  • < 150 МБ ОЗП редактора в типових сценах, бо редакторський інструментарій — це весь слід
  • 1 спільне ядро для Unreal і Unity, тож пресети переходять між рушіями

Чому ми відмовляємося від залежності під час виконання

Залежності під час виконання — це борг, який доводиться сплачувати комусь іншому:

  1. Сертифікація. Команди консольної сертифікації запитують, що робить кожен сторонній модуль. «Його немає» — найкоротша можлива відповідь.
  2. Довговічність. Ігри переживають підписки на інструменти. Оскільки запечені результати , звичайні ассети, сцена, створена в Numivo, відкривається й виходить через десять років, з нами чи без нас. Якщо ви скасуєте підписку, ви зберігаєте все, що зробили — це не обіцянка в наших умовах, а властивість архітектури.
  3. Володіння продуктивністю. Ваш профайлер показує примітиви рушія, які ви вже вмієте оптимізувати, дистанції куллінгу, LOD, налаштування Nanite, а не чорну скриньку.

Що це означає для вашого репозиторію

Запечені результати версіонуються як будь-який інший ассет: їх можна diff-ити, зливати, рецензувати. Пресети видів і грідів Numivo — це маленькі прості файли, які ви можете комітити й ділити з командою. Єдине, що не має потрапляти в контроль версій, — це локальний кеш індексу контенту (він перебудовується сам); одне правило ігнорування, і готово.

Компроміс, названий чесно

Неруйнівне процедурне редагування потребує плагіна: раз запечений схил — це дані рушія, а повторне процедурне редагування означає повторне відкриття в Numivo. Ми вважаємо це правильним компромісом, альтернатива (тримати сцени залежними від шару часу виконання) тихо бере ваш проєкт у заручники. Ваші рівні мають належати вашій грі, а не вашим інструментам.

Якщо ця філософія збігається з тим, як працює ваша команда, безкоштовний рівень, найпростіший спосіб її перевірити: розсипте щось, запечіть це, видаліть плагін і подивіться, як сцені байдуже.