Engine

Spilmotoren: scene graph, komponenter, scripting, fysik, en PBR-pipeline, verdenseditorer og native builds til desktop og mobil.

I én sætning#

En fuld spilmotor i browseren: byg en scene, giv den adfærd, tryk på play, og eksportér den til web eller til en native desktop- og mobilbinær.

Det er det største studie i aukimi med bred margin. Denne side kortlægger det på samme måde som grænsefladen gør, efter den skuffe hvert panel bor i, i stedet for at opremse funktioner alfabetisk.

Layoutet#

Engine, med scene graph'en, viewporten, inspektøren og konsollen

MenulinjeFile · Edit · View · Windows · Run · Plugins
Værktøjslinjeprojektnavn, fortryd/gentag, viewport-tilstandsskifteren (3D · 2.5D · 2D · TXT), scenevælgeren, de fire panelknapper, FX Master, HUD, opløsningsfeltet, transport (play, pause, stop) og Build
Venstreen ikonrække, scene graph, liste, audio, konsol, og det panel den åbner
Midtenviewporten, med sin egen gizmo-bjælke (flyt, rotér, skalér, world/local, gitter, snap, indramning) og en kvalitetsvælger
Højreinspektøren for den valgte entitet
NederstConsole og Profiler, side om side
Statuslinjetilstand, viewport-dimension, entitetsantal, gittertilstand

De fire panelknapper#

Engine-værktøjslinjen: scenenavn, fortryd, viewport-tilstandsskifteren, de fire panelknapper og transporten

De opfører sig ikke alle på samme måde, og forskellen er værd at kende, før du går på jagt efter noget:

KnapAdfærd
Systemsåbner en skuffe
Toolsåbner den samme skuffe, Systems og Tools lukker hinanden
Assetsslår et vedvarende dock til og fra
Scriptsåbner en modal

Systems og Tools deler én plads med vilje; de er placeret side om side, så det er synligt, at de gør.

Systems#

Motorens egne undersystemer: de ting, en scene har, frem for de ting, du bygger med.

GruppePaneler
Pluginsplugin-browseren
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#

Kontakten FX Master på værktøjslinjen slår hele post-pipelinen til og fra med ét klik: den hurtigste måde at se, hvad den koster dig. Individuelt: bloom, depth of field, SSR, SSAO, GTAO, SSGI, temporal AA, FXAA, motion blur, volumetrisk tåge, contact shadows, farvegradering, filmkorn, kromatisk aberration, vignettering og tonemapping, plus Nanite-lignende geometri og Hi-Z occlusion.

Look Presets er hele konfigurationer af ovenstående. Render Style ændrer registeret, stiliseret frem for fotografisk. Shader Lab er, hvor du skriver dine egne. Mesh LOD og Post Process Volumes er de to, der betaler sig selv tilbage på en stor scene: level-of-detail pr. mesh, og efterbehandling der kun gælder inde i et volume.

Rendereren er Babylon.js. Den starter på WebGL og skifter selv til WebGPU, når browseren har det, og falder tilbage på egen hånd, hvis det mislykkes.

Gameplay-systemer#

Physics dækker både 3D-løseren (Havok) og 2D-løseren. AI & Navigation er navmeshet og agenterne på det. Gameplay Zones er trigger-volumer med adfærd knyttet til sig. Multiplayer room forbinder scenen til en Colyseus-server (se nedenfor).

World-systemer#

Level Streaming indlæser og aflæser dele af en bane, mens spilleren bevæger sig. Baking forudberegner belysning; Light Probes fanger indirekte lys og refleksioner i punkter i rummet. Decals projicerer detaljer på overflader uden at tilføje geometri.

Tools#

De ting, du bygger 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-generatorer#

Terrain, vand, himmel og fire indholdsgeneratorer: træer, planter, sten og kitbash-dele. De har deres eget kapitel nedenfor.

Gameplay-indhold#

Inventory, Data tables (Tools → Data) og Dialogue Trees er de tre editorer, der lader et spil have indhold, uden at det indhold bor i kode, i detaljer nedenfor.

Animation#

