Engine

Ігровий рушій: граф сцени, компоненти, скриптинг, фізика, PBR-конвеєр, редактори світу і нативні збірки для десктопу й мобільних пристроїв.

Одним реченням#

Повноцінний ігровий рушій у браузері: побудуйте сцену, надайте їй поведінку, натисніть play і експортуйте її у веб або в нативний бінарник для десктопу й мобільних пристроїв.

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

Компонування#

Engine, зі scene graph, вікном перегляду, інспектором і консоллю

Menu barFile · Edit · View · Windows · Run · Plugins
Toolbarназва проєкту, скасувати/повторити, перемикач режиму вікна перегляду (3D · 2.5D · 2D · TXT), селектор сцени, чотири кнопки панелей, FX Master, HUD, поле роздільної здатності, транспорт (play, pause, stop) і Build
Leftпанель іконок, scene graph, список, аудіо, консоль, і панель, яку вона відкриває
Centreвікно перегляду з власною панеллю gizmo (переміщення, обертання, масштабування, world/local, сітка, прилипання, кадрування) і селектором якості
Rightinspector для обраної сутності
BottomConsole і Profiler поряд
Status barрежим, вимірність вікна перегляду, кількість сутностей, стан сітки

Чотири кнопки панелей#

Панель інструментів Engine: назва сцени, undo, перемикач режиму вікна перегляду, чотири кнопки панелей і транспорт

Поводяться вони не однаково, і цю різницю варто знати, перш ніж щось шукати:

ButtonBehaviour
Systemsвідкриває шухляду
Toolsвідкриває ту саму шухляду, Systems і Tools закривають одна одну
Assetsперемикає постійний док
Scriptsвідкриває модальне вікно

Systems і Tools навмисно ділять один слот; їх розміщено поряд, щоб було видно, що це так.

Systems#

Власні підсистеми рушія: те, що сцена має, а не те, чим ви користуєтеся, щоб щось зробити.

GroupPanels
Pluginsбраузер плагінів
RenderingRendering · Rendering Pipeline · Look Presets · Shader Lab · Render Style · Shadows · Mesh LOD · Post Process Volumes
GameplayMultiplayer room · Physics · AI & Navigation · Gameplay Zones
WorldScene Graph · Level Streaming · Baking · Light Probes · Decals

Рендеринг#

Перемикач FX Master на панелі інструментів вмикає й вимикає весь пост-конвеєр одним кліком: найшвидший спосіб побачити, у скільки він вам обходиться. Окремо: bloom, depth of field, SSR, SSAO, GTAO, SSGI, temporal AA, FXAA, motion blur, об'ємний туман, contact shadows, колірна корекція, film grain, хроматична аберація, вінʼєтування і tonemapping, а також геометрія в стилі Nanite та оклюзія Hi-Z.

Look Presets є цілими конфігураціями всього вищезгаданого. Render Style змінює регістр, стилізований, а не фотографічний. Shader Lab є місцем, де ви пишете власні шейдери. Mesh LOD і Post Process Volumes є тими двома, що окуповують себе на великій сцені: рівень деталізації для кожного mesh і постобробка, яка застосовується лише всередині об'єму.

Рендерером є Babylon.js. Він стартує на WebGL і перемикається на WebGPU, коли браузер це підтримує, і сам повертається назад, якщо це не вдається.

Ігрові системи#

Physics охоплює як 3D-солвер (Havok), так і 2D. AI & Navigation є navmesh і агентами на ньому. Gameplay Zones є тригерними об'ємами з прикріпленою поведінкою. Multiplayer room з'єднує сцену з сервером Colyseus (дивіться нижче).

Системи світу#

Level Streaming завантажує й вивантажує частини рівня, поки гравець рухається. Baking попередньо обчислює освітлення; Light Probes захоплюють непряме світло і відбиття в точках простору. Decals проєктують деталізацію на поверхні, не додаючи геометрії.

Tools#

Те, чим ви користуєтеся, щоб щось зробити.

GroupPanels
EditorsScripts · Blueprint Editor · UI Editor · Tilemap
WorldSky Studio · Terrain · Water · Tree Generator · Plant Generator · Rock Generator · Kitbash
GameplayInventory · Data tables · Dialogue Trees
AnimationTimeline · Cinematic Sequencer · Camera Tools
AudioAudio Manager
DebugProfiler

Генератори світу#

