Engine
A játékmotor: jelenetgráf, komponensek, szkriptelés, fizika, egy PBR pipeline, világszerkesztők, és natív buildek asztali gépre és mobilra.
Egy mondatban#
Egy teljes játékmotor a böngészőben: építsen egy jelenetet, adjon neki viselkedést, nyomja meg a lejátszást, és exportálja webre, vagy natív asztali és mobil binárisra.
Ez messze a legnagyobb modul az aukimiban. Ez az oldal úgy térképezi fel, ahogy a felület teszi, aszerint a fiók szerint, amelyben az egyes panelek élnek, nem ábécérendben felsorolva a funkciókat.
Az elrendezés#

| Menu bar | File · Edit · View · Windows · Run · Plugins |
| Toolbar | projektnév, undo/redo, a viewport-mód kapcsoló (3D · 2.5D · 2D · TXT), a jelenetválasztó, a négy panelgomb, FX Master, HUD, a felbontásmező, transzport (play, pause, stop) és Build |
| Bal | egy ikonsáv, jelenetgráf, lista, audio, konzol, és az a panel, amelyet megnyit |
| Középen | a viewport, saját gizmo-sávval (mozgatás, forgatás, skálázás, world/local, rács, illesztés, keretezés) és egy minőségválasztóval |
| Jobb | az inspector a kijelölt entitáshoz |
| Alul | Console és Profiler, egymás mellett |
| Állapotsor | mód, viewport-dimenzió, entitásszám, rácsállapot |
A négy panelgomb#