Timeline til entitetsanimation, Cinematic Sequencer til shots, og Camera Tools til indramningen. Se Animation og kamera.

World-editorerne#

Syv paneler under Tools → World. De er den hurtige måde at fylde en scene på, og grunden til, at en bane ikke behøver at starte med en modelleringssession.

Terrain#

En scene kan rumme flere terræner; hvert er en række i listen Terrains og oprettes i én af tre opløsninger, 128² (hurtig), 256² (afbalanceret) eller 512² (detaljeret).

Panelet har ti tilstande, og de har én ting til fælles: masken malet i Masks begrænser dem alle.

TilstandHvad den gør
Sculptsytten pensler på højdefeltet
Paintop til otte teksturlag, fordelt på to splatmaps
Generatestøj, automatisk teksturering, og import af virkelige højdedata
Sketchtegn rygge og dale, syntetisér et terræn, der matcher
Masksbegræns enhver anden tilstand til en del af overfladen
Waterhavniveau, og valget mellem terrænvand og et FFT-hav
Pathsen Bézier-vej bagt ind i jorden
Vegetationpensel- eller regelbaseret spredning
SDFet raymarchet terræn, rendret frem for meshet
Biomesjord, planter, træer og sten i ét pass

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-klik sætter kilden), Blur B, Ramp R, plus de to vandværktøjer, River tegner et forløb, Lake fylder ved et punkt.

Selve penslen har dynamik: trykkurve, lazy mouse, falloff, symmetri, mønster, og jitter på både størrelse og styrke. Stamp bærer seks former, krater, bjergtop, plateau, flodudal, kuppel, støjbakke. Erosion findes i to former: E-penslen er lokal, mens Adjustments kører hydraulisk, termisk og vind-erosion over hele terrænet.

Paint. Otte lag, fordi to RGBA-splatmaps rummer fire kanaler hver. Materialebiblioteket er sorteret efter kategori, græs, jord, skov, sten, veje og overflader, klipper, sand, sne, vulkansk, vådområde, fantasy, og dine egne, og hvert lag bærer UV-skala, displacement, et detaljekort, og overfladerelief (bump-styrke og parallax-dybde). Break texture tiling (cell bombing) er indstillingen, der forhindrer en gentaget jordtekstur i at læses som et gitter.

Generate bygger ud fra støj, og derefter tildeler Generate Textures materialer efter højde og hældning, med nord/syd-skyggevariation og sand- eller stenkyster, hvor der er vand. Real World importerer offentlige NASA/USGS-højdedatafliser: vælg et vartegn eller indtast koordinater, vælg zoomniveauet, og panelet rapporterer det højdeinterval, det hentede.

Sketch er den anden vej ind. Tegn ryg- og dalstrøg på et 2D-kort, vælg op til tre virkelige kildelandskaber, og terrænet syntetiseres til at matche skitsen, valgfrit blandet ind i det, der allerede er der, autotektureret og eroderet i samme pass.

Masks males med en pensel og redigeres derefter som en helhed: clear, invert, blur, grow, shrink. Smart masks udleder en maske fra selve terrænet, efter højde, efter hældning, efter lag eller efter fordybning.

Paths. Klik for at sætte kontrolpunkter, og en jævn kurve løber igennem dem; træk de ravgule punkter for at flytte dem, de cyanfarvede håndtag for at bøje kurven. Bake Path udjævner jorden under den, maler teksturen og hæver skråningerne.

Vegetation har to halvdele. Penslen placerer og fjerner instanser i hånden; scatter rules placerer dem efter betingelse, lagvægte, seed, min/maks-skala, og det højde- og hældningsbånd hvert asset accepterer. Græs og blomster toner ud efter en konfigurerbar tegneafstand, og Export to Scene gør instanserne til sceneobjekter.

Biomes er ét-klik-versionen af alt ovenstående: vælg et biom, kryds af i de kategorier, du vil have (jord, træer, planter og græs, blomster, alger nær vand, sten), sæt en tæthed, og Apply Biome maler jorden og spreder alt, mens den rapporterer, hvor mange instanser af hver den placerede. Træers age variety blander stiklinge til ældgamle i stedet for at stemple det samme træ overalt, og ground blend (RVT) smelter hver stenbase sammen med terrænfarven under den.

