Engine

Spillmotoren: scenegraf, komponenter, skripting, fysikk, en PBR-pipeline, verdenseditorer, og native builds for desktop og mobil.

På én linje#

En fullverdig spillmotor i nettleseren: bygg en scene, gi den atferd, trykk play, og eksporter den til web eller til en native desktop- og mobilbinær.

Den er den største modulen i aukimi, med god margin. Denne siden kartlegger den på samme måte som grensesnittet gjør, etter skuffen hvert panel bor i, i stedet for å liste funksjoner alfabetisk.

Oppsettet#

Engine, med scenegrafen, viewporten, inspektøren og konsollen

MenylinjeFile · Edit · View · Windows · Run · Plugins
Verktøylinjeprosjektnavnet, angre/gjøre om, viewport-modusbryteren (3D · 2.5D · 2D · TXT), scenevelgeren, de fire panelknappene, FX Master, HUD, oppløsningsboksen, transporten (play, pause, stop) og Build
Venstreen ikonrad, scene graph, list, audio, console, og panelet den åpner
Midtenviewporten, med sin egen gizmo-linje (translate, rotate, scale, world/local, grid, snapping, framing) og en kvalitetsvelger
Høyreinspektøren for den valgte entiteten
NederstConsole og Profiler, side om side
Statuslinjemodus, viewport-dimensjon, entitetsantall, rutenettstatus

De fire panelknappene#

Engine-verktøylinjen: scenenavn, undo, viewport-modusbryteren, de fire panelknappene og transporten

De oppfører seg ikke alle på samme måte, og forskjellen er verdt å kjenne til før du går og leter etter noe:

KnappOppførsel
Systemsåpner en skuff
Toolsåpner samme skuff, Systems og Tools lukker hverandre
Assetsslår av og på en fast dokk
Scriptsåpner et modalvindu

Systems og Tools deler én plass med vilje; de er plassert side om side slik at det er synlig at de gjør det.

Systems#

Motorens egne undersystemer: tingene en scene har, i stedet for tingene du lager med.

GruppePaneler
Pluginsplugin-nettleseren
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

Rendering#

FX Master-bryteren på verktøylinjen slår hele post-pipelinen av og på med ett klikk: den raskeste måten å se hva den koster deg. Enkeltvis: bloom, depth of field, SSR, SSAO, GTAO, SSGI, temporal AA, FXAA, motion blur, volumetric fog, contact shadows, fargegradering, film grain, chromatic aberration, vignette og tonemapping, pluss Nanite-stil geometri og Hi-Z occlusion.

Look Presets er hele konfigurasjoner av det ovenstående. Render Style endrer registeret, stilisert i stedet for fotografisk. Shader Lab er der du skriver dine egne. Mesh LOD og Post Process Volumes er de to som betaler for seg selv på en stor scene: level-of-detail per mesh, og etterbehandling som bare gjelder inne i et volum.

Rendreren er Babylon.js. Den starter på WebGL og bytter seg selv til WebGPU når nettleseren har det, og faller tilbake av seg selv hvis det mislykkes.

Gameplay-systemer#

Physics dekker både 3D-løseren (Havok) og 2D-løseren. AI & Navigation er navmeshet og agentene på det. Gameplay Zones er trigger-volumer med atferd festet til seg. Multiplayer room kobler scenen til en Colyseus-server (se under).

World-systemer#

Level Streaming laster inn og ut deler av en bane etter hvert som spilleren beveger seg. Baking forhåndsberegner belysning; Light Probes fanger indirekte lys og refleksjoner på punkter i rommet. Decals projiserer detaljer på overflater uten å legge til geometri.

Tools#

Tingene du lager med.

GruppePaneler
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

World-generatorene#

Terrain, water, sky og fire innholdsgeneratorer, trær, planter, steiner og kitbash-deler. De har et eget kapittel under.

Gameplay-forfatting#

Inventory, Data tables (Tools → Data) og Dialogue Trees er de tre editorene som lar et spill ha innhold uten at innholdet bor i kode i detalj under.

Animation#

Timeline for entitetsanimasjon, Cinematic Sequencer for opptak, og Camera Tools for innrammingen. Se Animasjon og kamera.

Verdenseditorene#

Sju paneler under Tools → World. De er den raske måten å fylle en scene på, og grunnen til at en bane ikke må starte med en modelleringsøkt.

