Engine
Silnik gier: graf sceny, komponenty, skrypty, fizyka, potok PBR, edytory świata i natywne buildy na desktop i urządzenia mobilne.
W jednym zdaniu#
Pełny silnik gier w przeglądarce: zbuduj scenę, nadaj jej zachowanie, naciśnij play i wyeksportuj ją do weba albo do natywnego binarnego pliku na desktop i urządzenia mobilne.
To zdecydowanie największe studio w aukimi. Ta strona mapuje je tak, jak robi to interfejs, według szuflady, w której mieszka każdy panel, zamiast wymieniać funkcje alfabetycznie.
Układ#

| Pasek menu | File · Edit · View · Windows · Run · Plugins |
| Pasek narzędzi | nazwa projektu, cofnij/ponów, przełącznik trybu viewportu (3D · 2.5D · 2D · TXT), selektor sceny, cztery przyciski paneli, FX Master, HUD, pole rozdzielczości, transport (play, pause, stop) i Build |
| Lewa strona | pasek ikon, graf sceny, lista, dźwięk, konsola oraz panel, który się otwiera |
| Środek | viewport, z własnym paskiem gizmo (przesuń, obróć, skaluj, świat/lokalnie, siatka, przyciąganie, kadrowanie) i selektorem jakości |
| Prawa strona | inspektor dla zaznaczonej encji |
| Dół | Console i Profiler, obok siebie |
| Pasek stanu | tryb, wymiar viewportu, liczba encji, stan siatki |
Cztery przyciski paneli#