SDF er en anden renderer, ikke et andet værktøj: terrænet raymarches fra et distancefelt, formet af octaves, lacunarity og persistence, tektureret af grass/rock/snow med en snegrænse og en hældningstærskel, og sine egne bløde skygger, ambient occlusion og tåge.

Store terræner har et LOD-system med skirt-geometri (som er det, der lukker hullerne mellem niveauer), jævne niveauovergange, frustum culling og et statistik-overlay. Højdekort importeres og eksporteres som 16-bit PNG, 8-bit PNG eller RAW 16-bit; splatmaps som én RGBA PNG eller én fil pr. lag; og hele terrænet, eller bare dets indstillinger, som en forudindstilling.

Sky Studio#

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

Alt hænger på time of day, som kan cykle af sig selv: solen efter elevation, azimut og intensitet, med sin egen skyggeintensitet; månen efter fase; stjerner med twinkle; og en aurora. Volumetric clouds har tykkelse, erosion, støjskala og curl-forvrængning, og lys gennem absorption, spredning, ambient og et powder-led; cirrus og Belt of Venus er separate. Aerial perspective er disen, der tykner med afstand og toner fjern geometri ud mod horisonten, det er indstillingen, der får et landskab til at læses som stort.

Ti forudindstillinger at starte fra: clear day, dawn, sunset, dusk, night, overcast, stormy, desert, arctic og space.

Water#

To faner: Ocean (FFT) til åbent hav, Shore & lakes til alt andet.

⚠️ Vand oprettes i Terrain-editoren: river- og lake-værktøjerne, eller Show Water, og justeres her. At åbne dette panel på en scene uden vand giver dig indstillinger uden noget at anvende dem på.

Shore-vand bærer farve, opacitet, bølgestyrke og -hastighed, choppiness, skumbredde og Fresnel, med screen-space-refleksioner og refraktions-blur. Under det er selve WGSL-shaderen: to normalskalaer med deres egne scroll-retninger og -hastigheder, skumtærskel og blødhed, refraktionsstyrke og brydningsindeks, og lyset inde i vandet, absorption, turbiditet, spredning og translucens.

Tree Generator#

To tilstande, Tree og Trunk. Et træ er løvfældende eller stedsegrønt, har en alder fra stikling til ældgammelt, og kan være levende, dødt, en gold stub eller en væltet stamme. Alt er seedet, så Randomize seed er den hurtigste måde at få et andet træ med samme karakter.

Formen er pr. grenniveau: children, length, radius, taper, gnarliness, twist, sections, segments, angle og start height, plus naturlig variation, phototropism og gravitropism: de to der får et træ til at hælde mod lys og hænge under sin egen vægt, og en global kraft med sin egen styrke. Basen har root flare (lobes og height) og buttress.

Blade er billboards, enkelt- eller dobbeltsidede, med count, size, angle, variance, clump, curl, droop, sheen og afrundede normaler. Bark findes i seks stilarter, ridged, aspen, pine, birch, smooth, palm, med relief, mos, en fugtig base, solblegning, canopy ambient occlusion og et efterårsskifte. Fire årstider skifter hele udseendet på én gang.

Forest spreder mange på én gang: count, spread radius, scale variance, og en aldersblanding (single, natural, young, old, even). Add age progression placerer alle fem livsstadier på række, hvilket er den hurtigste måde at bedømme dem side om side. Et træ forlader som en sceneenhed eller som GLB, og enhver indstilling kan gemmes som en forudindstilling.

Plant Generator#

Fem slags, flower, cluster, herb, fern, grass, der deler en stængel (count, height, thickness, curve, colour) og blade (count, size, width, angle). Bregner tilføjer leaflet pairs, leaflet sweep og frond arch; græs tilføjer blade count og arch.

En blomst er valgfri på enhver af dem: petals, petal rows, length, width, curl, tip sharpness, bloom, centre size, og tre farver, petal, petal tip og centre, med translucens og ruhed for, hvordan lyset passerer gennem bladet. Tilføj én til scenen, spred mange, eller eksportér GLB.