Terrain#

En scene kan holde flere terreng; hvert av dem er en rad i Terrains-listen og opprettes i én av tre oppløsninger, 128² (rask), 256² (balansert) eller 512² (detaljert).

Panelet har ti moduser, og de deler én ting: masken malt i Masks begrenser hver av dem.

ModusHva den gjør
Sculptsytten pensler på høydefeltet
Paintopptil åtte teksturlag, fordelt på to splatmaps
Generatenoise, auto-texturering, og import av høydedata fra virkeligheten
Sketchtegn åser og daler, syntetiser et terreng som matcher
Masksbegrens hver av de andre modusene til en del av overflaten
Waterhavnivå, og valget mellom terreng-vann og et FFT-hav
Pathsen Bézier-vei baket inn i bakken
Vegetationpensel- eller regelbasert utstrøing
SDFet raymarchet terreng, rendret i stedet for mesh-et
Biomesjord, planter, trær og steiner i én passering

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-klikk setter kilden), Blur B, Ramp R, pluss de to vannverktøyene: River tegner et løp, Lake fyller på et punkt.

Penselen selv har dynamikk: pressure curve, lazy mouse, falloff, symmetry, pattern, og jitter på både størrelse og styrke. Stamp har seks former: crater, mountain peak, plateau, river valley, dome, noise hill. Erosjon kommer i to former: E-penselen er lokal, mens Adjustments kjører hydraulic, thermal og wind-erosjon over hele terrenget.

Paint. Åtte lag, fordi to RGBA-splatmaps holder fire kanaler hver. Materialbiblioteket er sortert etter kategori, grass, dirt, forest, rocks, roads and surfaces, cliffs, sand, snow, volcanic, wetland, fantasy, og dine egne, og hvert lag bærer UV scale, displacement, et detail map, og surface relief (bump strength og parallax depth). Break texture tiling (cell bombing) er innstillingen som hindrer en gjentatt bakketekstur i å lese som et rutenett.

Generate bygger fra noise, deretter tildeler Generate Textures materialer etter høyde og helling, med nord/sør-skyggevariasjon og sand- eller steinstrender der det er vann. Real World importerer offentlige NASA/USGS-høydedatafliser: velg et landemerke eller skriv inn koordinater, velg zoom, og panelet rapporterer høydeområdet det hentet tilbake.

Sketch er den andre veien inn. Tegn ås- og dalstrøk på et 2D-kart, velg opptil tre virkelige kildelandskap, og terrenget syntetiseres for å matche skissen, valgfritt blandet inn i det som allerede er der, auto-teksturert og erodert i samme passering.

Masks males med en pensel og redigeres deretter som en helhet: clear, invert, blur, grow, shrink. Smart masks utleder én fra selve terrenget, etter høyde, etter helling, etter lag eller etter forsenkning.

Paths. Klikk for å slippe kontrollpunkter, og en jevn kurve løper gjennom dem; dra de ravgule punktene for å flytte dem, de cyanfargede håndtakene for å bøye kurven. Bake Path flater ut bakken under den, maler teksturen og hever voller.

Vegetation har to halvdeler. Penselen plasserer og fjerner instanser for hånd; scatter rules plasserer dem etter betingelse, lagvekter, seed, min/maks skala, og høyde- og hellingsbåndet hver ressurs godtar. Gress og blomster toner ut forbi en konfigurerbar tegneavstand, og Export to Scene gjør instansene om til sceneobjekter.

Biomes er ett-klikks-versjonen av alt det ovenstående: velg et biom, kryss av kategoriene du vil ha (jord, trær, planter og gress, blomster, alger nær vann, steiner), sett en tetthet, og Apply Biome maler bakken og strør ut alt sammen, og rapporterer hvor mange instanser av hver den plasserte. Tre-age variety blander stiklinger gjennom eldgamle trær i stedet for å stemple det samme treet overalt, og ground blend (RVT) smelter hver steinbase inn i terrengfargen under den.

SDF er en annen rendrer, ikke et annet verktøy: terrenget raymarches fra et distansefelt, formet av octaves, lacunarity og persistence, tekstureres etter grass/rock/snow med en snøgrense og en hellingsterskel, og har sine egne myke skygger, ambient occlusion og tåke.