Nem mindegyik viselkedik ugyanúgy, és a különbséget érdemes ismerni, mielőtt keresne valamit:
| Gomb | Viselkedés |
|---|---|
| Systems | megnyit egy fiókot |
| Tools | ugyanazt a fiókot nyitja meg, a Systems és a Tools bezárják egymást |
| Assets | ki-be kapcsol egy állandó dokkolót |
| Scripts | megnyit egy modált |
A Systems és a Tools szándékosan osztozik egy helyen; egymás mellé vannak helyezve, hogy ez látszódjon.
Systems#
A motor saját alrendszerei: azok a dolgok, amik egy jelenetnek vannak, nem azok, amikkel épít.
| Csoport | Panelek |
|---|---|
| Plugins | a plugin böngésző |
| Rendering | Rendering · Rendering Pipeline · Look Presets · Shader Lab · Render Style · Shadows · Mesh LOD · Post Process Volumes |
| Gameplay | Multiplayer room · Physics · AI & Navigation · Gameplay Zones |
| World | Scene Graph · Level Streaming · Baking · Light Probes · Decals |
Rendering#
Az FX Master kapcsoló a toolbaron egy kattintással ki- és bekapcsolja a teljes post pipeline-t: ez a leggyorsabb módja annak, hogy lássa, mibe kerül. Egyenként: bloom, mélységélesség, SSR, SSAO, GTAO, SSGI, temporal AA, FXAA, mozgáselmosás, volumetrikus köd, contact shadows, színkorrekció, filmszemcse, kromatikus aberráció, vignetta és tonemapping, plusz Nanite-stílusú geometria és Hi-Z occlusion.
A Look Presets a fentiek teljes konfigurációi. A Render Style megváltoztatja a regisztert, stilizáltra a fotórealisztikus helyett. A Shader Lab az, ahol a sajátját megírja. A Mesh LOD és a Post Process Volumes az a kettő, amely egy nagy jelenetnél megtérül: részletességi szint (level-of-detail) meshenként, és utófeldolgozás, amely csak egy volume-on belül érvényesül.
A renderelő a Babylon.js. WebGL-en indul, és átvált WebGPU-ra, amikor a böngészőnek megvan, magától visszaesve, ha ez nem sikerül.
Gameplay-rendszerek#
A Physics lefedi mind a 3D-s megoldót (Havok), mind a 2D-set. Az AI & Navigation a navmesh és a rajta lévő ágensek. A Gameplay Zones viselkedéssel ellátott trigger volume-ok. A Multiplayer room összeköti a jelenetet egy Colyseus szerverrel (lásd alább).
World-rendszerek#
A Level Streaming betölti és kirakja egy pálya részeit, ahogy a játékos mozog. A Baking előszámítja a megvilágítást; a Light Probes indirekt fényt és tükröződéseket rögzít a tér pontjaiban. A Decals részletet vetít felületekre geometria hozzáadása nélkül.
Tools#
A dolgok, amikkel épít.
| Csoport | Panelek |
|---|---|
| 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 |
Világgenerátorok#
Terrain, water, sky, és négy tartalomgenerátor, fák, növények, sziklák és kitbash darabok. Saját fejezetük van alább.
Gameplay-tartalom készítése#
Az Inventory, a Data tables (Tools → Data) és a Dialogue Trees az a három szerkesztő, amely lehetővé teszi, hogy egy játéknak legyen tartalma anélkül, hogy az a tartalom kódban élne, részletesen alább.
Animáció#
A Timeline entitásanimációhoz, a Cinematic Sequencer felvételekhez, és a Camera Tools a képkivágáshoz. Lásd Animáció és kamera.
A világszerkesztők#
Hét panel a Tools → World alatt. Ezek a gyors módja egy jelenet feltöltésének, és az oka annak, hogy egy pályának nem kell egy modellezési munkamenettel kezdődnie.
Terrain#
Egy jelenet több terrain-t is tartalmazhat; mindegyik egy sor a Terrains listában, és három felbontás egyikén jön létre: 128² (gyors), 256² (kiegyensúlyozott) vagy 512² (részletes).
A panelnek tíz módja van, és egy dologban osztoznak: a Masks-ban festett maszk mindegyiket korlátozza.
| Mód | Mit csinál |
|---|---|
| Sculpt | tizenhét ecset a magasságmezőn |
| Paint | akár nyolc textúraréteg, két splatmapen keresztül |
| Generate | zaj, automatikus textúrázás, és valós terepmagasság-import |
| Sketch | gerincek és völgyek rajzolása, illeszkedő terrain szintetizálása |
| Masks | minden más módot a felület egy részére korlátoz |
| Water | tengerszint, és választás a terrain-víz és egy FFT-óceán között |
| Paths | egy Bézier-út a talajba sütve |
| Vegetation | ecset- vagy szabályalapú szórás |
| SDF | egy raymarchelt terrain, renderelve, nem meshelve |
| Biomes | talaj, növények, fák és sziklák egyetlen menetben |
Sculpt. Raise 1, Lower 2, Smooth 3, Flatten 4, Pinch 5, Inflate
6, Noise 7, Sharpen 8, Stamp 9, Terrace 0, Erode E, Fill F, Clone
C (Alt-kattintás állítja be a forrást), Blur B, Ramp R, plusz a két
vízeszköz, a River egy medret rajzol, a Lake egy ponton tölt fel.
Magának az ecsetnek dinamikája van: nyomásgörbe, lazy mouse, falloff,
szimmetria, minta, és jitter mind a méretre, mind az erősségre. A Stamp hat
formát hordoz, kráter, hegycsúcs, fennsík, folyóvölgy, kupola, zajdomb. Az
erózió két formában létezik: az E ecset lokális, míg az Adjustments
hidraulikus, termikus és szél-eróziót futtat az egész terrainen.
Paint. Nyolc réteg, mert két RGBA splatmap egyenként négy csatornát tartalmaz. Az anyagkönyvtár kategória szerint van rendezve, fű, föld, erdő, sziklák, utak és felületek, sziklafalak, homok, hó, vulkanikus, vizes élőhely, fantasy, és a saját, és minden réteg hordoz UV-skálát, displacementet, egy részletező térképet, és felületi reliefet (bump-erősség és parallax-mélység). A Break texture tiling (cell bombing) az a beállítás, amely megakadályozza, hogy egy ismételt talajtextúra rácsként hasson.
A Generate zajból épít, majd a Generate Textures magasság és lejtés szerint rendel anyagokat, észak-déli árnyalatvariációval és homokos vagy kavicsos partvonalakkal ott, ahol víz van. A Real World nyilvános NASA/USGS magassági csempéket importál: válasszon egy tereptárgyat, vagy írjon be koordinátákat, válassza ki a zoomot, és a panel jelenti a visszahozott magassági tartományt.
A Sketch a másik bejárat. Rajzoljon gerinc- és völgyvonásokat egy 2D térképen, válasszon ki akár három valódi forrás-tájat, és a terrain szintetizálódik, hogy illeszkedjen a vázlatra, opcionálisan belekeverve abba, ami már ott van, automatikusan textúrázva és eróziózva ugyanabban a menetben.
A Masks egy ecsettel festhető, majd egészében szerkeszthető: törlés, invertálás, elmosás, növelés, zsugorítás. Az okos maszkok magából a terrainből vezetnek le egyet, magasság, lejtés, réteg vagy üreg szerint.
Paths. Kattintson vezérlőpontok elhelyezéséhez, és egy sima görbe fut át rajtuk; húzza a borostyánszín pontokat a mozgatáshoz, a ciánkék fogantyúkat a görbe hajlításához. A Bake Path ellapítja alatta a talajt, megfesti a textúrát, és felemeli a töltéseket.
A Vegetation-nek két fele van. Az ecset kézzel helyez el és távolít el példányokat; a scatter rules feltétel, rétegsúlyok, seed, min/max méret, és a magasság- és lejtéssáv szerint helyezi el őket, amit minden asset elfogad. A fű és a virágok elhalványulnak egy beállítható rajzolási távolságon túl, és az Export to Scene jelenetobjektumokká alakítja a példányokat.
A Biomes a fentiek egykattintásos verziója: válasszon egy biomot, pipálja ki a kívánt kategóriákat (talaj, fák, növények és fű, virágok, algák víz közelében, sziklák), állítson be egy sűrűséget, és az Apply Biome megfesti a talajt, és mindent szór, jelentve, hány példányt helyezett el mindegyikből. A fa age variety csemetéktől az ősrégiekig kever, ahelyett hogy mindenhová ugyanazt a fát pecsételné, és a ground blend (RVT) minden szikla alapját beolvasztja az alatta lévő terrain színébe.
Az SDF egy másik renderelő, nem egy másik eszköz: a terrain egy distance fieldből raymarchelt, formája oktávok, lacunarity és persistence szerint, textúrázása fű/szikla/hó szerint egy hóhatárral és egy lejtésküszöbbel, és saját lágy árnyékokkal, ambiens okklúzióval és köddel.
A nagy terraineknek van egy LOD-rendszerük skirt-geometriával (ez az, ami bezárja a réseket a szintek között), sima szintátmenetekkel, frustum cullinggal és egy statisztika-overlayjel. A heightmapek 16 bites PNG-ként, 8 bites PNG-ként vagy RAW 16 bitként importálódnak és exportálódnak; a splatmapek egy RGBA PNG-ként vagy rétegenként egy fájlként; és a teljes terrain, vagy csak a beállításai, előbeállításként.
Sky Studio#
Az atmoszféra. Négy égtípus, solid, gradient, HDRI, és egy physical atmosphere Rayleigh- és Mie-szórással, Mie-abszorpcióval, ózonnal, talajalbedóval, turbiditással, bolygósugárral és atmoszféravastagsággal.
Minden a napszakon múlik, amely magától is ciklizálhat: a nap elevációval, azimuttal és intenzitással, saját árnyékintenzitással; a hold fázissal; a csillagok pislogással; és egy sarki fény. A Volumetric clouds-nak van vastagsága, eróziója, zajskálája és curl-torzítása, és fénye abszorpción, szóráson, ambiensen és egy powder-tagon keresztül; a cirrus és a Vénusz-öv külön van kezelve. Az Aerial perspective az a pára, amely a távolsággal sűrűsödik, és a horizontba olvasztja a távoli geometriát, ez az a beállítás, ami nagynak mutat egy tájat.
Tíz előbeállítás, amivel indulhat: derült nappal, hajnal, naplemente, alkony, éjszaka, borult, viharos, sivatag, sarkvidéki és világűr.
Water#
Két fül: Ocean (FFT) a nyílt tengerhez, Shore & lakes mindenhez, ami más.
⚠️ A víz a Terrain szerkesztőben jön létre: a folyó- és tóeszközökkel, vagy a Show Water-rel, és itt hangolható. Ha ezt a panelt egy víz nélküli jeleneten nyitja meg, olyan beállításokat kap, amikre nincs mit alkalmazni.
A parti víz hordoz színt, átlátszatlanságot, hullámerősséget és -sebességet, choppiness-t, hab-szélességet és Fresnelt, képernyőtér-tükröződésekkel és törésihomály-elmosással. Alatta maga a WGSL shader: két normálskála saját scroll-iránnyal és sebességgel, hab-küszöb és lágyság, törési erősség és törésmutató, és a víz belsejében lévő fény, abszorpció, turbiditás, szórás és áttetszőség.
Tree Generator#
Két mód, Tree és Trunk. Egy fa lombhullató vagy örökzöld, kortól a csemetétől az ősrégiig, és lehet élő, holt, egy csonk vagy egy kidőlt törzs. Minden seedelt, így a Randomize seed a leggyorsabb módja annak, hogy egy másik fát kapjon ugyanazzal a jelleggel.
A forma ágszintenkénti: gyermekek száma, hossz, sugár, elkeskenyedés (taper), görcsösség, csavarodás, szekciók, szegmensek, szög és kezdőmagasság, plusz természetes variáció, fototropizmus és gravitropizmus: a kettő, amitől egy fa a fény felé dől, és a saját súlya alatt lekonyul, és egy globális erő saját erősséggel. Az alap gyökér-kiszélesedést (lebenyek és magasság) és támgyökereket (buttress) hordoz.
A levelek billboardok, egy- vagy kétoldalasak, darabszámmal, mérettel, szöggel, varianciával, csomósodással, göndörödéssel, lekonyulással, fénnyel és lekerekített normálokkal. A kéreg hat stílusban érkezik, bordázott, rezgőnyár, fenyő, nyír, sima, pálma, relieffel, mohával, egy nedves alappal, napfakulással, lombozat-ambiensokklúzióval és egy őszi fordulóval. Négy évszak egyszerre váltja az egész megjelenést.
A Forest sokat szór egyszerre: darabszám, szórási sugár, méretvariancia, és egy korkeverék (egységes, természetes, fiatal, öreg, egyenletes). Az Add age progression mind az öt életszakaszt egy sorba helyezi, ami a leggyorsabb módja annak, hogy egymás mellett ítélje meg őket. Egy fa jelenetentitásként vagy GLB-ként hagyja el, és bármelyik beállítás elmenthető előbeállításként.
Plant Generator#
Öt fajta, virág, cluster, gyógynövény, páfrány, fű, közös szárral (darabszám, magasság, vastagság, görbület, szín) és levelekkel (darabszám, méret, szélesség, szög). A páfrányok levélkepárokat, levélke-sweepet és levélágívet adnak hozzá; a fű pengeszámot és ívet ad hozzá.
Egy virág opcionális mindegyiken: sziromlevelek, szirom-sorok, hossz, szélesség, göndörödés, csúcsélesség, virágzás, középpont-méret, és három szín, szirom, sziromcsúcs és középpont, áttetszőséggel és érdességgel arra, hogyan halad át a fény a levélen. Adjon egyet a jelenethez, szórjon sokat, vagy exportáljon GLB-t.
Rock Generator#
Három fajta, rock, stone, cliff, három stílusban: realisztikus, toon, vagy low poly körvonallal.
A forma zaj egy gömbön: skála, erősség, oktávok, persistence, warp és egy ridged opció, plusz strata saját frekvenciával és facet cuts mélységgel és élességgel a szögletes kőhöz. A sugár, a részletesség, a lapítás, az alakvariancia és egy lapos alap dönti el a sziluettet, és négy erózió-előbeállítás, friss, mállott, természetes, erodált, mindezt egyszerre mozgatja.
A felületnek van színvariációja, ásványi erei, zuzmója és mohája, egy detail texture csempézéssel és erősséggel, triplanáris keverés és parallax-relief. Alapból egy csomagolt Stone anyagot használ; küldjön egy anyagot a Matterből az Engine-be a felülíráshoz.
Kitbash, ugyanaz a könyvtár, mint a Sculptban#
A Kitbash osztott a Sculpttal: ez a panel és a Sculpt Edit Forge-a egy könyvtárat olvas. Egy darab, amit ott épített, itt helyezhető el, és egy darab, amit itt festett meg, visszamenthető oda.
Amit a jelenet tárol, az a darab és a méretei, nem a vertexei, ez az, amiért egy kitbashelt épület szinte semmibe nem kerül a fájlban, és később frissíthető a forrásából.
Fegyverezzen fel egy darabot a katalógusból, és minden bal kattintás elhelyezi.
Három illesztési mód dönti el, hova kerül: on terrain (a darabok követik az
alattuk lévő talajmagasságot), on water (az építési sík a vízszinten ül), és
snap to sockets, célozzon meg egy csatlakozási pontot egy elhelyezett
darabon, és az új fordul, hogy találkozzon vele. Egy lánc a szabad végéből nő, a
foglalt socketek kiesnek a jelöltek közül, és minden kattintás saját
visszavonási lépés. A Ctrl/Cmd a kijelölésnek van fenntartva, az Alt a
forgatásnak. A gyűjtemények megtartják a forrásukat és a verziójukat, így egy
példány frissíthető, amikor az eredeti megváltozik.
A többi szerkesztő#
A világszerkesztők feltöltik a jelenetet; ezek felületet, térképet, tartalomtáblákat és a költségek ellenőrzésére szolgáló eszközöket adnak neki.
A HUD-szerkesztő#
Tools → Editors → UI. Hat fül, Templates, Elements, Layers, Preview, Style és Script, egy előnézet fölött, amely három eszközméret között vált: desktop 960×540, tablet 768×432, mobile 375×667.
Az elemek három csoportban érkeznek (Display, Data, Input), és
egymásba ágyazhatók: a panel és a flex tart gyerekeket, így a Layers fül egy
valódi fa, nem egy lapos lista. Az előzmény ötven lépés mély.
⚠️ A Style fül CSS-szerű, és a különbség számít. A HUD-ot a Babylon GUI-ja
rajzolja a canvasra, és a valódi CSS nem éri el. Az itt írt szabályok
GUI-tulajdonságokra mappelődnek; a szelektorok #name egy elemhez, .type egy
fajtához (.text, .panel) és * mindenhez.
A Script fül a másik módja egy HUD felépítésének: a ui.* API, createText,
createPanel, createProgress, createButton, kétféle futtatási móddal. A
Build Layout design-time-ban futtatja, és valódi elemeket hagy Önnek,
amiket kézzel tologathat; a Run Live a játékban futtatja.
Két kifelé mutató kapcsolat: a HUD-grafika megnyílik az Inkwellben vagy a Vectrában, és visszakötődik, nem másolódik, és egy Vectra-dokumentum importálható HUD-elemekként. A minimap-elem önálló dolog, hatótávolsággal, ráccsal, és jelölőkkel a játékoshoz, ellenségekhez, szövetségesekhez, tárgyakhoz és célokhoz.
A tilemap-szerkesztő#
Tizenegy eszköz, ecset, radír, kitöltés, téglalap, kijelölés, pipetta, stamp, autotile, prop, zone és path, négy térképvetületen: orthogonal, isometric, staggered isometric és hexagonal.
Az Autotiling négy sablonnal érkezik, és a szám minden névben a csempék száma, amit elvár: Blob 47 (teljes sarok és él), Wang 16 (élalapú), Simple 4 (NSEW), és RPG Maker A2 (48 csempe, kompatibilis az ott készített térképekkel).
Két réteg ül maguk a csempék fölött. A Zones gameplay-jelentést fest, beépíthető, víz, erdő, út, farm, lakó, kereskedelmi, blokkolt, és a props kategória szerint helyez el objektumokat: fák, sziklák, épületek, növényzet, víz, ösvények. A térképek a böngésző saját adatbázisában élnek, így egy el nem mentett is túlél egy újratöltést.
Inventory, adattáblák és párbeszédek#
A három szerkesztő, amely lehetővé teszi, hogy egy játéknak legyen tartalma anélkül, hogy az a tartalom kódban élne.
Az Inventory egy katalógust szerkeszt, és alkalmazza a jelenetre. Egy tárgy
műveleteket hordoz, és egy művelet egy trigger: use, equip, unequip,
plusz nyolc type egyike: message, heal, damage, grant, remove, event, toast,
scene. Magának a panelnek három elrendezése van (grid, list, compact), három
megjelenés-előbeállítása (graphite, midnight, warm), és négy vizuális foglalata,
background, slot, equipment, tooltip, amelyek egy másik modulban nyílnak meg egy
rendes újrarajzoláshoz.
A Data tables típusosak: egy oszlop text, number, bool vagy ref. CSV
megy be és jön ki. Minden szerkesztés tiszta függvényeken (pure functions) fut
át, ez az, ami azonossá teszi az exportált táblát azzal, amit a build olvas.
A Dialogue trees olyan node-ok, amelyeknek van egy beszélője és egy sora.
Egy node vagy folytatódik egy next-re, vagy elágazik choices-ba,
mindegyiknek saját szövege és saját célja van, az elágazás-kapcsoló az egyetlen
strukturális döntés a szerkesztőben.
Animáció és kamera#
A Cinematic Sequencer időtartammal és egy loop-jelzővel épít szekvenciákat, entitásonként egy sávval, és a lejátszófejnél rögzített kulcsképekkel, az Add Key az entitás aktuális értékét veszi, ahelyett hogy begépeltetné Önnel. Az alatta lévő graph editor az időt mutatja a progresszióval szemben, kerek fogantyúkkal az easinghez: a meredekség a sebesség. A shotoknak saját időtartamuk van, és egy Cinemascope-keretezés (1.422:1) elérhető a letterboxhoz.
A Camera Tools lefedi a FOV-ot, a pozíciót, a célpontot, a módot és a sebességet, plusz bookmarks-ot azokhoz a nézőpontokhoz, amelyekhez folyton visszatér, és kamerarétegeket.
Audio#
Az Audio Manager hangeseményeket, sávokat és egy keverőt tart csatornákkal és kategóriákkal. Forrásonkénti effektek egy low-pass, egy high-pass és egy reverb send; egy random mód több klip között választ, hogy egy ismételt hang ne hasson loopnak. A scrubbing lejátssza a hangot, miközben húzza a lejátszófejet.
A profiler#
Egy képkocka-bontás, nem egy képkockaszámláló: kamera-render, mesh-kiértékelés, részecskék, spriteok és shader-fordítás, mindegyik megjelölve real vagy estimated ként, így egy mérésből származó szám sosem keverhető össze egy modellből származóval. Mellette számlálók: meshek és aktív meshek, fények, kamerák, fizikai testek.
A felvétel explicit, és egy Issues listával zárul, nem egy értelmezendő gráffal: alacsony FPS, magas draw call-szám, magas háromszögszám, magas memória, az Ön által beállított célképkockasebességgel szemben.
Egy jelenet építése#
Entitások#