Nie wszystkie zachowują się tak samo, i warto znać różnicę, zanim zaczniesz czegoś szukać:
| Przycisk | Zachowanie |
|---|---|
| Systems | otwiera szufladę |
| Tools | otwiera tę samą szufladę, Systems i Tools zamykają się nawzajem |
| Assets | przełącza trwały dok |
| Scripts | otwiera modal |
Systems i Tools celowo dzielą jeden slot; są umieszczone obok siebie, żeby było widać, że to robią.
Systems#
Własne podsystemy silnika: rzeczy, które scena ma, a nie rzeczy, którymi tworzysz.
| Grupa | Panele |
|---|---|
| Plugins | przeglądarka wtyczek |
| Rendering | Rendering · Rendering Pipeline · Look Presets · Shader Lab · Render Style · Shadows · Mesh LOD · Post Process Volumes |
| Gameplay | pokój Multiplayer · Physics · AI & Navigation · Gameplay Zones |
| World | Scene Graph · Level Streaming · Baking · Light Probes · Decals |
Rendering#
Przełącznik FX Master na pasku narzędzi włącza i wyłącza cały potok post-processingu jednym kliknięciem: najszybszy sposób, żeby zobaczyć, ile cię to kosztuje. Pojedynczo: bloom, depth of field, SSR, SSAO, GTAO, SSGI, temporal AA, FXAA, motion blur, mgła wolumetryczna, contact shadows, korekcja kolorów, ziarno filmowe, aberracja chromatyczna, winieta i tone mapping, plus geometria w stylu Nanite i okluzja Hi-Z.
Look Presets to całe konfiguracje powyższego. Render Style zmienia rejestr, stylizowany zamiast fotograficznego. Shader Lab to miejsce, w którym piszesz własne. Mesh LOD i Post Process Volumes to dwa, które zwracają się na dużej scenie: poziom szczegółowości per mesh, oraz post-processing działający wyłącznie wewnątrz wolumenu.
Renderer to Babylon.js. Startuje na WebGL i przełącza się na WebGPU, gdy przeglądarka je ma, wracając samodzielnie, gdy to się nie uda.
Systemy rozgrywki#
Physics obejmuje zarówno solver 3D (Havok), jak i ten 2D. AI & Navigation to navmesh i agenci na nim. Gameplay Zones to wolumeny wyzwalające z dołączonym zachowaniem. Multiplayer room łączy scenę z serwerem Colyseus (patrz niżej).
Systemy świata#
Level Streaming wczytuje i zwalnia części poziomu w miarę ruchu gracza. Baking przelicza oświetlenie z góry; Light Probes przechwytują światło pośrednie i odbicia w punktach przestrzeni. Decals rzutują detal na powierzchnie bez dodawania geometrii.
Tools#
Rzeczy, którymi tworzysz.
| Grupa | Panele |
|---|---|
| Editors | Scripts · Blueprint Editor · UI Editor · Tilemap |
| World | Sky Studio · Terrain · Water · Tree Generator · Plant Generator · Rock Generator · Kitbash |
| Gameplay | Inventory · Data tables · Dialogue Trees |
| Animation | Timeline · Cinematic Sequencer · Camera Tools |
| Audio | Audio Manager |
| Debug | Profiler |
Generatory świata#
Terrain, water, sky i cztery generatory zawartości, drzewa, rośliny, skały i elementy kitbash. Mają swój własny rozdział poniżej.
Tworzenie rozgrywki#
Inventory, Data tables (Tools → Data) i Dialogue Trees to trzy edytory, które pozwalają grze mieć zawartość, bez konieczności trzymania jej w kodzie szczegółowo poniżej.
Animacja#
Timeline dla animacji encji, Cinematic Sequencer dla ujęć, oraz Camera Tools dla kadrowania. Zobacz Animacja i kamera.
Edytory świata#
Siedem paneli pod Tools → World. To szybki sposób na wypełnienie sceny, i powód, dla którego poziom nie musi zaczynać się od sesji modelowania.
Terrain#
Scena może zawierać kilka terenów; każdy jest wierszem na liście Terrains i jest tworzony w jednej z trzech rozdzielczości, 128² (szybka), 256² (zrównoważona) albo 512² (szczegółowa).
Panel ma dziesięć trybów, a łączy je jedno: maska namalowana w Masks ogranicza każdy z nich.
| Tryb | Co robi |
|---|---|
| Sculpt | siedemnaście pędzli na polu wysokości |
| Paint | do ośmiu warstw tekstur, na dwóch splatmapach |
| Generate | szum, automatyczne teksturowanie i import prawdziwej rzeźby terenu |
| Sketch | narysuj grzbiety i doliny, zsyntetyzuj teren, żeby pasował |
| Masks | ogranicz każdy inny tryb do części powierzchni |
| Water | poziom morza, oraz wybór między wodą terenu a oceanem FFT |
| Paths | droga Béziera wypieczona w podłoże |
| Vegetation | rozrzucanie pędzlem albo według reguł |
| SDF | teren raymarchowany, renderowany, a nie meshowany |
| Biomes | gleba, rośliny, drzewa i skały w jednym przebiegu |
Sculpt. Podnieś 1, Obniż 2, Wygładź 3, Spłaszcz 4, Uszczypnij
5, Nadmuchaj 6, Szum 7, Wyostrz 8, Stempel 9, Terasuj 0, Erozja
E, Wypełnij F, Klon C (Alt-klik ustawia źródło), Rozmyj B, Rampa
R, plus dwa narzędzia wodne, River rysuje koryto, Lake wypełnia w
punkcie.
Sam pędzel ma dynamikę: krzywa nacisku, leniwa mysz, opadanie, symetria,
wzór oraz jitter zarówno rozmiaru, jak i siły. Stamp niesie sześć
kształtów, krater, szczyt góry, płaskowyż, dolina rzeczna, kopuła, wzgórze
szumowe. Erozja przychodzi w dwóch formach: pędzel E jest lokalny,
podczas gdy Adjustments uruchamia erozję hydrauliczną, termiczną
i wietrzną na całym terenie.
Paint. Osiem warstw, bo dwie splatmapy RGBA trzymają po cztery kanały każda. Biblioteka materiałów jest posortowana po kategorii, trawa, ziemia, las, skały, drogi i powierzchnie, klify, piasek, śnieg, wulkaniczne, podmokłe, fantasy i własne, a każda warstwa niesie skalę UV, przemieszczenie, mapę detalu i relief powierzchni (siła bump i głębokość parallax). Break texture tiling (cell bombing) to ustawienie, które powstrzymuje powtarzającą się teksturę gruntu przed czytaniem się jako siatka.
Generate buduje z szumu, potem Generate Textures przypisuje materiały według wysokości i nachylenia, z wariacją cienia północ/południe oraz brzegami piaszczystymi albo żwirowymi tam, gdzie jest woda. Real World importuje publiczne kafle wysokości NASA/USGS: wybierz punkt orientacyjny albo wpisz współrzędne, wybierz powiększenie, a panel zgłasza zakres wysokości, który przyniósł.
Sketch to inne wejście. Narysuj pociągnięcia grzbietów i dolin na mapie 2D, wybierz do trzech prawdziwych krajobrazów źródłowych, a teren zostanie zsyntetyzowany zgodnie ze szkicem, opcjonalnie wmieszany w to, co już tam jest, automatycznie teksturowany i erodowany w tym samym przebiegu.
Masks są malowane pędzlem, a potem edytowane jako całość: wyczyść, odwróć, rozmyj, powiększ, zmniejsz. Inteligentne maski wyprowadzają jedną z samego terenu, po wysokości, po nachyleniu, po warstwie albo po wklęsłości.
Paths. Kliknij, żeby upuścić punkty kontrolne, a gładka krzywa przechodzi przez nie; przeciągnij bursztynowe punkty, żeby je przesunąć, cyjanowe uchwyty, żeby wygiąć krzywą. Bake Path spłaszcza podłoże pod spodem, maluje teksturę i podnosi nasypy.
Vegetation ma dwie połowy. Pędzel umieszcza i usuwa instancje ręcznie; reguły rozrzutu umieszczają je według warunku, wag warstw, ziarna, minimalnej/maksymalnej skali oraz pasma wysokości i nachylenia, które akceptuje każdy zasób. Trawa i kwiaty zanikają za konfigurowalnym dystansem rysowania, a Export to Scene zamienia instancje w obiekty sceny.
Biomes to jednokliknięciowa wersja wszystkiego powyższego: wybierz biom, zaznacz kategorie, których chcesz (gleba, drzewa, rośliny i trawa, kwiaty, glony przy wodzie, skały), ustaw gęstość, a Apply Biome maluje podłoże i rozrzuca wszystko, zgłaszając, ile instancji każdego rodzaju umieścił. Różnorodność wieku drzew miesza sadzonki z prastarymi drzewami, zamiast stemplować to samo drzewo wszędzie, a ground blend (RVT) zlewa podstawę każdej skały z kolorem terenu pod nią.
SDF to inny renderer, nie inne narzędzie: teren jest raymarchowany z pola odległości, kształt przez oktawy, lacunarity i persistence, teksturowanie przez trawę/skałę/śnieg z linią śniegu i progiem nachylenia, oraz własne miękkie cienie, ambient occlusion i mgła.
Duże tereny mają system LOD z geometrią spódnicy (która zamyka szczeliny między poziomami), płynnymi przejściami poziomów, wycinaniem frustum i nakładką statystyk. Mapy wysokości importują się i eksportują jako 16-bitowe PNG, 8-bitowe PNG albo RAW 16-bit; splatmapy jako jeden PNG RGBA albo jeden plik na warstwę; a cały teren, albo tylko jego ustawienia, jako preset.
Sky Studio#
Atmosfera. Cztery typy nieba, solid, gradient, HDRI oraz fizyczna atmosfera z rozpraszaniem Rayleigha i Mie, absorpcją Mie, ozonem, albedo gruntu, turbidity, promieniem planety i grubością atmosfery.
Wszystko zależy od pory dnia, która może cyklować sama: słońce po wysokości, azymucie i intensywności, z własną intensywnością cienia; księżyc po fazie; gwiazdy z migotaniem; oraz zorza. Volumetric clouds mają grubość, erozję, skalę szumu i zniekształcenie curl, oraz światło przez absorpcję, rozproszenie, ambient i człon powder; cirrus i Belt of Venus są osobne. Aerial perspective to zamglenie gęstniejące z odległością i zanikające dalekiej geometrii w horyzont, to ustawienie, które sprawia, że krajobraz czyta się jako rozległy.
Dziesięć presetów na start: pogodny dzień, świt, zachód, zmierzch, noc, pochmurno, burzowo, pustynia, arktyka i kosmos.
Water#
Dwie karty: Ocean (FFT) dla otwartego morza, Shore & lakes dla reszty.
⚠️ Woda jest tworzona w edytorze Terrain: narzędziami rzeki i jeziora, albo Show Water, a dostrajana tutaj. Otwarcie tego panelu na scenie bez wody daje ustawienia, które nie mają do czego się przyłożyć.
Woda przybrzeżna niesie kolor, krycie, siłę i prędkość fal, choppiness, szerokość piany i Fresnela, z odbiciami w przestrzeni ekranu i rozmyciem refrakcji. Pod spodem jest sam shader WGSL: dwie skale normalnych z własnymi kierunkami i prędkością przewijania, próg i miękkość piany, siła refrakcji i współczynnik załamania, oraz światło wewnątrz wody, absorpcja, turbidity, rozpraszanie i przezierność.
Tree Generator#
Dwa tryby, Tree i Trunk. Drzewo jest liściaste albo iglaste, ma wiek od sadzonki po prastare i może być żywe, martwe, uschnięte na pniu albo powalone. Wszystko jest oparte na ziarnie, więc Randomize seed to najszybszy sposób na inne drzewo o tym samym charakterze.
Kształt jest per poziom gałęzi: dzieci, długość, promień, zwężenie, powykręcanie, skręt, sekcje, segmenty, kąt i wysokość startu, plus naturalna wariacja, fototropizm i grawitropizm: dwa, które sprawiają, że drzewo pochyla się do światła i opada pod własnym ciężarem, oraz globalna siła z własną mocą. Podstawa ma nasadę korzeniową (płaty i wysokość) i przypory.
Liście to billboardy, jedno- albo dwustronne, z liczbą, rozmiarem, kątem, wariancją, zbijaniem w kępki, zwijaniem, opadaniem, połyskiem i zaokrąglonymi normalnymi. Kora ma sześć stylów, ridged, aspen, pine, birch, smooth, palm, z reliefem, mchem, wilgotną podstawą, wypaleniem słońcem, ambient occlusion korony i jesiennym przebarwieniem. Cztery pory roku przełączają cały wygląd naraz.
Forest rozrzuca wiele naraz: liczba, promień rozrzutu, wariancja skali oraz mieszanka wieku (pojedynczy, naturalny, młody, stary, równy). Add age progression umieszcza wszystkie pięć etapów życia w rzędzie, co jest najszybszym sposobem na ocenienie ich obok siebie. Drzewo wychodzi jako encja sceny albo jako GLB, a każde ustawienie można zapisać jako preset.
Plant Generator#
Pięć rodzajów, kwiat, kępa, zioło, paproć, trawa, dzielące łodygę (liczba, wysokość, grubość, krzywizna, kolor) i liście (liczba, rozmiar, szerokość, kąt). Paprocie dodają pary listków, rozwarcie listków i łuk liścia; trawa dodaje liczbę i łuk źdźbeł.
Kwiat jest opcjonalny dla każdego z nich: płatki, rzędy płatków, długość, szerokość, zwijanie, ostrość czubka, rozkwit, rozmiar środka i trzy kolory, płatek, czubek płatka i środek, z przezierem i chropowatością dla tego, jak światło przechodzi przez liść. Dodaj jeden do sceny, rozrzuć wiele, albo wyeksportuj GLB.
Rock Generator#
Trzy rodzaje, kamień, głaz, klif, w trzech stylach: realistyczny, toon, albo low poly z konturem.
Kształt to szum na sferze: skala, siła, oktawy, persistence, warp oraz opcja ridged, plus warstwy z własną częstotliwością i cięcia fasetowe z głębokością i ostrością dla kanciastego kamienia. Promień, detal, spłaszczenie, wariancja kształtu i płaski spód decydują o sylwetce, a cztery presety erozji, świeży, zwietrzały, naturalny, erodowany, poruszają to wszystko naraz.
Powierzchnia ma wariację koloru, żyły mineralne, porosty i mech, teksturę detalu z powtarzaniem i siłą, mieszanie triplanarne i relief parallax. Domyślnie używa dołączonego materiału Stone; wyślij materiał z Matter do Engine, żeby go nadpisać.
Kitbash, ta sama biblioteka co Sculpt#
Kitbash jest współdzielony z Sculpt: ten panel i Edit Forge w Sculpt czytają jedną bibliotekę. Element zbudowany tam jest umieszczany tutaj, a element pomalowany tutaj może zostać zapisany do niej z powrotem.
To, co przechowuje scena, to część i jej wymiary, nie jej wierzchołki, dlatego budynek z kitbash kosztuje niemal nic w pliku i może być zaktualizowany później ze swojego źródła.
Uzbrój element z katalogu, a każde lewe kliknięcie go umieszcza. Trzy tryby
przyciągania decydują, gdzie ląduje: on terrain (elementy podążają za
wysokością gruntu pod nimi), on water (płaszczyzna budowania siedzi na
poziomie wody) oraz snap to sockets, wyceluj punkt połączenia na
umieszczonym elemencie, a nowy obróci się, żeby się z nim spotkać.
Łańcuch rośnie od swojego wolnego końca, zajęte gniazda wypadają z listy
kandydatów, a każde kliknięcie jest własnym krokiem cofania. Ctrl/Cmd
pozostaje zarezerwowany dla zaznaczenia, a Alt dla obrotu. Kolekcje
zachowują swoje źródło i wersję, więc instancję można zaktualizować, gdy
zmieni się oryginał.
Pozostałe edytory#
Edytory świata wypełniają scenę; te dają jej interfejs, mapę, tabele zawartości i narzędzia do sprawdzenia, ile to wszystko kosztuje.
Edytor HUD#
Tools → Editors → UI. Sześć kart, Templates, Elements, Layers, Preview, Style i Script: nad podglądem, który przełącza się między trzema rozmiarami urządzeń: desktop 960×540, tablet 768×432, mobile 375×667.
Elementy przychodzą w trzech grupach (Display, Data, Input) i
zagnieżdżają się: panel i flex trzymają dzieci, więc karta Layers jest
prawdziwym drzewem, a nie płaską listą. Historia sięga pięćdziesięciu
kroków wstecz.
⚠️ Karta Style jest podobna do CSS, i ta różnica ma znaczenie. HUD
jest rysowany na canvasie przez GUI Babylona, a prawdziwy CSS tam nie
dociera. Reguły, które tu piszesz, mapują się na właściwości GUI; selektory
to #name dla jednego elementu, .type dla rodzaju (.text, .panel) i
* dla wszystkiego.
Karta Script to drugi sposób na zbudowanie go: API ui.*, createText,
createPanel, createProgress, createButton, z dwoma sposobami
uruchomienia. Build Layout wykonuje go w czasie projektowania i
zostawia ci prawdziwe elementy do ręcznego dostrojenia; Run Live
uruchamia go w grze.
Dwa połączenia na zewnątrz: grafika HUD otwiera się w Inkwell albo Vectra i jest powiązana z powrotem, a nie kopiowana, a dokument Vectra można zaimportować jako elementy HUD. Element minimapy jest osobną rzeczą, z zasięgiem, siatką i znacznikami dla gracza, wrogów, sojuszników, przedmiotów i celów.
Edytor tilemap#
Jedenaście narzędzi, pędzel, gumka, wypełnienie, prostokąt, zaznaczenie, eyedropper, stempel, autotile, prop, strefa i ścieżka, na czterech projekcjach mapy: orthogonal, isometric, staggered isometric i hexagonal.
Autotiling dostarcza cztery szablony, a liczba w każdej nazwie to liczba kafelków, których oczekuje: Blob 47 (pełne narożniki i krawędzie), Wang 16 (oparty na krawędziach), Simple 4 (NSEW) i RPG Maker A2 (48 kafelków, kompatybilny z mapami tworzonymi tam).
Dwie warstwy siedzą nad samymi kafelkami. Zones malują znaczenie rozgrywkowe, buildable, water, forest, road, farm, residential, commercial, blocked, a props umieszczają obiekty według kategorii: drzewa, skały, budynki, roślinność, woda, ścieżki. Mapy żyją we własnej bazie danych przeglądarki, więc niezapisana przeżywa odświeżenie.
Inventory, Data tables i Dialogue Trees#
Trzy edytory, które pozwalają grze mieć zawartość, bez konieczności trzymania jej w kodzie.
Inventory edytuje katalog i stosuje go do sceny. Przedmiot niesie akcje,
a akcja to trigger: use, equip, unequip, plus jeden z ośmiu
typów: message, heal, damage, grant, remove, event, toast, scene. Sam
panel ma trzy układy (grid, list, compact), trzy presety wyglądu (graphite,
midnight, warm) oraz cztery sloty wizualne, background, slot, equipment,
tooltip, które otwierają się w innym module do porządnego przerysowania.
Data tables są typowane: kolumna to text, number, bool albo
ref. CSV wchodzi i wychodzi. Każda edycja przechodzi przez czyste
funkcje, i to właśnie utrzymuje tabelę, którą zapisuje eksport, identyczną
z tabelą, którą czyta build.
Dialogue trees to węzły z mówcą i kwestią. Węzeł albo kontynuuje do
jednego next, albo rozgałęzia się w choices, każdy z własnym tekstem
i własnym celem, przełącznik rozgałęzienia to jedyna decyzja strukturalna
w edytorze.
Animacja i kamera#
Cinematic Sequencer buduje sekwencje z czasem trwania i flagą pętli, jedną ścieżką na encję oraz klatkami kluczowymi przechwyconymi na playheadzie, Add Key bierze bieżącą wartość encji, zamiast prosić o jej wpisanie. Edytor grafu pod spodem pokazuje czas względem postępu, z okrągłymi uchwytami do easingu: nachylenie to prędkość. Ujęcia mają własny czas trwania, a kadrowanie Cinemascope (1.422:1) jest dostępne dla letterboxu.
Camera Tools obejmuje FOV, pozycję, cel, tryb i prędkość, plus bookmarks dla punktów widzenia, do których wracasz, oraz warstwy kamery.
Audio#
Audio Manager trzyma zdarzenia audio, ścieżki oraz mikser z kanałami i kategoriami. Efekty per źródło to low-pass, high-pass i reverb send; tryb random wybiera spośród kilku klipów, żeby powtarzany dźwięk przestał czytać się jak pętla. Przewijanie odtwarza dźwięk, podczas gdy przeciągasz playhead.
Profiler#
Rozbicie klatki, nie licznik klatek: render kamery, ewaluacja mesha, cząsteczki, sprite'y i kompilacja shaderów, każde oznaczone jako rzeczywiste albo szacowane, dzięki czemu liczba pochodząca z pomiaru nigdy nie zostaje wzięta za taką, która pochodzi z modelu. Liczniki obok: meshe i aktywne meshe, światła, kamery, ciała fizyczne.
Nagrywanie jest jawne i kończy się na liście Issues, a nie na wykresie do interpretacji: niskie FPS, dużo draw calli, dużo trójkątów, dużo pamięci, w odniesieniu do docelowej liczby klatek, którą ustawiłeś.
Budowanie sceny#
Encje#