Rock Generator#

Tre slags, rock, stone, cliff, i tre stilarter: realistic, toon, eller low poly med et omrids.

Formen er støj over en kugle: scale, strength, octaves, persistence, warp og en ridged-mulighed, plus strata med sin egen frekvens og facet cuts med dybde og skarphed til kantet sten. Radius, detail, flatten, shape variance og en flad bund afgør silhuetten, og fire erosionsforudindstillinger, fresh, weathered, natural, eroded, flytter det hele på én gang.

Overfladen har farvevariation, mineralårer, lav og mos, en detaljetekstur med tiling og styrke, triplanar blending og parallax-relief. Den bruger som standard et medfølgende Stone-materiale; send et materiale fra Matter til Engine for at tilsidesætte det.

Kitbash, samme bibliotek som Sculpt#

Kitbash er delt med Sculpt: dette panel og Sculpts Edit Forge læser ét bibliotek. Et stykke bygget der bliver placeret her, og et stykke malet her kan gemmes tilbage til det.

Det, scenen gemmer, er delen og dens dimensioner, ikke dens vertices, hvilket er grunden til, at en kitbashet bygning næsten intet koster i filen, og kan opdateres senere fra sin kilde.

Væb et stykke fra kataloget, og hvert venstreklik placerer det. Tre snap-tilstande afgør, hvor det lander: on terrain (stykker følger jordhøjden under dem), on water (byggeplanen ligger ved vandniveauet), og snap to sockets, sigt på et forbindelsespunkt på et placeret stykke, og det nye drejer for at møde det. En kæde vokser fra sin frie ende, optagede sockets falder ud af kandidaterne, og hvert klik er sit eget fortryd-trin. Ctrl/Cmd forbliver reserveret til markering og Alt til rotation. Collections beholder deres kilde og version, så en instans kan opdateres, når originalen ændres.

De andre editorer#

World-editorerne fylder en scene; disse giver den en grænseflade, et kort, dens indholdstabeller og instrumenterne til at tjekke, hvad den koster.

HUD-editoren#

Tools → Editors → UI. Seks faner, Templates, Elements, Layers, Preview, Style og Script: over en forhåndsvisning, der skifter mellem tre enhedsstørrelser: desktop 960×540, tablet 768×432, mobil 375×667.

Elements kommer i tre grupper (Display, Data, Input) og kan indlejres: panel og flex holder børn, så fanen Layers er et rigtigt træ frem for en flad liste. Historikken er halvtreds trin dyb.

⚠️ Fanen Style er CSS-agtig, og forskellen betyder noget. HUD'en tegnes på lærredet af Babylons GUI, og rigtig CSS når den ikke. Reglerne, du skriver her, mapper til GUI-egenskaber; selektorerne er #name for ét element, .type for en slags (.text, .panel) og * for alt.

Fanen Script er den anden måde at bygge en på: ui.*-API'et, createText, createPanel, createProgress, createButton, med to måder at køre det på. Build Layout eksekverer det design-time og efterlader dig rigtige elementer at justere i hånden; Run Live kører det i spillet.

To forbindelser udad: HUD-grafik åbner i Inkwell eller Vectra og kobles tilbage frem for at blive kopieret, og et Vectra-dokument kan importeres som HUD-elementer. Minimap-elementet er sin egen ting, med range, grid, og markører for player, enemies, allies, items og objectives.

Tilemap-editoren#

Elleve værktøjer, brush, eraser, fill, rectangle, select, eyedropper, stamp, autotile, prop, zone og path, på fire kortprojektioner: orthogonal, isometric, staggered isometric og hexagonal.

Autotiling leveres med fire skabeloner, og tallet i hvert navn er antallet af fliser, det forventer: Blob 47 (fuldt hjørne og kant), Wang 16 (kantbaseret), Simple 4 (NSEW), og RPG Maker A2 (48 fliser, kompatibel med kort lavet der).

To lag ligger over selve fliserne. Zones maler gameplay-betydning, buildable, water, forest, road, farm, residential, commercial, blocked, og props placerer objekter efter kategori: trees, rocks, buildings, vegetation, water, paths. Kort lever i browserens egen database, så et ugemt et overlever en genindlæsning.