Terrain, water, sky і чотири генератори контенту: дерева, рослини, каміння і деталі kitbash. У них є свій окремий розділ нижче.

Створення геймплею#

Inventory, Data tables (Tools → Data) і Dialogue Trees є трьома редакторами, які дозволяють грі мати контент, що не живе в коді детальніше нижче.

Анімація#

Timeline для анімації сутностей, Cinematic Sequencer для кадрів, і Camera Tools для кадрування. Дивіться Анімація та камера.

Редактори світу#

Сім панелей під Tools → World. Це швидкий спосіб наповнити сцену, і причина, з якої рівень не мусить починатися з сесії моделювання.

Terrain#

Сцена може утримувати кілька рельєфів; кожен є рядком у списку Terrains, створений з однією з трьох роздільних здатностей: 128² (швидко), 256² (збалансовано) або 512² (детально).

Панель має десять режимів, і в них є спільна риса: mask, намальована в Masks, обмежує кожен із них.

ModeWhat it does
Sculptсімнадцять пензлів на карті висот
Paintдо восьми шарів текстур на двох splatmap
Generateшум, автотекстурування та імпорт реального рельєфу
Sketchнамалюйте хребти й долини, синтезуйте рельєф відповідно
Masksобмежує кожен інший режим частиною поверхні
Waterрівень моря і вибір між водою рельєфу та океаном FFT
Pathsдорога Безьє, запечена в землю
Vegetationрозсіювання пензлем або за правилами
SDFрельєф із raymarching, рендерений, а не побудований з mesh
Biomesґрунт, рослини, дерева і каміння за один прохід

Sculpt. Підняти 1, Опустити 2, Згладити 3, Виположити 4, Стиснути 5, Роздути 6, Шум 7, Загострити 8, Штамп 9, Терасувати 0, Розмити ерозією E, Заповнити F, Клонувати C (клік з Alt встановлює джерело), Розмити B, Ramp R, плюс два інструменти для води: River малює русло, Lake заповнює в точці.

Сам пензель має динаміку: крива тиску, lazy mouse, спад, симетрія, патерн і джиттер як за розміром, так і за силою. Stamp несе шість форм: кратер, гірську вершину, плато, річкову долину, купол, пагорб із шумом. Ерозія буває двох видів: пензель E є локальною ерозією, тоді як Adjustments запускає hydraulic, thermal і wind ерозію по всьому рельєфу.

Paint. Вісім шарів, бо два RGBA splatmap несуть по чотири канали кожен. Бібліотека матеріалів відсортована за категоріями: трава, земля, ліс, каміння, дороги й поверхні, скелі, пісок, сніг, вулканічний ґрунт, болото, фентезі, і власні, а кожен шар несе UV scale, зміщення, детальну карту і рельєф поверхні (сила бампа і глибина паралаксу). Break texture tiling (cell bombing) є налаштуванням, яке заважає повторюваній текстурі землі читатися як сітка.

Generate будує з шуму, а тоді Generate Textures призначає матеріали за висотою і схилом, з варіацією тіні північ/південь і піщаними чи галечними берегами там, де є вода. Real World імпортує публічні тайли висот NASA/USGS: оберіть орієнтир або введіть координати, оберіть масштаб, і панель повідомить діапазон висот, який вона отримала.

Sketch є іншим шляхом усередину. Намалюйте мазки хребтів і долин на 2D-карті, оберіть до трьох реальних ландшафтів-джерел, і рельєф синтезується відповідно до ескізу, за бажанням змішаний із тим, що вже є, автотекстурований і ероджений за той самий прохід.

Masks малюються пензлем, а потім редагуються як ціле: очистити, інвертувати, розмити, розширити, звузити. Smart masks виводять маску із самого рельєфу: за висотою, за схилом, за шаром або за западиною.

Paths. Клацніть, щоб опустити контрольні точки, і крізь них проходить плавна крива; перетягуйте бурштинові точки, щоб їх пересунути, а бірюзові керувальні точки, щоб зігнути криву. Bake Path виположує землю під нею, малює текстуру і піднімає насипи.

Vegetation має дві половини. Пензель розміщує й видаляє інстанси вручну; scatter rules розміщують їх за умовою, вагами шарів, seed, мінімальним/максимальним масштабом і діапазоном висоти й схилу, який приймає кожен асет. Трава й квіти згасають за межею дистанції промальовування, яку можна налаштувати, а Export to Scene перетворює інстанси на об'єкти сцени.