Store terreng har et LOD-system med skirt-geometri (som er det som lukker gapene mellom nivåene), jevne nivåoverganger, frustum culling og et statistikkoverlegg. Høydekart importeres og eksporteres som 16-bit PNG, 8-bit PNG eller RAW 16-bit; splatmaps som én RGBA PNG eller én fil per lag; og hele terrenget, eller bare innstillingene dets, som en forhåndsinnstilling.

Sky Studio#

Atmosfæren. Fire himmeltyper, solid, gradient, HDRI, og en physical atmosphere med Rayleigh- og Mie-spredning, Mie-absorpsjon, ozon, bakkealbedo, turbiditet, planetradius og atmosfæretykkelse.

Alt henger på time of day, som kan sykle av seg selv: solen etter elevation, azimuth og intensity, med sin egen shadow intensity; månen etter phase; stjerner med twinkle; og en aurora. Volumetric clouds har thickness, erosion, noise scale og curl distortion, og lys gjennom absorption, scatter, ambient og et powder-ledd; cirrus og Belt of Venus er separate. Aerial perspective er disen som fortykner seg med avstand og toner fjern geometri ut mot horisonten, det er innstillingen som får et landskap til å lese som stort.

Ti forhåndsinnstillinger å starte fra: clear day, dawn, sunset, dusk, night, overcast, stormy, desert, arctic og space.

Water#

To faner: Ocean (FFT) for åpent hav, Shore & lakes for alt annet.

⚠️ Vann opprettes i Terrain-editoren: river- og lake-verktøyene, eller Show Water, og finjusteres her. Å åpne dette panelet på en scene uten vann gir deg innstillinger uten noe å bruke dem på.

Shore water bærer farge, dekkevne, bølgestyrke og -hastighet, choppiness, foam width og Fresnel, med screen-space reflections og refraction blur. Under det er selve WGSL-shaderen: to normal scales med sine egne scroll-retninger og hastighet, foam threshold og softness, refraction strength og index of refraction, og lyset inne i vannet, absorption, turbidity, scattering og translucency.

Tree Generator#

To moduser, Tree og Trunk. Et tre er løvfellende eller eviggrønt, har en alder fra stikling til eldgammelt, og kan være levende, dødt, en gadd eller en falt stamme. Alt er seedet, så Randomize seed er den raskeste måten å få et annet tre med samme karakter på.

Formen er per grennivå: children, length, radius, taper, gnarliness, twist, sections, segments, angle og start height, pluss naturlig variasjon, phototropism og gravitropism: de to som får et tre til å lene seg mot lys og henge under sin egen vekt, og en global kraft med sin egen styrke. Basen har root flare (lobes og height) og buttress.

Blader er billboards, enkelt- eller dobbeltsidige, med count, size, angle, variance, clump, curl, droop, sheen og rounded normals. Bark kommer i seks stiler: ridged, aspen, pine, birch, smooth, palm, med relief, moss, en fuktig base, sun bleach, canopy ambient occlusion og en høstfarge. Fire årstider bytter hele utseendet på én gang.

Forest strør ut mange på én gang: count, spread radius, scale variance, og en aldersmiks (single, natural, young, old, even). Add age progression plasserer alle fem livsstadier på rad, som er den raskeste måten å vurdere dem side om side på. Et tre forlater som en sceneentitet eller som GLB, og enhver innstilling kan lagres som en forhåndsinnstilling.

Plant Generator#

Fem typer, flower, cluster, herb, fern, grass, som deler en stilk (count, height, thickness, curve, colour) og blader (count, size, width, angle). Ferns legger til leaflet pairs, leaflet sweep og frond arch; grass legger til blade count og arch.

En blomst er valgfri på hvilken som helst av dem: petals, petal rows, length, width, curl, tip sharpness, bloom, centre size, og tre farger, petal, petal tip og centre, med translucency og roughness for hvordan lys passerer gjennom bladet. Legg én til scenen, strø ut mange, eller eksporter GLB.

Rock Generator#

Tre typer, rock, stone, cliff, i tre stiler: realistic, toon, eller low poly med et omriss.