Nowa scena przychodzi z Main Camera, Directional Light, Skybox i Ground Plane.

Co możesz dodać: Empty, Cube, Sphere, Cylinder, Plane, Light, Camera, Script, Mesh, plus dwie rodziny, które przychodzą wstępnie podłączone:
- Characters: Third-Person, First-Person (FPS), Top-Down, Platformer, Basic.
- Props: Pickup (heal) i Hazard (damage).
Graf sceny wyszukuje, filtruje po typie oraz dodaje, duplikuje albo usuwa; encje się zagnieżdżają, a zmiana rodzica to przeciągnięcie. Umieszczanie ma przyciąganie oraz pędzel rozrzutu do szybkiego zapełniania gruntu.
Inspektor#
Transform (pozycja, obrót, skala), przełącznik Enabled oraz komponenty encji: dodawane, konfigurowane i usuwane tutaj, z Add Script na dole. Zaznacz kilka encji naraz, a inspektor przełącza się na edycję wsadową, więc jedna zmiana pola trafia do wszystkich naraz.
Konsola#
Nie tylko log. Filtruje po poziomie (wszystko, logi, info, ostrzeżenie,
błąd), łączy komunikat z powrotem z encją, która go wyprodukowała, i niesie
prompt wyrażenia: wpisz wyrażenie, Enter uruchamia je na żywej
scenie, strzałki przechodzą przez historię.
Nadawanie zachowania#
Trzy drogi, i one współistnieją.
Skrypty#
JavaScript z hookami cyklu życia, oraz własny materiał referencyjny:
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() {}
Kolizje i triggery odpalają się zarówno w 2D, jak i w 3D, a każda
strona otrzymuje własną normalną kontaktu: other.contact.normal wskazuje
od innej encji w stronę tej. To właśnie pozwala skryptowi odróżnić „to ja
na to wylądowałem” od „to ono wylądowało na mnie”: stomp platformowca
odczytuje other.contact.normal.y > 0.5.
Edytor skryptów#
F2, albo Add Script na encji. Edytor Monaco z kartami, kilka skryptów
otwartych naraz, każdy trzymany we własnej bazie danych przeglądarki,
zamiast w pliku projektu, więc niezapisany bufor przeżywa odświeżenie.
Pięć dialektów, jeden program. Przełącznik języka oferuje JavaScript, BASIC, Python, C# i Rust. To, co robi, nie jest tym, na co wygląda: JavaScript jest źródłem prawdy, a pozostałe cztery są widokami transpilowanymi z zapisanego JS-a. Przełączenie z Pythona na Rust nie tłumaczy Pythona, tylko wraca do JS-a, z którego Python został wygenerowany, i tłumaczy to. Tłumaczenie wieloetapowe to coś, co psuje program, i edytor odmawia tego robić.
Trzynaście szablonów w pięciu kategoriach, każdy oznaczony poziomem trudności:
| Kategoria | Szablony |
|---|---|
| Basics | pusty skrypt ze szkieletem hooków cyklu życia |
| Movement | auto-obrót · WASD · ruch 3D oparty na osiach · skok fizyczny z wykrywaniem gruntu · kamera trzecioosobowa podążająca |
| Gameplay | strefa wyzwalająca · pasek zdrowia z obrażeniami i leczeniem · spawner czasowy |
| AI | patrol z alarmem bliskości gracza |
| Advanced | cutscenka async w stylu Verse · concurrency strukturalna · pełny test powierzchni API |
Presety kontrolera postaci i propy startowe gry (pickup, hazard) pojawiają się na tej samej liście, co jest praktycznym sposobem, żeby nałożyć działający kontroler na zaimportowaną postać.
Uruchamianie i debugowanie. F5 uruchamia, F9 ustawia breakpoint.
Debugger zatrzymuje się na linii, wykonuje pojedynczą klatkę i zgłasza
wartości na żywo przez wyrażenia obserwowane. Script Lab uruchamia
program bez żadnej podłączonej encji, notatnik dla API, a nie komponent na
obiekcie.
Obok kodu: API reference, lista symboli otwartego pliku oraz biblioteka
fragmentów z ulubionymi i ostatnimi. Ctrl+S zapisuje, Ctrl+F wyszukuje,
Ctrl+H zamienia, a edytor dostarcza osiem motywów.
Blueprinty i zachowania#
Graf wizualny, biblioteka gotowych zachowań oraz maszyna stanów ułożona nad stosem zachowań.
Graf niesie 267 węzłów w dwudziestu dwóch grupach, Math, Scene, Entity, Animation, Flow Control, String, Events, Physics, UI, Array, Vector, Transform, Debug, Input, Utility, Game, Boolean, Camera, Tween, Variables, Audio oraz rodziny 2D i 3D. Trzy właściwości je rozdzielają, i to z nich zbudowany jest graf: 17 węzłów zdarzeń zaczyna wykonanie, 117 węzłów czystych liczy wartość bez efektu ubocznego i bez pinu wykonania, a 9 węzłów utajonych kończy się później, to te, które sprawiają, że opóźnienie albo tween da się wyrazić bez własnej maszyny stanów.
Cztery narzędzia: zaznacz V, przesuń widok H, komentarz C, przekieruj
R, nad płótnem, które powiększa od 0.1× do 3× z minimapą. Zmienne
przychodzą w sześciu typach, boolean, integer, float, string, vector3 i
object. Opis każdego węzła jest na jego tooltipie, i to jedyne miejsce,
gdzie biblioteka tej wielkości może się wytłumaczyć.
Maszyna stanów#
Własny panel, i celowo nie panel Animatora: warunki Animatora to płaski enum z ręcznie napisanym UI per przypadek, podczas gdy te są strukturalne i mówią o świecie.
Siedem warunków, a każdy to pytanie o scenę: sees (oznaczony cel w zasięgu, opcjonalnie w obrębie kąta i w linii wzroku), lost (brak celu przez N sekund), distance względem progu, health, message received, timer (czas spędzony w bieżącym stanie) oraz flag (wartość na współdzielonej tablicy blackboard). Dwa łączniki, and i or, są wymienione oba, mimo że or już istniało niejawnie, dwa przejścia do tego samego stanu to or, ale „widzi mnie I wciąż mam zdrowie” nie miało żadnej formy.
⚠️ Health jest porównywane jako ułamek maksimum, nigdy jako wartość bezwzględna. Próg „poniżej 30 HP” nie przetrwa przebalansowania; „poniżej 0.3” przetrwa.
Przy wejściu albo wyjściu ze stanu, cztery efekty: send wiadomość, set klucz na blackboardzie, play klip animacji, albo odpal nazwany efekt. Żaden z nich niczego nie porusza, ruch pozostaje przy zachowaniach, a maszyna decyduje, które zachowanie jest aktywne.
Przejście może zaczynać się od *, oznaczającego dowolny stan. Walidator
zwraca listę problemów, zamiast rzucać błędem na pierwszym, więc
napół napisana maszyna wciąż się rysuje i widzisz od razu wszystko, co
jest nie tak. Pozycje węzłów są częścią danych: graf, którego układ żyje
poza sceną, wraca poprzestawiany dla następnej osoby, która go otworzy.
BASIC#
Tryb viewportu TXT to klasyczne środowisko BASIC z dołączonymi programami
demo, a język ma własny materiał referencyjny. To
tutaj prawdziwy język, nie zabawka: moduły wieloplikowe (#INCLUDE),
typowane liczby (podpisane i niepodpisane 8/16/32/64-bit, float32 i
float64), zagnieżdżone rekordy, metody obiektów z SELF, referencje
(REF/BYREF), strukturalne TRY/CATCH/FINALLY, kompilacja warunkowa,
koprogramy, typowane uchwyty oraz WebGPU compute z buforami
pamięciowymi i surowym WGSL.
OPTION EXPLICIT jest opcjonalny; klasyczne zmienne niejawne pozostają
domyślne, więc importowane programy wciąż działają.
Odtwarzanie i wydawanie#
Play#
Play, Pause, Stop. Po zatrzymaniu baner zgłasza co zmieniła
sesja, więc edycja w trybie play nigdy nie jest cicho zachowana ani
cicho utracona. Sesje mogą być nagrywane i odtwarzane do zgłoszenia
błędu, a zakładki scenariusza pozwalają zacząć playtest od środka
poziomu.
Build#
Build przyjmuje typ gry (wykryty ze sceny, albo ustawiony ręcznie: sidescroller/platformer, first/third person, oparty na tekście) oraz cel.
- Web: WebGPU z fallbackiem WebGL, opcjonalne WebXR (VR/AR), minifikacja, licznik FPS oraz opcja embed assets, która produkuje jeden plik.
- Desktop i mobile: buildy natywne. Scena jest eksportowana jako
dane (
scene.glb+scene.json) i kompilowana przez wygenerowany projekt Bevy (Rust); skrypty działają tam bez zmian na osadzonym środowisku uruchomieniowym QuickJS.
Kompresja jest konfigurowalna per oś, algorytm, tekstury, meshe, z presetem jakości wiążącym je razem. Buildy są trzymane w historii z ich rozmiarami (oryginalny w stosunku do skompresowanego) i mogą być pobrane ponownie później.
Build natywny zawiera tylko to, co eksporter potrafi wyeksportować. glTF nie przechwytuje własnych shaderów, thin instances, proceduralnego nieba ani post-processingu, więc system działający w czasie gry, który nie został przeniesiony na stronę Bevy, będzie brakować w buildzie desktopowym albo mobilnym, wyglądając przy tym idealnie w wersji webowej. Sprawdź build natywny, zanim na nim polegasz.
Multiplayer#
Panel Multiplayer room łączy scenę z serwerem gry Colyseus. Darmowy współdzielony serwer testowy jest dostępny bez konta i bez konfiguracji; projekt może też otrzymać własny serwer. Pokój jest kluczowany kodem udostępniania, który możesz zachować dla siebie albo rozdać.
Pliki, które odczytuje i zapisuje#
| Format natywny | .engine |
| Importuje | .glb, .gltf, .obj, .fbx, .png, .svg, .mp4, .webm, .mov, .scene |
| Eksportuje | build webowy, natywny build desktopowy/mobilny, scene.glb + scene.json |
Wysyłanie pracy do innych studiów#
Przyjmuje meshe ze Sculpt, Retopo i Pigment, całe sceny z Render, pixel art, animacje, zestawy materiałów PBR z Matter, rigi 2D, projekty wideo, obrazy, grafikę wektorową i obiekty Vectra.
Tworzy rigi 2D.
Makieta ekranu z Vectra przychodzi jako struktura, nie jako obraz. Staje się hierarchią HUD, którą Engine może rozmieścić i zeskryptować: różnica między projektem, który można podłączyć, a zrzutem ekranu tego projektu.
Skróty#
Cmd/Ctrl + K sięga do własnych poleceń Engine z palety, obok tych
globalnych. Engine ma też dedykowany, przeszukiwalny panel skrótów
klawiszowych we własnych ustawieniach; ma ich dużo więcej, niż zmieściłoby
się na stronie ze skrótami klawiszowymi.
Ograniczenia i częste problemy#
- Pusty viewport to zwykle przeglądarka, nie scena. Engine potrzebuje WebGL 2; sprawdź, czy akceleracja sprzętowa jest włączona.
- Systems i Tools dzielą jedną szufladę. Jeśli panel „zniknął”, jest prawdopodobnie w tym drugim.
- Konsola to pierwsze miejsce, w które warto zajrzeć, nie ostatnie: łączy błędy z powrotem z encją, która je wywołała.
- Komponent dodany w trybie play może nie przetrwać zatrzymania. Przeczytaj baner, który pojawia się po zatrzymaniu.
- Fizyka różni się między 2D i 3D w swoim solverze, mimo że callbacki skryptu są takie same. Kontakt spoczynkowy w 2D jest wykrywany z 2-milimetrową skórą, bo solver sprowadza penetrację dokładnie do zera, zanim uruchomi się wykrywanie.