Biomes є версією всього вищезгаданого в один клік: оберіть біом, позначте потрібні категорії (ґрунт, дерева, рослини й трава, квіти, водорості біля води, каміння), задайте щільність, і Apply Biome пофарбує землю і розсіє все, повідомивши, скільки інстансів кожного типу вона розмістила. Age variety дерев змішує саджанці й прадавні екземпляри, а не штампує те саме дерево всюди, а ground blend (RVT) зливає основу кожного каменя з кольором рельєфу під ним.

Великі рельєфи мають систему LOD із геометрією skirt (яка й закриває проміжки між рівнями), плавними переходами між рівнями, відсіканням за frustum і накладенням статистики. Карти висот імпортуються й експортуються як 16-бітний PNG, 8-бітний PNG або RAW 16-bit; splatmap, як один RGBA PNG або по одному файлу на шар; а весь рельєф, або лише його налаштування, як пресет.

Sky Studio#

Атмосфера. Чотири типи неба: суцільне, градієнтне, HDRI, і physical atmosphere з розсіюванням Релея й Мі, поглинанням Мі, озоном, альбедо ґрунту, каламутністю, радіусом планети і товщиною атмосфери.

Усе тримається на time of day, яка може циклитися сама: сонце за висотою, азимутом та інтенсивністю, з власною інтенсивністю тіні; місяць за фазою; зорі з мерехтінням; і аврора. Volumetric clouds мають товщину, ерозію, масштаб шуму і curl-спотворення, а також світло через поглинання, розсіювання, ambient і поправку powder; перисті хмари і пояс Венери окремі. Aerial perspective є серпанком, який густішає з відстанню і розчиняє далеку геометрію в горизонті, і саме це налаштування змушує ландшафт читатися як великий.

Десять пресетів для старту: ясний день, світанок, захід сонця, сутінки, ніч, похмуро, штормово, пустеля, арктика і космос.

Water#

Дві вкладки: Ocean (FFT) для відкритого моря, Shore & lakes для всього іншого.

⚠️ Вода створюється в редакторі Terrain: інструментами річки й озера, або Show Water, а тут вона лише налаштовується. Відкривши цю панель на сцені без води, ви отримаєте налаштування, які нема до чого застосувати.

Прибережна вода несе колір, непрозорість, силу і швидкість хвиль, choppiness, ширину піни й Френеля, з відбиттями в екранному просторі та розмиттям заломлення. Під нею сам шейдер WGSL: два масштаби нормалей із власними напрямами й швидкістю прокрутки, поріг і м'якість піни, силу заломлення й показник заломлення, і світло всередині води: поглинання, каламутність, розсіювання і напівпрозорість.

Tree Generator#

Два режими: Tree і Trunk. Дерево буває листяним або вічнозеленим, має вік від саджанця до прадавнього, і може бути живим, мертвим, сухостоєм або поваленим стовбуром. Усе базується на seed, тож Randomize seed є найшвидшим способом отримати інше дерево з тим самим характером.

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

Листя є білбордами, одно- або двосторонніми, з кількістю, розміром, кутом, варіацією, скупченням, закручуванням, провисанням, глянцем і округленими нормалями. Кора буває шести стилів: ребриста, осикова, соснова, березова, гладка, пальмова, з рельєфом, мохом, вологою основою, вигорянням на сонці, ambient occlusion крони й осіннім переходом. Чотири пори року перемикають увесь вигляд одразу.

Forest розсіює багато дерев одразу: кількість, радіус розповсюдження, варіацію масштабу і суміш віку (single, natural, young, old, even). Add age progression розміщує всі п'ять стадій життя в ряд, і це найшвидший спосіб порівняти їх поруч. Дерево виходить як сутність сцени або як GLB, і будь-яке налаштування можна зберегти як пресет.

Plant Generator#

П'ять видів: flower, cluster, herb, fern, grass, які поділяють стебло (кількість, висота, товщина, вигин, колір) і листя (кількість, розмір, ширина, кут). Папороті додають пари листочків, розмах листочків і вигин вайї; трава додає кількість стебел і вигин.

Квітка необов'язкова для будь-якого з них: пелюстки, ряди пелюсток, довжина, ширина, закручення, гострота кінчика, розкриття, розмір центра, і три кольори: пелюстки, кінчика пелюстки і центра: з напівпрозорістю і шорсткістю для того, як світло проходить крізь листок. Додайте одну на сцену, розсійте багато або експортуйте GLB.