Egy új jelenet egy Main Camera-val, egy Directional Light-tal, egy Skybox-szal és egy Ground Plane-nel érkezik.

Amit hozzáadhat: Empty, Cube, Sphere, Cylinder, Plane, Light, Camera, Script, Mesh, plusz két család, amely előre bekötve érkezik:
- Characters: Third-Person, First-Person (FPS), Top-Down, Platformer, Basic.
- Props: Pickup (heal) és Hazard (damage).
A jelenetgráf keres, típus szerint szűr, és hozzáad, kettőz vagy töröl; az entitások egymásba ágyazhatók, és az átszülőzés egy húzás. Az elhelyezésnek van illesztése és egy scatter brush-e a talaj gyors benépesítéséhez.
Az inspector#
Transform (pozíció, forgatás, méret), egy Enabled kapcsoló, és az entitás komponensei: itt adhatók hozzá, konfigurálhatók és távolíthatók el, az Add Script-tal alul. Jelöljön ki több entitást, és az inspector átvált batch-szerkesztésre, így egy mezőváltoztatás mindegyikükre lecsapódik.
A konzol#
Nem csak egy log. Szint szerint szűr (all, logs, info, warning, error),
visszaköt egy üzenetet ahhoz az entitáshoz, amely létrehozta, és hordoz egy
expression promptot: gépeljen be egy kifejezést, az Enter lefuttatja az
élő jeleneten, a nyílbillentyűk végigjárják az előzményt.
Viselkedés adása#
Három út, és ezek egymás mellett léteznek.
Scripts#
JavaScript életciklus-hookokkal, és saját referenciája van:
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() {}
Az ütközések és a triggerek 2D-ben és 3D-ben is elsülnek, és mindkét oldal
megkapja a saját kontaktnormálját: az other.contact.normal a másik
entitástól mutat efelé. Ez az, ami lehetővé teszi egy szkriptnek, hogy
megkülönböztesse azt, hogy "ráléptem" attól, hogy "rám lépett": egy
platformer-taposás az other.contact.normal.y > 0.5-öt olvassa.
A szkriptszerkesztő#
F2, vagy Add Script egy entitáson. Egy Monaco szerkesztő fülekkel, több
szkript nyitva egyszerre, mindegyik a böngésző saját adatbázisában tárolva, nem
a projektfájlban, így egy el nem mentett buffer túlél egy újratöltést.
Öt dialektus, egy program. A nyelvváltó JavaScriptet, BASIC-et, Pythont, C#-ot és Rustot kínál. Amit csinál, nem az, aminek látszik: a JavaScript az igazság forrása, és a másik négy nézet, a tárolt JS-ből transzpilálva. A Pythonból Rustra váltás nem a Pythont fordítja, visszamegy ahhoz a JS-hez, amiből a Python generálódott, és azt fordítja. A többlépcsős fordítás az, ami tönkretesz egy programot, és a szerkesztő megtagadja, hogy ezt tegye.
Tizenhárom sablon öt kategóriában, mindegyik nehézség szerint jelölve:
| Kategória | Sablonok |
|---|---|
| Basics | üres szkript életciklus-csonkokkal |
| Movement | auto-rotate · WASD · tengelyalapú 3D mozgás · fizikai ugrás talajérzékeléssel · third-person kamerakövetés |
| Gameplay | trigger zóna · életerő-sáv sebzéssel és gyógyítással · időzített spawner |
| AI | járőrözés játékos-közelség riasztással |
| Advanced | Verse-stílusú async átvezető jelenet · strukturált konkurrencia · teljes API-felület teszt |
A karakter-kontroller előbeállítások és a játék-kezdő propok (pickup, hazard) ugyanabban a listában jelennek meg, ami a gyakorlati módja annak, hogy egy működő kontrollert egy importált karakterre ejtsen.
Futtatás és debugolás. Az F5 fut, az F9 egy breakpointot állít be. A
debugger megáll egy sornál, léptet egy képkockát, és élő értékeket jelent
watch-kifejezéseken keresztül. A Script Lab egy programot futtat teljesen
entitás nélkül, egy scratchpad az API-hoz, nem egy komponens egy objektumon.
A kód mellett: egy API reference, egy szimbólumlista a nyitott fájlhoz, és
egy snippet-könyvtár kedvencekkel és legutóbbiakkal. A Ctrl+S ment, a Ctrl+F
keres, a Ctrl+H cserél, és a szerkesztő nyolc témával érkezik.
Blueprintek és viselkedések#
Egy vizuális gráf, egy könyvtár kész viselkedésekkel, és egy állapotgép a viselkedésverem fölé rétegezve.
A gráf 267 node-ot hordoz huszonkét csoportban, Math, Scene, Entity, Animation, Flow Control, String, Events, Physics, UI, Array, Vector, Transform, Debug, Input, Utility, Game, Boolean, Camera, Tween, Variables, Audio, és a 2D és 3D családok. Három tulajdonság választja el őket, és ezekből áll a gráf: 17 event node indítja a végrehajtást, 117 pure node számít ki egy értéket mellékhatás és végrehajtási pin nélkül, és 9 latent node fejeződik be később, ezek azok, amelyek egy késleltetést vagy egy tweent kifejezhetővé tesznek saját állapotgép nélkül.
Négy eszköz: select V, pan H, comment C, reroute R, egy vászon fölött,
amely 0,1×-től 3×-ig nagyít, egy minitérképpel. A változók hat típusban
érkeznek, boolean, integer, float, string, vector3 és object. Minden node
leírása a tooltipjén van, ez az egyetlen hely, ahol egy ekkora könyvtár
elmagyarázhatja önmagát.
Az állapotgép#
Saját panel, és szándékosan nem az Animatoré: az Animator feltételei egy lapos enum kézzel írt UI-val esetenként, míg ezek strukturáltak, és a világról beszélnek.
Hét feltétel, és mindegyik egy kérdés a jelenetről: sees (egy megjelölt célpont hatótávolságon belül, opcionálisan egy szögön belül és rálátással), lost (nincs célpont N másodpercig), distance egy küszöbhöz képest, health, message received, timer (a jelenlegi állapotban töltött idő), és flag (egy érték a megosztott blackboardon). Két kombinátor, and és or, mindkettő fel van sorolva, még ha az or implicit módon már létezett is, két átmenet ugyanabba az állapotba egy or, de "lát engem ÉS még van életerőm"-nek egyáltalán nem volt formája.
⚠️ Az életerő a maximum törtrészeként hasonlítódik össze, sosem abszolút értékként. Egy "30 HP alatt" küszöb nem éli túl egy újraegyensúlyozási menetet; a "0,3 alatt" igen.
Egy állapotba lépéskor vagy elhagyásakor négy effekt: send egy üzenetet, set egy blackboard-kulcsot, play egy animációs klipet, vagy elsüt egy named effect-et. Egyik sem mozgat semmit, a mozgás a viselkedéseknél marad, és a gép dönti el, melyik viselkedés aktív.
Egy átmenet indulhat *-ból, ami bármely állapotot jelent. A validator a
problémák listáját adja vissza, ahelyett hogy az elsőnél eldobná a hibát,
így egy félig megírt gép még mindig kirajzolódik, és egyszerre látja, mi hibás.
A node-pozíciók az adat részei: egy gráf, amelynek elrendezése a jeleneten kívül
él, összekeveredve tér vissza a következő embernek, aki megnyitja.
BASIC#
A TXT viewport-mód egy klasszikus BASIC környezet csomagolt demóprogramokkal,
és a nyelvnek saját referenciája van. Ez itt egy valódi
nyelv, nem egy játék: több fájlból álló modulok (#INCLUDE), típusos numerikák
(előjeles és előjel nélküli 8/16/32/64-bit, float32 és float64), egymásba
ágyazott rekordok, objektummetódusok SELF-fel, referenciák (REF/BYREF),
strukturált TRY/CATCH/FINALLY, feltételes fordítás, korutinok, típusos
handle-ök, és WebGPU compute storage bufferekkel és nyers WGSL-lel.
Az OPTION EXPLICIT opcionálisan bekapcsolható; a klasszikus implicit változók
maradnak az alapértelmezettek, így az importált programok továbbra is futnak.
Játék és kiadás#
Play#
Play, Pause, Stop. Leállításkor egy banner jelenti, mit változtatott a
munkamenet, így egy play-módbeli szerkesztés sosem marad meg vagy vész el
csendben. A munkamenetek rögzíthetők és visszajátszhatók egy hibajelentésbe,
és scenario bookmarkok engedik, hogy egy playteszt egy pálya közepéről
induljon.
Build#
A Build vesz egy játéktípust (a jelenetből detektálva, vagy kézzel beállítva: sidescroller/platformer, first/third person, szövegalapú) és egy célt.
- Web: WebGPU WebGL fallbackkel, opcionális WebXR (VR/AR), minifikáció, egy FPS-számláló, és egy embed assets opció, amely egyetlen fájlt állít elő.
- Desktop és mobile: natív buildek. A jelenet adatként exportálódik
(
scene.glb+scene.json), és egy generált Bevy (Rust) projekten keresztül fordítódik; a szkriptek ott változatlanul futnak egy beágyazott QuickJS runtime-on.
A tömörítés tengelyenként állítható, algoritmus, textúrák, meshek, egy minőség-előbeállítással, amely összefogja őket. A buildek egy előzményben maradnak a méretükkel (eredeti a tömörítettel szemben), és később újra letölthetők.
Egy natív build csak azt tartalmazza, amit az exportáló tud exportálni. A glTF nem rögzít egyéni shadereket, thin instance-eket, a procedurális eget vagy utófeldolgozást, így egy futásidejű rendszer, amelyet nem portoltak át a Bevy oldalra, hiányozni fog egy desktop vagy mobile buildből, miközben a weben tökéletesnek tűnik. Ellenőrizzen egy natív buildet, mielőtt hagyatkozna rá.
Multiplayer#
A Multiplayer room panel összeköt egy jelenetet egy Colyseus játékszerverrel. Egy ingyenes, megosztott tesztszerver elérhető fiók és beállítás nélkül; egy projektnek saját szervere is adható. A szoba egy megosztási kóddal van azonosítva, amit megtarthat magának, vagy kioszthat.
Fájlok, amelyeket olvas és ír#
| Natív formátum | .engine |
| Importál | .glb, .gltf, .obj, .fbx, .png, .svg, .mp4, .webm, .mov, .scene |
| Exportál | egy web buildet, egy natív desktop/mobile buildet, scene.glb + scene.json-t |
Munka küldése más modulokba#
Elfogad mesheket a Sculptból, a Retopóból és a Pigmentből, teljes jeleneteket a Renderből, pixel artot, animációkat, PBR-anyagkészleteket a Matterből, 2D rigeket, videóprojekteket, képeket, vektorgrafikát, és Vectra objektumokat.
Termel 2D rigeket.
Egy Vectra képernyőmakett struktúraként érkezik, nem képként. Egy HUD-hierarchiává válik, amelyet az Engine el tud rendezni és meg tud szkriptelni: ez a különbség egy terv között, amit be lehet kötni, és egy arról készült képernyőkép között.
Billentyűparancsok#
A Cmd/Ctrl + K eléri az Engine saját parancsait a palettából, a globálisak
mellett. Az Engine-nek van egy dedikált, kereshető billentyűparancs-panelje is a
saját beállításaiban; sokkal többel rendelkezik, mint ami elférne a
billentyűparancsok oldalon.
Korlátok és gyakori buktatók#
- Egy üres viewport általában a böngésző hibája, nem a jelenetté. Az Engine-nek WebGL 2 kell; ellenőrizze, hogy a hardveres gyorsítás be van-e kapcsolva.
- A Systems és a Tools egy fiókon osztozik. Ha egy panel "eltűnt", valószínűleg a másikban van.
- A konzol az első hely, ahol érdemes megnézni, nem az utolsó: összeköti a hibákat azzal az entitással, amely okozta őket.
- Egy play módban hozzáadott komponens lehet, hogy nem éli túl a leállítást. Olvassa el a bannert, ami leálláskor megjelenik.
- A fizika eltér 2D és 3D között a megoldójában, még akkor is, ha a szkript-callbackek ugyanazok. Egy nyugalmi kontaktust 2D-ben egy 2 mm-es skinnel érzékel, mert a megoldó pontosan nullára hozza a behatolást, mielőtt az érzékelés lefutna.