Inventory, data tables og dialog#

De tre editorer, der lader et spil have indhold, uden at det indhold bor i kode.

Inventory redigerer et katalog og anvender det på scenen. Et item bærer actions, og en action er en trigger: use, equip, unequip, plus én af otte typer: message, heal, damage, grant, remove, event, toast, scene. Panelet selv har tre layouts (grid, list, compact), tre udseendeforudindstillinger (graphite, midnight, warm), og fire visuelle slots, background, slot, equipment, tooltip, der åbner i et andet modul for en ordentlig gentegning.

Data tables er typede: en kolonne er text, number, bool eller ref. CSV går ind og kommer ud. Hver redigering kører gennem rene funktioner, hvilket er det, der holder tabellen, eksporten skriver, identisk med tabellen, buildet læser.

Dialogue trees er noder med en speaker og en line. En node enten fortsætter til én next, eller forgrener sig i choices, hver med sin egen tekst og sin egen destination, branch-kontakten er den eneste strukturelle beslutning i editoren.

Animation og kamera#

Cinematic Sequencer bygger sekvenser med en varighed og et loop-flag, ét spor pr. entitet, og keyframes fanget ved playhead'et, Add Key tager entitetens aktuelle værdi i stedet for at bede dig skrive den. Grafeditoren nedenunder viser tid mod fremskridt, med runde håndtag til easing: hældningen er hastigheden. Shots har deres egne varigheder, og en Cinemascope-indramning (1,422:1) er tilgængelig til letterbox.

Camera Tools dækker FOV, position, target, mode og speed, plus bookmarks til de synsvinkler, du bliver ved med at vende tilbage til, og kameralag.

Audio#

Audio Manager rummer audio events, tracks og en mixer med channels og categories. Effekter pr. kilde er en low-pass, en high-pass og en reverb send; en random-tilstand vælger mellem flere clips, så en gentaget lyd holder op med at læses som en loop. Scrubbing afspiller lyd, mens du trækker playhead'et.

Profileren#

En frame-opdeling, ikke en frame-tæller: camera render, mesh evaluation, particles, sprites og shader compilation, hver markeret real eller estimated, så et tal, der kom fra en måling, aldrig forveksles med ét, der kom fra en model. Tællere ved siden af det: meshes og active meshes, lights, cameras, physics bodies.

Optagelse er eksplicit, og den ender med en Issues-liste frem for en graf at fortolke: low FPS, high draw calls, high triangles, high memory, målt mod den target frame rate, du har sat.

At bygge en scene#

Entiteter#

Engine-viewporten, med gizmoen på den valgte entitet

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

Scene graph'en, med de fire entiteter en ny scene starter med

Hvad du kan tilføje: Empty, Cube, Sphere, Cylinder, Plane, Light, Camera, Script, Mesh, plus to familier, der ankommer forhåndskoblede:

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

Scene graph'en søger, filtrerer efter type, og tilføjer, duplikerer eller sletter; entiteter kan indlejres, og omforældring er et træk. Placering har snap og en scatter brush til hurtigt at befolke jorden.

Inspektøren#

Transform (position, rotation, scale), en Enabled-kontakt, og entitetens components: tilføjet, konfigureret og fjernet her, med Add Script i bunden. Markér flere entiteter, og inspektøren skifter til batch-redigering, så én feltændring lander på dem alle.

Konsollen#

Ikke bare en log. Den filtrerer efter niveau (all, logs, info, warning, error), kobler en besked tilbage til den entitet, der producerede den, og bærer en expression prompt: skriv et udtryk, Enter kører det mod den levende scene, piletasterne bladrer gennem historikken.

At give den adfærd#

Tre veje, og de eksisterer side om side.

Scripts#

JavaScript med lifecycle hooks, og en reference for sig selv:

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

Kollisioner og triggere affyres i både 2D og 3D, og hver side modtager sin egen kontaktnormal: other.contact.normal peger fra den anden entitet mod denne. Det er det, der lader et script skelne "jeg landede på den" fra "den landede på mig": et platformer-stomp læser other.contact.normal.y > 0.5.