Rock Generator#

Три види: rock, stone, cliff, у трьох стилях: реалістичний, toon або low poly з контуром.

Форма є шумом по сфері: масштаб, сила, октави, стійкість, warp і опція ridged, плюс strata з власною частотою і facet cuts з глибиною і різкістю для кутастого каменя. Радіус, деталізація, сплощення, варіація форми і пласке дно визначають силует, а чотири пресети ерозії: fresh, weathered, natural, eroded, рухають усе це одразу.

Поверхня має варіацію кольору, мінеральні жили, лишайник і мох, детальну текстуру з замощенням і силою, triplanar-змішування і паралаксний рельєф. За замовчуванням вона використовує вбудований матеріал Stone; надішліть матеріал з Matter в Engine, щоб його замінити.

Kitbash, та сама бібліотека, що й у Sculpt#

Kitbash спільний з Sculpt: ця панель і Edit Forge у Sculpt читають одну бібліотеку. Деталь, побудована там, розміщується тут, а деталь, розфарбована тут, може бути збережена назад туди.

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

Озбройте деталь із каталогу, і кожен клік лівою кнопкою її розміщує. Три режими прилипання вирішують, куди вона впаде: on terrain (деталі слідують за висотою землі під ними), on water (площина побудови лежить на рівні води) і snap to sockets: наведіться на точку з'єднання на вже розміщеній деталі, і нова повернеться, щоб з нею зійтися. Ланцюжок росте з вільного кінця, зайняті сокети випадають з кандидатів, і кожен клік є власним кроком скасування. Ctrl/Cmd лишається зарезервованим для виділення, а Alt, для обертання. Колекції зберігають своє джерело і версію, тож інстанс можна оновити, коли змінюється оригінал.

Інші редактори#

Редактори світу наповнюють сцену; ці ж дають їй інтерфейс, карту, її таблиці контенту та інструменти, щоб перевірити, у скільки вона обходиться.

Редактор HUD#

Tools → Editors → UI. Шість вкладок: Templates, Elements, Layers, Preview, Style і Script: над попереднім переглядом, який перемикається між трьома розмірами пристроїв: desktop 960×540, tablet 768×432, mobile 375×667.

Елементи бувають трьох груп (Display, Data, Input) і можуть вкладатися: panel і flex утримують дочірні елементи, тож вкладка Layers є справжнім деревом, а не пласким списком. Історія має глибину п'ятдесят кроків.

⚠️ Вкладка Style схожа на CSS, і ця різниця важлива. HUD малюється на полотні через Babylon GUI, і справжній CSS туди не дістає. Правила, які ви пишете тут, мапуються на властивості GUI; селектори: #name для одного елемента, .type для виду (.text, .panel) і * для всього.

Вкладка Script є іншим способом побудувати HUD: API ui.*, createText, createPanel, createProgress, createButton, з двома способами запуску. Build Layout виконує його design-time і залишає вам справжні елементи, які можна підправити вручну; Run Live запускає його в грі.

Два виходи назовні: графіка HUD відкривається в Inkwell або Vectra і зв'язується назад, а не копіюється, а документ Vectra можна імпортувати як елементи HUD. Елемент мінікарти є окремою річчю: із дальністю, сіткою і мітками для гравця, ворогів, союзників, предметів і цілей.

Редактор тайлмап#

Одинадцять інструментів: brush, eraser, fill, rectangle, select, eyedropper, stamp, autotile, prop, zone і path, на чотирьох проєкціях карти: orthogonal, isometric, staggered isometric і hexagonal.

Autotiling постачається з чотирма шаблонами, і число в кожній назві є кількістю тайлів, яку він очікує: Blob 47 (повні кути й краї), Wang 16 (на основі країв), Simple 4 (NSEW) і RPG Maker A2 (48 тайлів, сумісний з картами, створеними там).

Над самими тайлами лежать два шари. Zones малюють ігровий сенс: buildable, water, forest, road, farm, residential, commercial, blocked, а props розміщують об'єкти за категорією: дерева, каміння, будівлі, рослинність, вода, стежки. Карти живуть у власній базі даних браузера, тож незбережена карта переживає перезавантаження.

Inventory, Data tables і діалоги#

Три редактори, які дозволяють грі мати контент, що не живе в коді.