Form er noise over en kule: scale, strength, octaves, persistence, warp og et ridged-alternativ, pluss strata med sin egen frekvens og facet cuts med dybde og skarphet for kantete stein. Radius, detail, flatten, shape variance og en flat bunn avgjør silhuetten, og fire erosjons-forhåndsinnstillinger, fresh, weathered, natural, eroded, flytter alt sammen på én gang.

Overflaten har fargevariasjon, mineral veins, lav og mose, en detail-tekstur med tiling og styrke, triplanar blending og parallax relief. Den bruker et medfølgende Stone-materiale som standard; send et materiale fra Matter til Engine for å overstyre det.

Kitbash, samme bibliotek som Sculpt#

Kitbash deles med Sculpt: dette panelet og Sculpts Edit Forge leser ett bibliotek. Et stykke bygget der, plasseres her, og et stykke malt her, kan lagres tilbake til det.

Det scenen lagrer, er delen og dimensjonene dens, ikke vertexene, som er derfor en kitbashet bygning koster nesten ingenting i filen og kan oppdateres senere fra kilden sin.

Arm et stykke fra katalogen, og hvert venstreklikk plasserer det. Tre snapping-moduser avgjør hvor det havner: on terrain (stykker følger bakkehøyden under seg), on water (byggeplanet ligger i vannivået), og snap to sockets, sikt på et koblingspunkt på et plassert stykke, og det nye vender seg for å møte det. En kjede vokser fra sin frie ende, opptatte sockets faller ut av kandidatene, og hvert klikk er sitt eget angre-steg. Ctrl/Cmd forblir reservert for utvalg og Alt for rotasjon. Collections holder på kilden og versjonen sin, slik at en instans kan oppdateres når originalen endrer seg.

De andre editorene#

Verdenseditorene fyller en scene; disse gir den et grensesnitt, et kart, innholdstabellene sine og instrumentene for å sjekke hva den koster.

HUD-editoren#

Tools → Editors → UI. Seks faner, Templates, Elements, Layers, Preview, Style og Script, over en forhåndsvisning som bytter mellom tre enhetsstørrelser: desktop 960×540, tablet 768×432, mobile 375×667.

Elements kommer i tre grupper (Display, Data, Input) og kan nøstes: panel og flex holder barn, slik at Layers-fanen er et ekte tre i stedet for en flat liste. Historikken er femti steg dyp.

⚠️ Style-fanen er CSS-lignende, og forskjellen betyr noe. HUD-en tegnes på lerretet av Babylons GUI, og ekte CSS når den ikke. Reglene du skriver her, kartlegges til GUI-egenskaper; velgerne er #name for ett element, .type for en type (.text, .panel) og * for alt.

Script-fanen er den andre måten å bygge en på: ui.*-API-en, createText, createPanel, createProgress, createButton, med to måter å kjøre den på. Build Layout kjører den design-time og etterlater deg ekte elementer å dytte for hånd; Run Live kjører den i spillet.

To forbindelser utover: HUD-grafikk åpnes i Inkwell eller Vectra og lenkes tilbake i stedet for å kopieres, og et Vectra-dokument kan importeres som HUD-elementer. Minimap-elementet er sin egen greie, med range, grid, og markører for player, enemies, allies, items og objectives.

Tilemap-editoren#

Elleve verktøy, brush, eraser, fill, rectangle, select, eyedropper, stamp, autotile, prop, zone og path, på fire kartprojeksjoner: orthogonal, isometric, staggered isometric og hexagonal.

Autotiling følger med fire maler, og tallet i hvert navn er antallet tiles det forventer: Blob 47 (fullt hjørne og kant), Wang 16 (kantbasert), Simple 4 (NSEW), og RPG Maker A2 (48 tiles, kompatibel med kart laget der).

To lag ligger over selve tilesene. Zones maler gameplay-mening: buildable, water, forest, road, farm, residential, commercial, blocked, og props plasserer objekter etter kategori: trees, rocks, buildings, vegetation, water, paths. Kart lever i nettleserens egen database, så et ulagret ett overlever en omlasting.

Inventar, datatabeller og dialog#

De tre editorene som lar et spill ha innhold uten at innholdet bor i kode.

Inventory redigerer en katalog og bruker den på scenen. En gjenstand bærer actions, og en action er en trigger: use, equip, unequip, pluss én av åtte types: message, heal, damage, grant, remove, event, toast, scene. Panelet selv har tre layouts (grid, list, compact), tre utseende-forhåndsinnstillinger (graphite, midnight, warm), og fire visuelle slots, background, slot, equipment, tooltip, som åpnes i en annen modul for en ordentlig omtegning.