Script-editoren#

F2, eller Add Script på en entitet. En Monaco-editor med faner, flere scripts åbne på samme tid, hver gemt i browserens egen database frem for i projektfilen, så en ugemt buffer overlever en genindlæsning.

Fem dialekter, ét program. Sprogskifteren tilbyder JavaScript, BASIC, Python, C# og Rust. Det, den gør, er ikke det, den ligner: JavaScript er sandhedskilden, og de andre fire er visninger transpilet fra den gemte JS. At skifte fra Python til Rust oversætter ikke Python, det går tilbage til den JS, Python blev genereret fra, og oversætter den. Oversættelse over flere spring er det, der korrumperer et program, og editoren nægter at gøre det.

Tretten templates i fem kategorier, hver mærket med sværhedsgrad:

KategoriTemplates
Basicstomt script med lifecycle-stubs
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-forudindstillingerne og game-starter-props'ene (pickup, hazard) optræder på samme liste, hvilket er den praktiske måde at droppe en fungerende controller på en importeret karakter.

Kørsel og debugging. F5 kører, F9 sætter et breakpoint. Debuggeren pauser ved en linje, stepper ét enkelt frame, og rapporterer levende værdier gennem watch expressions. Script Lab kører et program med ingen entitet tilknyttet overhovedet, en scratchpad til API'et frem for en component på et objekt.

Ved siden af koden: en API reference, en symbolliste for den åbne fil, og et snippet library med favoritter og seneste. Ctrl+S gemmer, Ctrl+F finder, Ctrl+H erstatter, og editoren leveres med otte temaer.

Blueprints og adfærd#

En visuel graf, et bibliotek af færdiglavede adfærd, og en tilstandsmaskine lagt oven på adfærdsstakken.

Grafen bærer 267 noder i toogtyve 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-familierne. Tre egenskaber adskiller dem, og de er det, grafen er lavet af: 17 event nodes starter eksekvering, 117 pure nodes beregner en værdi uden sideeffekt og uden execution-pin, og 9 latent nodes afslutter senere, det er dem, der gør en forsinkelse eller en tween udtrykkelig uden en tilstandsmaskine af din egen.

Fire værktøjer: select V, pan H, comment C, reroute R, over et lærred, der zoomer fra 0,1× til 3× med et minikort. Variabler findes i seks typer, boolean, integer, float, string, vector3 og object. Hver nodes beskrivelse står på dens tooltip, hvilket er det eneste sted, et bibliotek af den størrelse kan forklare sig selv.

Tilstandsmaskinen#

Sit eget panel, og bevidst ikke Animatorens: Animatorens conditions er en flad enum med håndskrevet UI pr. tilfælde, mens disse er strukturerede og taler om verdenen.

Syv conditions, og hver er et spørgsmål om scenen: sees (et tagget mål i rækkevidde, valgfrit inden for en vinkel og i line of sight), lost (intet mål i N sekunder), distance mod en tærskel, health, message received, timer (tid brugt i den aktuelle tilstand), og flag (en værdi på den delte blackboard). To kombinatorer, and og or, er begge listet, selvom or allerede eksisterede implicit, to overgange til samme tilstand er en or, men "den ser mig OG jeg har stadig health" havde slet ingen form.

⚠️ Health sammenlignes som en brøkdel af maksimum, aldrig som en absolut værdi. En tærskel på "under 30 HP" overlever ikke en re-balancerings-gennemgang; "under 0,3" gør.

Ved at gå ind i eller forlade en tilstand, fire effekter: send en besked, set en blackboard-nøgle, play et animationsklip, eller affyr en named effect. Ingen af dem flytter noget, bevægelse forbliver hos adfærdene, og maskinen bestemmer, hvilken adfærd der er aktiv.

En overgang kan starte fra *, hvilket betyder enhver tilstand. Validatoren returnerer listen af problemer i stedet for at kaste ved det første, så en halvskrevet maskine stadig tegnes, og du ser alt, hvad der er galt, på én gang. Nodepositioner er en del af dataene: en graf, hvis layout bor uden for scenen, kommer tilbage blandet for den næste person, der åbner den.