Inventory редагує каталог і застосовує його до сцени. Предмет несе дії, а дія є trigger: use, equip, unequip, плюс один із восьми types: message, heal, damage, grant, remove, event, toast, scene. Сама панель має три розкладки (grid, list, compact), три пресети вигляду (graphite, midnight, warm) і чотири візуальні слоти: background, slot, equipment, tooltip, які відкриваються в іншому модулі для повноцінного перемальовування.

Data tables типізовані: колонка буває text, number, bool або ref. CSV заходить і виходить. Кожна правка проходить крізь чисті функції, і саме це утримує таблицю, яку записує експорт, ідентичною до таблиці, яку читає збірка.

Dialogue trees є нодами з мовцем і реплікою. Нода або продовжується в один next, або розгалужується на choices, кожен зі своїм текстом і своїм пунктом призначення; перемикач розгалуження є єдиним структурним рішенням в редакторі.

Анімація та камера#

Cinematic Sequencer будує послідовності з тривалістю і прапорцем циклу, по одній доріжці на сутність, і ключовими кадрами, захопленими на позиції плейхеда; Add Key бере поточне значення сутності, а не просить вас його вписати. Graph editor під ним показує час відносно прогресу, з круглими керувальними точками для easing: нахил є швидкістю. Кадри мають власну тривалість, а кадрування Cinemascope (1.422:1) доступне для letterbox.

Camera Tools охоплює FOV, позицію, ціль, режим і швидкість, плюс bookmarks для точок огляду, до яких ви постійно повертаєтеся, і шари камери.

Аудіо#

Audio Manager утримує аудіоподії, доріжки й мікшер із каналами й категоріями. Ефекти для кожного джерела: low-pass, high-pass і reverb send; режим random обирає між кількома кліпами, щоб повторюваний звук перестав читатися як цикл. Скрабінг відтворює звук, поки ви перетягуєте плейхед.

Профайлер#

Розбивка кадру, а не лічильник кадрів: рендер камери, обчислення mesh, частинки, спрайти й компіляція шейдерів, кожен позначений як real або estimated так, щоб число, отримане з вимірювання, ніколи не сплутали з тим, що отримане з моделі. Поряд лічильники: mesh і активні mesh, світло, камери, фізичні тіла.

Запис явний, і завершується списком Issues, а не графіком, який треба інтерпретувати: low FPS, high draw calls, high triangles, high memory, порівняно з цільовою частотою кадрів, яку ви встановили.

Побудова сцени#

Сутності#

Вікно перегляду Engine, з gizmo на обраній сутності

Нова сцена приходить із Main Camera, Directional Light, Skybox і Ground Plane.

Scene graph із чотирма сутностями, з яких починається нова сцена

Що можна додати: Empty, Cube, Sphere, Cylinder, Plane, Light, Camera, Script, Mesh, плюс дві родини, які приходять уже готовими до роботи:

  • Characters: Third-Person, First-Person (FPS), Top-Down, Platformer, Basic.
  • Props: Pickup (heal) і Hazard (damage).

Scene graph шукає, фільтрує за типом, додає, дублює чи видаляє; сутності можуть вкладатися, а зміна батька є перетягуванням. Розміщення має прилипання і scatter brush для швидкого заповнення землі.

Інспектор#

Transform (позиція, поворот, масштаб), перемикач Enabled, і components сутності: додаються, налаштовуються і видаляються тут, з Add Script унизу. Виділіть кілька сутностей, і інспектор перемикається на пакетне редагування, тож зміна одного поля торкнеться їх усіх.

Консоль#

Не просто журнал. Вона фільтрує за рівнем (all, logs, info, warning, error), зв'язує повідомлення назад із сутністю, яка його створила, і несе expression prompt: введіть вираз, Enter виконує його проти живої сцени, стрілки гортають історію.

Надання поведінки#

Три шляхи, і вони співіснують.

Scripts#

JavaScript із хуками життєвого циклу, і свій окремий довідник:

function start() {}                     // once, when the entity starts
function update(dt) {}                  // every frame
function fixedUpdate(dt) {}             // fixed timestep, for physics
function onCollisionEnter(other) {}     // first frame of contact
function onCollisionStay(other) {}      // every frame while touching
function onCollisionExit(other) {}      // contact just ended
function onTriggerEnter(other) {}       // entered a trigger volume
function onTriggerExit(other) {}
function onMessage(msg, data, senderId) {}   // entity-to-entity messaging
function onAnimationEvent(name, data) {}
function onDestroy() {}