Data tables er typet: en kolonne er text, number, bool eller ref. CSV går inn og kommer ut. Hver redigering går gjennom rene funksjoner, som er det som holder tabellen eksporten skriver, identisk med tabellen bygget leser.

Dialogue trees er noder med en speaker og en line. En node fortsetter enten til én next, eller forgrener seg til choices, hver med sin egen tekst og sin egen destinasjon, forgreningsbryteren er den eneste strukturelle beslutningen i editoren.

Animasjon og kamera#

Cinematic Sequencer bygger sekvenser med en duration og et loop-flagg, ett spor per entitet, og keyframes fanget ved playheadet, Add Key tar entitetens gjeldende verdi i stedet for å be deg skrive den inn. Graph editor-en under viser tid mot fremdrift, med runde håndtak for easing: stigningen er hastigheten. Opptak har sine egne varigheter, og en Cinemascope-innramming (1,422:1) er tilgjengelig for letterboxen.

Camera Tools dekker FOV, position, target, mode og speed, pluss bookmarks for synsvinklene du fortsetter å komme tilbake til, og camera layers.

Audio#

Audio Manager holder audio events, tracks og en mixer med channels og categories. Per-kilde-effekter er en low-pass, en high-pass og en reverb send; en random-modus velger mellom flere klipp slik at en gjentatt lyd slutter å lese som en loop. Scrubbing spiller av lyd mens du drar playheadet.

Profileren#

En bildeoppdeling, ikke en bildeteller: camera render, mesh evaluation, particles, sprites og shader compilation, hver merket real eller estimated slik at et tall som kom fra en måling, aldri forveksles med ett som kom fra en modell. Tellere ved siden av den: meshes og active meshes, lights, cameras, physics bodies.

Opptak er eksplisitt, og det ender på en Issues-liste i stedet for en graf å tolke: low FPS, high draw calls, high triangles, high memory, mot den mål-bildefrekvensen du setter.

Bygge en scene#

Entities#

Engine-viewporten, med gizmoen på den valgte entiteten

En ny scene ankommer med et Main Camera, et Directional Light, en Skybox og et Ground Plane.

Scenegrafen, med de fire entitetene en ny scene starter med

Det du kan legge til: Empty, Cube, Sphere, Cylinder, Plane, Light, Camera, Script, Mesh, pluss to familier som ankommer ferdigkoblet:

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

Scene graph søker, filtrerer etter type, og legger til, dupliserer eller sletter; entiteter kan nøstes, og å bytte forelder er en dra-handling. Plassering har snapping og en scatter brush for å befolke bakken raskt.

Inspektøren#

Transform (position, rotation, scale), en Enabled-bryter, og entitetens components: lagt til, konfigurert og fjernet her, med Add Script nederst. Velg flere entiteter, og inspektøren bytter til batch-redigering, slik at én feltendring havner på alle sammen.

Konsollen#

Ikke bare en logg. Den filtrerer etter nivå (all, logs, info, warning, error), lenker en melding tilbake til entiteten som produserte den, og bærer en expression prompt: skriv inn et uttrykk, Enter kjører det mot den levende scenen, piltastene går gjennom historikken.

Gi den atferd#

Tre veier, og de eksisterer side om side.

Scripts#

JavaScript med lifecycle hooks, og en egen referanse:

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() {}

Collisions and triggers fire in both 2D and 3D, og hver side mottar sin egen kontaktnormal: other.contact.normal peker fra den andre entiteten mot denne. Det er det som lar et skript skille "jeg landet på det" fra "det landet på meg": et platformer-stomp leser other.contact.normal.y > 0.5.

Skripteditoren#

F2, eller Add Script på en entitet. En Monaco-editor med faner, flere skript åpne samtidig, hvert holdt i nettleserens egen database i stedet for i prosjektfilen, slik at en ulagret buffer overlever en omlasting.