BASIC#

TXT-viewport-tilstanden er et klassisk BASIC-miljø med medfølgende demoprogrammer, og sproget har en reference for sig selv. Det er et rigtigt sprog her, ikke et legetøj: multi-fil-moduler (#INCLUDE), typede numeriske typer (signed og unsigned 8/16/32/64-bit, float32 og float64), indlejrede records, object methods med SELF, referencer (REF/BYREF), struktureret TRY/CATCH/FINALLY, betinget kompilering, coroutines, typede handles, og WebGPU-compute med storage buffers og rå WGSL.

OPTION EXPLICIT er opt-in; klassiske implicitte variabler forbliver standarden, så importerede programmer stadig kører.

At spille og udgive#

Play#

Play, Pause, Stop. Ved stop rapporterer et banner, hvad sessionen ændrede, så en play-mode-redigering aldrig i det stille bliver beholdt eller i det stille går tabt. Sessioner kan optages og genafspilles ind i en fejlrapport, og scenario bookmarks lader en playtest starte midt i en bane.

Build#

Build tager en speltype (opdaget fra scenen, eller sat i hånden: sidescroller/platformer, first/third person, tekstbaseret) og et mål.

  • Web: WebGPU med en WebGL-fallback, valgfri WebXR (VR/AR), minificering, en FPS-tæller, og en embed assets-mulighed, der producerer én enkelt fil.
  • Desktop og mobil: native builds. Scenen eksporteres som data (scene.glb + scene.json) og kompileres gennem et genereret Bevy (Rust)-projekt; scripts kører uændret der på en indlejret QuickJS-runtime.

Komprimering kan konfigureres pr. akse, algoritme, teksturer, meshes, med en kvalitetsforudindstilling, der binder dem sammen. Builds gemmes i en historik med deres størrelser (original mod komprimeret) og kan downloades igen senere.

Et native build indeholder kun det, eksportøren ved, hvordan den skal eksportere. glTF fanger ikke brugerdefinerede shadere, thin instances, den procedurale himmel eller efterbehandling, så et runtime-system, der ikke er blevet porteret til Bevy-siden, vil mangle i et desktop- eller mobilbuild, mens det ser perfekt ud på web. Tjek et native build, før du stoler på det.

Multiplayer#

Panelet Multiplayer room forbinder en scene til en Colyseus-spilserver. En gratis delt testserver er tilgængelig uden konto og uden konfiguration; et projekt kan også få tildelt sin egen server. Rummet er nøglet af en delekode, du kan beholde for dig selv eller give videre.

Filer det læser og skriver#

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

Sender arbejde til andre studier#

Accepterer meshes fra Sculpt, Retopo og Pigment, hele scener fra Render, pixelart, animationer, PBR-materialesæt fra Matter, 2D-rigge, videoprojekter, billeder, vektorgrafik og Vectra-objekter.

Producerer 2D-rigge.

Et Vectra-skærmudkast ankommer som struktur, ikke som et billede. Det bliver et HUD-hierarki, Engine kan lægge ud og scripte: forskellen mellem et design, du kan koble sammen, og et skærmbillede af ét.

Genveje#

Cmd/Ctrl + K når Engines egne kommandoer fra paletten, ved siden af de globale. Engine har også et dedikeret, søgbart tastaturgenvejspanel i sine egne indstillinger; det har langt flere, end der ville være plads til på genvejssiden.

Begrænsninger og almindelige faldgruber#

  • En tom viewport er som regel browseren, ikke scenen. Engine kræver WebGL 2; tjek at hardwareacceleration er slået til.
  • Systems og Tools deler én skuffe. Hvis et panel "forsvandt", er det formentlig i den anden.
  • Konsollen er det første sted at kigge, ikke det sidste: den kobler fejl til den entitet, der rejste dem.
  • En component tilføjet i play mode overlever måske ikke stop. Læs banneret, der vises, når du stopper.
  • Physics er forskellig mellem 2D og 3D i sin solver, selvom script-callbacksene er de samme. En hvilende kontakt i 2D detekteres med en 2 mm skin, fordi solveren bringer penetration til præcis nul, før detektion kører.