Колізії й тригери спрацьовують і в 2D, і в 3D, і кожна сторона отримує власну нормаль контакту: other.contact.normal вказує від іншої сутності до цієї. Саме це дозволяє скрипту відрізнити «я приземлився на нього» від «він приземлився на мене»: стрибок-придавлювання в платформері читається як other.contact.normal.y > 0.5.

Редактор скриптів#

F2, або Add Script на сутності. Редактор Monaco з вкладками, кілька скриптів відкриті одночасно, кожен зберігається у власній базі даних браузера, а не у файлі проєкту, тож незбережений буфер переживає перезавантаження.

П'ять діалектів, одна програма. Перемикач мови пропонує JavaScript, BASIC, Python, C# і Rust. Те, що це робить, не те, чим це виглядає: JavaScript є джерелом істини, а інші чотири є представленнями, транспільованими зі збереженого JS. Перемикання з Python на Rust не перекладає Python: воно повертається до JS, з якого був згенерований Python, і перекладає саме його. Багатоступеневий переклад псує програму, і саме тому редактор відмовляється це робити.

Тринадцять templates у п'яти категоріях, кожен позначений рівнем складності:

CategoryTemplates
Основипорожній скрипт із заглушками життєвого циклу
Рухauto-rotate · WASD · рух у 3D за осями · фізичний стрибок з визначенням землі · камера від третьої особи, що слідує
Геймплейтригерна зона · шкала здоров'я зі шкодою й лікуванням · спавнер за таймером
AIпатруль зі сповіщенням про близькість гравця
Просунутеасинхронна катсцена у стилі Verse · структурована конкурентність · повний тест поверхні API

Пресети контролера персонажа і стартові props гри (pickup, hazard) з'являються в тому самому списку, і це практичний спосіб накинути робочий контролер на імпортованого персонажа.

Запуск і налагодження. F5 запускає, F9 встановлює точку зупину. Дебагер зупиняється на рядку, крокує через один кадр і повідомляє живі значення через watch-вирази. Script Lab запускає програму взагалі без прикріпленої сутності: чернетка для API, а не компонент на об'єкті.

Поряд із кодом: API reference, список символів для відкритого файлу і бібліотека сніпетів з обраними й нещодавніми. Ctrl+S зберігає, Ctrl+F шукає, Ctrl+H замінює, а редактор постачається з вісьмома темами.

Blueprints та поведінки#

Візуальний граф, бібліотека готових поведінок і машина станів, накладена поверх стека поведінок.

Граф несе 267 нод у двадцяти двох групах: Math, Scene, Entity, Animation, Flow Control, String, Events, Physics, UI, Array, Vector, Transform, Debug, Input, Utility, Game, Boolean, Camera, Tween, Variables, Audio і родини 2D та 3D. Три властивості розділяють їх, і саме з них складається граф: 17 event nodes запускають виконання, 117 pure nodes обчислюють значення без побічних ефектів і без пінів виконання, а 9 latent nodes завершуються пізніше: саме вони дозволяють виразити затримку чи tween без власної машини станів.

Чотири інструменти: select V, pan H, comment C, reroute R, над полотном, яке масштабується від 0.1× до 3× з мінікартою. Змінні бувають шести типів: boolean, integer, float, string, vector3 і object. Опис кожної ноди на її tooltip, і це єдине місце, де бібліотека такого розміру може себе пояснити.

Машина станів#

Власна панель, і навмисно не та, що в Animator: умови Animator є пласким enum з написаним вручну UI для кожного випадку, тоді як ці структуровані й говорять про world.

Сім умов, і кожна є запитанням про сцену: sees (позначена ціль у радіусі, за бажанням у межах кута і в прямій видимості), lost (немає цілі протягом N секунд), distance проти порогу, health, message received, timer (час, проведений у поточному стані), і flag (значення на спільній blackboard). Обидва комбінатори, and і or, перелічені, хоча or уже неявно існував: два переходи в той самий стан є or, але для «він мене бачить, І в мене все ще є здоров'я» форми не існувало взагалі.

⚠️ Health порівнюється як частка від максимуму, а не як абсолютне число. Поріг «below 30 HP» не переживає переналаштування балансу; «below 0.3» переживає.