Fem dialekter, ett program. Språkbryteren tilbyr JavaScript, BASIC, Python, C# og Rust. Det den gjør, er ikke det den ser ut som: JavaScript er sannhetskilden, og de andre fire er visninger transpilert fra den lagrede JS-en. Å bytte fra Python til Rust oversetter ikke Python, det går tilbake til JS-en Python ble generert fra, og oversetter den. Oversettelse i flere hopp er det som ødelegger et program, og editoren nekter å gjøre det.

Tretten maler i fem kategorier, hver merket med vanskelighetsgrad:

KategoriMaler
Basicstomt skript med lifecycle-stubber
Movementauto-rotate · WASD · axis-based 3D movement · physics jump with ground detection · third-person camera follow
Gameplaytrigger zone · health bar with damage and heal · timed spawner
AIpatrol with player proximity alert
AdvancedVerse-style async cutscene · structured concurrency · full API surface test

Character-controller-forhåndsinnstillingene og game-starter-propene (pickup, hazard) dukker opp i samme liste, som er den praktiske måten å slippe en fungerende controller på en importert karakter.

Kjøring og feilsøking. F5 kjører, F9 setter et breakpoint. Debuggeren pauser ved en linje, stepper ett enkelt bilde, og rapporterer levende verdier gjennom watch expressions. Script Lab kjører et program uten noen entitet festet i det hele tatt, en scratchpad for API-en i stedet for en komponent på et objekt.

Ved siden av koden: en API reference, en symbolliste for den åpne filen, og et snippet-bibliotek med favoritter og nylige. Ctrl+S lagrer, Ctrl+F finner, Ctrl+H erstatter, og editoren følger med åtte temaer.

Blueprints og atferder#

En visuell graf, et bibliotek med ferdiglagde atferder, og en tilstandsmaskin lagt over atferdsstabelen.

Grafen bærer 267 noder i tjueto grupper, Math, Scene, Entity, Animation, Flow Control, String, Events, Physics, UI, Array, Vector, Transform, Debug, Input, Utility, Game, Boolean, Camera, Tween, Variables, Audio og 2D- og 3D-familiene. Tre egenskaper skiller dem, og det er det grafen er laget av: 17 event-noder starter kjøring, 117 pure-noder beregner en verdi uten sideeffekt og uten execution pin, og 9 latent-noder blir ferdig senere, de er de som gjør en forsinkelse eller en tween uttrykkbar uten en egen tilstandsmaskin.

Fire verktøy: select V, pan H, comment C, reroute R, over et lerret som zoomer fra 0,1× til 3× med en minimap. Variabler kommer i seks typer, boolean, integer, float, string, vector3 og object. Beskrivelsen til hver node er på tooltipen, som er det eneste stedet et bibliotek av den størrelsen kan forklare seg selv.

Tilstandsmaskinen#

Sitt eget panel, og bevisst ikke Animator sitt: Animators betingelser er en flat enum med håndskrevet UI per tilfelle, mens disse er strukturerte og snakker om verden.

Sju betingelser, og hver av dem er et spørsmål om scenen: sees (et tagget mål innen rekkevidde, valgfritt innenfor en vinkel og i synslinje), lost (intet mål på N sekunder), distance mot en terskel, health, message received, timer (tid brukt i den gjeldende tilstanden), og flag (en verdi på den delte blackboarden). To kombinatorer, and og or, er begge listet selv om or allerede fantes implisitt, to overganger til samme tilstand er en or, men «den ser meg OG jeg har fortsatt helse» hadde ingen form i det hele tatt.

⚠️ Health sammenlignes som en brøkdel av maksimum, aldri som en absoluttverdi. En terskel på «under 30 HP» overlever ikke en rebalanseringspassering; «under 0,3» gjør.

Ved inngang til eller utgang fra en tilstand, fire effekter: send en melding, set en blackboard-nøkkel, play et animasjonsklipp, eller avfyr en named effect. Ingen av dem flytter noe, bevegelse forblir hos atferdene, og maskinen bestemmer hvilken atferd som er aktiv.

En overgang kan starte fra *, som betyr en hvilken som helst tilstand. Validatoren returnerer listen over problemer i stedet for å kaste på det første, slik at en halvskrevet maskin fortsatt tegnes, og du ser alt som er galt på én gang. Nodeposisjoner er en del av dataene: en graf hvis layout lever utenfor scenen, kommer tilbake stokket om for neste person som åpner den.

BASIC#

TXT-viewport-modusen er et klassisk BASIC-miljø med medfølgende demoprogrammer, og språket har en egen referanse. Det er et ekte språk her, ikke et leketøy: flerfils-moduler (#INCLUDE), typede numeriske typer (signerte og usignerte 8/16/32/64-bit, float32 og float64), nøstede records, objektmetoder med SELF, referanser (REF/BYREF), strukturert TRY/CATCH/FINALLY, betinget kompilering, coroutines, typede handles, og WebGPU compute med storage buffers og rå WGSL.

OPTION EXPLICIT er opt-in; klassiske implisitte variabler forblir standard, slik at importerte programmer fortsatt kjører.

Spille og shippe#

Play#

Play, Pause, Stop. Ved stopp rapporterer et banner hva økten endret, slik at en redigering gjort i play-modus aldri beholdes eller går tapt stille. Økter kan tas opp og spilles av igjen inn i en feilrapport, og scenario bookmarks lar en playtest starte fra midten av en bane.

Build#

Build tar en spilltype (oppdaget fra scenen, eller satt for hånd: sidescroller/platformer, first/third person, tekstbasert) og et mål.

  • Web: WebGPU med en WebGL-reserveløsning, valgfri WebXR (VR/AR), minifisering, en FPS-teller, og et embed assets-alternativ som produserer én enkelt fil.
  • Desktop og mobile: native builds. Scenen eksporteres som data (scene.glb + scene.json) og kompileres gjennom et generert Bevy (Rust)-prosjekt; skript kjører uendret der på en innebygd QuickJS-runtime.

Kompresjon kan konfigureres per akse, algoritme, teksturer, mesh, med en kvalitets-forhåndsinnstilling som binder dem sammen. Builds holdes i en historikk med størrelsene sine (original mot komprimert) og kan lastes ned igjen senere.

Et native build inneholder bare det eksportøren vet hvordan den skal eksportere. glTF fanger ikke egendefinerte shadere, thin instances, den prosedyrale himmelen eller etterbehandling, så et kjøretidssystem som ikke er portet til Bevy-siden, vil mangle i et desktop- eller mobil-build mens det ser perfekt ut på web. Sjekk et native build før du stoler på det.

Multiplayer#

Multiplayer room-panelet kobler en scene til en Colyseus-spillserver. En gratis delt testserver er tilgjengelig uten konto og uten konfigurasjon; et prosjekt kan også få sin egen server. Rommet nøkles av en delekode du kan beholde for deg selv eller dele ut.

Filer den leser og skriver#

Native format.engine
Imports.glb, .gltf, .obj, .fbx, .png, .svg, .mp4, .webm, .mov, .scene
Exportset web-build, et native desktop-/mobil-build, scene.glb + scene.json

Sende arbeid til andre moduler#

Godtar mesh fra Sculpt, Retopo og Pigment, hele scener fra Render, pikselkunst, animasjoner, PBR-materialsett fra Matter, 2D-rigger, videoprosjekter, bilder, vektorgrafikk, og Vectra-objekter.

Produserer 2D-rigger.

En Vectra-skjermskisse ankommer som struktur, ikke som et bilde. Den blir til et HUD-hierarki Engine kan legge ut og skripte: forskjellen mellom et design du kan koble sammen og et skjermbilde av ett.

Shortcuts#

Cmd/Ctrl + K når Engines egne kommandoer fra paletten, ved siden av de globale. Engine har også et dedikert, søkbart tastatursnarveipanel i sine egne innstillinger; det har langt mer enn det som ville fått plass på snarveisiden.

Begrensninger og vanlige fallgruver#

  • En blank viewport er som regel nettleseren, ikke scenen. Engine trenger WebGL 2; sjekk at maskinvareakselerasjon er på.
  • Systems og Tools deler én skuff. Hvis et panel «forsvant», er det sannsynligvis i den andre.
  • Konsollen er det første stedet å se, ikke det siste: den lenker feil til entiteten som utløste dem.
  • En komponent lagt til i play-modus overlever kanskje ikke stopp. Les banneret som dukker opp når du stopper.
  • Physics er forskjellig mellom 2D og 3D i løseren sin, selv om skript-callbackene er de samme. En hvilende kontakt i 2D oppdages med en 2 mm skin, fordi løseren bringer penetrasjon til nøyaktig null før deteksjon kjører.