При вході в стан або виході з нього, чотири ефекти: send повідомлення, set ключа blackboard, play кліпу анімації, або запуск named effect. Жоден з них нічого не рухає: рух лишається за поведінками, а машина вирішує, яка саме поведінка активна.

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

BASIC#

Режим вікна перегляду TXT є класичним середовищем BASIC із вбудованими демо-програмами, і в мови є свій окремий довідник. Тут це справжня мова, а не іграшка: багатофайлові модулі (#INCLUDE), типізовані числа (знакові й беззнакові 8/16/32/64-біт, float32 і float64), вкладені записи, методи об'єктів з SELF, посилання (REF/BYREF), структуровані TRY/CATCH/FINALLY, умовна компіляція, корутини, типізовані handle, і обчислення WebGPU з буферами зберігання і сирим WGSL.

OPTION EXPLICIT є опцією, яку треба увімкнути самостійно; класичні неявні змінні лишаються типовими, тож імпортовані програми й далі працюють.

Гра і випуск#

Play#

Play, Pause, Stop. При зупинці банер повідомляє, що змінилося за сесію, тож правка, зроблена в режимі play, ніколи не зберігається й не втрачається мовчки. Сесії можна записати й відтворити в звіт про баг, а scenario bookmarks дозволяють плейтесту почати з середини рівня.

Build#

Build бере тип гри (визначений зі сцени або встановлений вручну: sidescroller/platformer, від першої/третьої особи, текстовий) і ціль.

  • Web: WebGPU із запасним варіантом WebGL, опційний WebXR (VR/AR), мінімізація, лічильник FPS, і опція embed assets, яка створює один-єдиний файл.
  • Desktop і mobile: нативні збірки. Сцена експортується як дані (scene.glb + scene.json) і компілюється через згенерований проєкт Bevy (Rust); скрипти там працюють без змін на вбудованому рантаймі QuickJS.

Стиснення налаштовується за окремими осями: алгоритм, текстури, mesh, з пресетом якості, який зв'язує їх разом. Збірки зберігаються в історії з їхніми розмірами (оригінал проти стисненого) і їх можна завантажити знову пізніше.

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

Мультиплеєр#

Панель Multiplayer room з'єднує сцену з ігровим сервером Colyseus. Доступний безкоштовний спільний тестовий сервер без акаунта і без налаштувань; проєкту також можна дати власний сервер. Кімната ключується кодом для поширення, який можна лишити собі або роздати.

Файли, які вона читає й записує#

Власний формат.engine
Імпортує.glb, .gltf, .obj, .fbx, .png, .svg, .mp4, .webm, .mov, .scene
Експортуєвеброзбірка, нативна десктопна/мобільна збірка, scene.glb + scene.json

Передача роботи іншим студіям#

Accepts: mesh від Sculpt, Retopo і Pigment, цілі сцени від Render, піксель-арт, анімації, набори PBR-матеріалів від Matter, 2D-риги, відеопроєкти, зображення, векторну графіку і об'єкти Vectra.

Produces: 2D-риги.

Макет екрана Vectra приходить як структура, а не як картинка. Він стає ієрархією HUD, яку Engine може розкласти й заскриптувати: різниця між дизайном, який можна з'єднати проводами, і скриншотом цього дизайну.

Сполучення клавіш#

Cmd/Ctrl + K дає доступ до власних команд Engine з палітри, поряд із глобальними. Engine також має окрему панель сполучень клавіш з пошуком у власних налаштуваннях; їх там значно більше, ніж влізло б на сторінку сполучень клавіш.

Обмеження і типові пастки#

  • Порожнє вікно перегляду зазвичай винен браузер, а не сцена. Engine потребує WebGL 2; перевірте, чи увімкнене апаратне прискорення.
  • Systems і Tools ділять одну шухляду. Якщо панель «зникла», вона, ймовірно, у другій.
  • Консоль є першим місцем для перевірки, а не останнім: вона зв'язує помилки із сутністю, яка їх спричинила.
  • Компонент, доданий у режимі play, може не пережити зупинку. Читайте банер, який з'являється, коли ви зупиняєте.
  • Фізика відрізняється між 2D і 3D у своєму солвері, навіть попри те, що колбеки скрипта ті самі. Контакт у стані спокою в 2D визначається з допуском (skin) у 2 мм, бо солвер зводить проникнення точно до нуля, перш ніж запускається визначення.