Engine

Spelmotorn: scengraf, komponenter, skriptning, fysik, en PBR-pipeline, världsredigerare, och nativa builds för desktop och mobil.

I korthet#

En fullständig spelmotor i webbläsaren: bygg en scen, ge den beteende, tryck på play, och exportera den till webben eller till en nativ desktop- och mobilbinär.

Den är den största modulen i aukimi med bred marginal. Den här sidan kartlägger den på samma sätt som gränssnittet gör, efter panelen varje del bor i, snarare än att lista funktioner i bokstavsordning.

Layouten#

Engine, med scengrafen, viewporten, inspektorn och konsolen

MenyradFile · Edit · View · Windows · Run · Plugins
Verktygsfältprojektnamn, ångra/gör om, vylägesväxeln (3D · 2.5D · 2D · TXT), scenväljaren, de fyra panelknapparna, FX Master, HUD, upplösningsrutan, transport (spela, pausa, stoppa) och Build
Vänsteren ikonrad, scengraf, lista, ljud, konsol, och panelen den öppnar
Centrumviewporten, med sitt eget gizmo-fält (förflytta, rotera, skala, world/local, rutnät, fäst, rama in) och en kvalitetsväljare
Högerinspektorn för den markerade entiteten
BottenConsole och Profiler, sida vid sida
Statusradläge, viewportens dimension, entitetsantal, rutnätsstatus

De fyra panelknapparna#

Engine-verktygsfältet: scennamnet, ångra, vylägesväxeln, de fyra panelknapparna och transporten

De beter sig inte alla likadant, och skillnaden är värd att känna till innan du börjar leta efter något:

KnappBeteende
Systemsöppnar en panel
Toolsöppnar samma panel, Systems och Tools stänger varandra
Assetsväxlar en permanent panel
Scriptsöppnar en dialogruta

Systems och Tools delar avsiktligt på en plats; de placeras sida vid sida så att det syns att de gör det.

Systems#

Motorns egna delsystem: det en scen har, snarare än det du skapar med.

GruppPaneler
Pluginsplugin-bläddraren
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-brytaren i verktygsfältet slår på och av hela efterbehandlingspipelinen med ett klick: det snabbaste sättet att se vad den kostar dig. Individuellt: bloom, depth of field, SSR, SSAO, GTAO, SSGI, temporal AA, FXAA, motion blur, volumetrisk dimma, contact shadows, färggradering, filmkorn, kromatisk aberration, vinjettering och tonemapping, plus Nanite-liknande geometri och Hi-Z-ocklusion.

Look Presets är hela konfigurationer av ovanstående. Render Style ändrar registret, stiliserat snarare än fotografiskt. Shader Lab är där du skriver dina egna. Mesh LOD och Post Process Volumes är de två som betalar för sig själva på en stor scen: level-of-detail per mesh, och efterbehandling som bara gäller inuti en volym.

Renderaren är Babylon.js. Den startar på WebGL och byter till WebGPU när webbläsaren har det, och faller tillbaka på egen hand om det misslyckas.

Gameplay-system#

Physics täcker både 3D-lösaren (Havok) och 2D-lösaren. AI & Navigation är navmeshen och agenterna på den. Gameplay Zones är trigger-volymer med beteende kopplat. Multiplayer room kopplar scenen till en Colyseus-server (se nedan).

Världssystem#

Level Streaming laddar och avlastar delar av en nivå medan spelaren rör sig. Baking förberäknar belysning; Light Probes fångar indirekt ljus och reflektioner vid punkter i rymden. Decals projicerar detalj på ytor utan att lägga till geometri.

Tools#

Det du skapar med.

GruppPaneler
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

Världsgeneratorer#

Terräng, vatten, himmel och fyra innehållsgeneratorer, träd, växter, stenar och kitbash-delar. De har ett eget kapitel nedan.

Gameplay-innehåll#

Inventory, Data tables (Tools → Data) och Dialogue Trees är de tre redigerarna som låter ett spel ha innehåll utan att det innehållet lever i kod i detalj nedan.

Animation#

Timeline för entitetsanimation, Cinematic Sequencer för tagningar, och Camera Tools för inramningen. Se Animation och kamera.

Världsredigerarna#

Sju paneler under Tools → World. De är det snabba sättet att fylla en scen, och anledningen att en nivå inte behöver börja med en modelleringssession.

Terrain#

En scen kan hålla flera terränger; var och en är en rad i listan Terrains och skapas i en av tre upplösningar, 128² (snabb), 256² (balanserad) eller 512² (detaljerad).

Panelen har tio lägen, och de delar en sak: masken målad i Masks begränsar dem alla.

LägeVad det gör
Sculptsjutton penslar på höjdfältet
Paintupp till åtta texturlager, fördelat på två splatmaps
Generatebrus, auto-texturering, och import av verklig höjddata
Sketchrita åsar och dalar, syntetisera en terräng som matchar
Masksbegränsar varje annat läge till en del av ytan
Waterhavsnivå, och valet mellan terrängvatten och ett FFT-hav
Pathsen bezierväg bakad in i marken
Vegetationpensel- eller regelbaserad utströning
SDFen raymarchad terräng, renderad snarare än meshad
Biomesjord, växter, träd och stenar i en enda 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-klick sätter källan), Blur B, Ramp R, plus de två vattenverktygen: River ritar ett lopp, Lake fyller vid en punkt.

Penseln själv har dynamik: tryckkurva, lazy mouse, falloff, symmetri, mönster, och jitter på både storlek och styrka. Stamp bär sex former: krater, bergstopp, platå, floddal, kupol, brushög. Erosion kommer i två former: E-penseln är lokal, medan Adjustments kör hydraulisk, termisk och vind-erosion över hela terrängen.

Paint. Åtta lager, eftersom två RGBA-splatmaps håller fyra kanaler vardera. Materialbiblioteket är sorterat efter kategori, gräs, jord, skog, sten, vägar och ytor, klippor, sand, snö, vulkaniskt, våtmark, fantasy, och dina egna, och varje lager bär UV-skala, förskjutning, en detaljkarta, och ytrelief (bump-styrka och parallax-djup). Break texture tiling (cell bombing) är inställningen som hindrar en upprepad marktextur från att läsas som ett rutnät.

Generate bygger från brus, sedan tilldelar Generate Textures material efter höjd och lutning, med nord/syd-skuggvariation och sand- eller stenstränder där det finns vatten. Real World importerar offentliga NASA/USGS-höjdrutor: välj ett landmärke eller skriv koordinater, välj zoomen, och panelen rapporterar höjdintervallet den hämtade.

Sketch är den andra vägen in. Rita ås- och dalstreck på en 2D-karta, välj upp till tre verkliga källandskap, och terrängen syntetiseras för att matcha skissen, valfritt blandad med det som redan finns där, auto-texturerad och eroderad i samma passering.

Masks målas med en pensel och redigeras sedan som helhet: rensa, invertera, oskärpa, väx, krymp. Smart masks härleder en från terrängen själv, efter höjd, efter lutning, efter lager eller efter kavitet.

Paths. Klicka för att släppa kontrollpunkter och en mjuk kurva löper genom dem; dra de bärnstensfärgade punkterna för att flytta dem, de cyanfärgade handtagen för att böja kurvan. Bake Path plattar till marken under den, målar texturen och höjer vallarna.

Vegetation har två halvor. Penseln placerar och tar bort instanser för hand; scatter rules placerar dem efter villkor, lagervikter, frö, min/max-skala, och det höjd- och lutningsband varje tillgång accepterar. Gräs och blommor tonar bort förbi ett konfigurerbart ritavstånd, och Export to Scene gör instanserna till scenobjekt.

Biomes är ett-klicks-versionen av allt ovanstående: välj en biom, kryssa i kategorierna du vill ha (jord, träd, växter och gräs, blommor, alger nära vatten, sten), sätt en täthet, och Apply Biome målar marken och strör ut allt, och rapporterar hur många instanser av varje den placerade. Träds age variety blandar plantor genom uråldriga i stället för att stämpla samma träd överallt, och ground blend (RVT) smälter samman varje stenbas med terrängfärgen under den.

SDF är en annan renderare, inte ett annat verktyg: terrängen raymarchas från ett distansfält, formad av octaves, lacunarity och persistence, texturerad efter gräs/sten/snö med en snögräns och en lutningströskel, och egna mjuka skuggor, ambient occlusion och dimma.

Stora terränger har ett LOD-system med skirt-geometri (vilket är det som sluter gapen mellan nivåer), mjuka nivåövergångar, frustum culling och ett stats-overlay. Höjdkartor importeras och exporteras som 16-bit PNG, 8-bit PNG eller RAW 16-bit; splatmaps som en RGBA-PNG eller en fil per lager; och hela terrängen, eller bara dess inställningar, som en förinställning.

Sky Studio#

Atmosfären. Fyra himmeltyper, solid, gradient, HDRI, och en fysisk atmosfär med Rayleigh- och Mie-spridning, Mie-absorption, ozon, markalbedo, turbiditet, planetradie och atmosfärtjocklek.

Allt hänger på time of day, som kan cykla på egen hand: solen efter elevation, azimut och intensitet, med egen skuggintensitet; månen efter fas; stjärnor med twinkle; och en aurora. Volumetric clouds har tjocklek, erosion, brusskala och curl-distorsion, och ljus genom absorption, spridning, ambient och en powder-term; cirrus och Belt of Venus är separata. Aerial perspective är diset som förtätas med avstånd och tonar bort avlägsen geometri mot horisonten, det är inställningen som får ett landskap att läsas som stort.

Tio förinställningar att utgå från: clear day, dawn, sunset, dusk, night, overcast, stormy, desert, arctic and space.

Water#

Två flikar: Ocean (FFT) för öppet hav, Shore & lakes för allt annat.

⚠️ Vatten skapas i Terrain-redigeraren: flod- och sjöverktygen, eller Show Water, och finjusteras här. Att öppna den här panelen på en scen utan vatten ger dig inställningar utan något att applicera dem på.

Strandvatten bär färg, opacitet, vågstyrka och hastighet, choppiness, foam-bredd och Fresnel, med skärmrymdsreflektioner och refraktionsoskärpa. Under det ligger själva WGSL-shadern: två normalskalor med egna scrollriktningar och hastighet, foam-tröskel och mjukhet, refraktionsstyrka och brytningsindex, och ljuset inuti vattnet, absorption, turbiditet, spridning och translucens.

Tree Generator#

Två lägen, Tree och Trunk. Ett träd är lövfällande eller vintergrönt, har en ålder från planta till uråldrigt, och kan vara levande, dött, en torraka eller en fallen stam. Allt är frö-baserat, så Randomize seed är det snabbaste sättet att få ett annat träd med samma karaktär.

Formen är per grennivå: barn, längd, radie, avsmalning, knotighet, vridning, sektioner, segment, vinkel och starthöjd, plus naturlig variation, fototropism och gravitropism: de två som får ett träd att luta mot ljuset och hänga under sin egen vikt, och en global kraft med egen styrka. Basen har rotutflänsning (flikar och höjd) och stödrötter.

Löven är billboards, en- eller tvåsidiga, med antal, storlek, vinkel, varians, klunga, krullning, hänge, glans och rundade normaler. Bark kommer i sex stilar: ridged, aspen, pine, birch, smooth, palm, med relief, mossa, en fuktig bas, solblekning, ambient occlusion i kronan och en höstfärgning. Fyra årstider växlar hela utseendet på en gång.

Forest strör ut många på en gång: antal, spridningsradie, skalvarians, och en åldersblandning (single, natural, young, old, even). Add age progression placerar alla fem livsstadier i rad, vilket är det snabbaste sättet att bedöma dem sida vid sida. Ett träd lämnar modulen som en scenentitet eller som GLB, och varje inställning kan sparas som en förinställning.

Plant Generator#

Fem sorter, flower, cluster, herb, fern, grass, som delar en stjälk (antal, höjd, tjocklek, kurva, färg) och löv (antal, storlek, bredd, vinkel). Ferns lägger till bladpar, bladsvep och bladbåge; grass lägger till strå-antal och båge.

En blomma är valfri på vilken som helst av dem: kronblad, kronbladsrader, längd, bredd, krullning, spetsskärpa, blomning, mittstorlek, och tre färger, kronblad, kronbladsspets och mitt, med translucens och roughness för hur ljus passerar genom bladet. Lägg till en i scenen, strö ut många, eller exportera GLB.

Rock Generator#

Tre sorter, rock, stone, cliff, i tre stilar: realistic, toon, eller low poly med en outline.

Formen är brus över ett klot: skala, styrka, octaves, persistence, warp och ett ridged-alternativ, plus strata med egen frekvens och facet cuts med djup och skärpa för kantig sten. Radie, detalj, flatten, formvarians och en platt botten avgör siluetten, och fyra erosionsförinställningar, fresh, weathered, natural, eroded, flyttar allt på en gång.

Ytan har färgvariation, mineralådror, lav och mossa, en detaljtextur med kakling och styrka, triplanar blending och parallax-relief. Den använder ett medföljande Stone-material som standard; skicka ett material från Matter till Engine för att åsidosätta det.

Kitbash, samma bibliotek som Sculpt#

Kitbash delas med Sculpt: den här panelen och Sculpts Edit Forge läser ett gemensamt bibliotek. En del byggd där placeras här, och en del målad här kan sparas tillbaka till det.

Det scenen lagrar är delen och dess dimensioner, inte dess vertices, vilket är varför en kitbashad byggnad kostar nästan ingenting i filen och kan uppdateras senare från sin källa.

Beväpna en del från katalogen och varje vänsterklick placerar den. Tre fästlägen avgör var den landar: on terrain (delar följer markhöjden under dem), on water (byggplanet ligger på vattennivån), och snap to sockets, sikta på en anslutningspunkt på en placerad del och den nya vrider sig för att möta den. En kedja växer från sin fria ände, upptagna sockets faller bort från kandidaterna, och varje klick är sitt eget ångrasteg. Ctrl/Cmd förblir reserverat för markering och Alt för rotation. Collections behåller sin källa och version, så en instans kan uppdateras när originalet ändras.

De andra redigerarna#

Världsredigerarna fyller en scen; de här ger den ett gränssnitt, en karta, dess innehållstabeller och instrumenten för att kontrollera vad den kostar.

HUD-redigeraren#

Tools → Editors → UI. Sex flikar, Templates, Elements, Layers, Preview, Style och Script: över en förhandsvisning som växlar mellan tre enhetsstorlekar: desktop 960×540, tablet 768×432, mobile 375×667.

Elements kommer i tre grupper (Display, Data, Input) och kan nästlas: panel och flex håller barn, så fliken Layers är ett riktigt träd snarare än en platt lista. Historiken är femtio steg djup.

⚠️ Fliken Style är CSS-liknande, och skillnaden spelar roll. HUD:et ritas på duken av Babylons GUI, och riktig CSS når inte dit. Reglerna du skriver här mappas mot GUI-egenskaper; selektorerna är #name för ett element, .type för en sort (.text, .panel) och * för allt.

Fliken Script är det andra sättet att bygga ett: ui.*-API:et, createText, createPanel, createProgress, createButton, med två sätt att köra det. Build Layout kör det design-time och lämnar dig riktiga element att knuffa för hand; Run Live kör det i spelet.

Två kopplingar utåt: HUD-grafik öppnas i Inkwell eller Vectra och länkas tillbaka i stället för att kopieras, och ett Vectra-dokument kan importeras som HUD-element. Minimap-elementet är sin egen sak, med räckvidd, rutnät, och markörer för spelare, fiender, allierade, föremål och mål.

Tilemap-redigeraren#

Elva verktyg, brush, eraser, fill, rectangle, select, eyedropper, stamp, autotile, prop, zone och path, på fyra kartprojektioner: orthogonal, isometric, staggered isometric och hexagonal.

Autotiling levereras med fyra mallar, och numret i varje namn är antalet rutor den förväntar sig: Blob 47 (fullt hörn och kant), Wang 16 (kantbaserad), Simple 4 (NSEW), och RPG Maker A2 (48 rutor, kompatibel med kartor skapade där).

Två lager ligger ovanpå själva rutorna. Zones målar gameplay-betydelse: buildable, water, forest, road, farm, residential, commercial, blocked, och props placerar objekt efter kategori: träd, stenar, byggnader, vegetation, vatten, stigar. Kartor lever i webbläsarens egen databas, så en osparad överlever en omladdning.

Inventory, data tables och dialog#

De tre redigerarna som låter ett spel ha innehåll utan att det innehållet lever i kod.

Inventory redigerar en katalog och applicerar den på scenen. Ett föremål bär åtgärder, och en åtgärd är en trigger: use, equip, unequip, plus en av åtta typer: message, heal, damage, grant, remove, event, toast, scene. Panelen själv har tre layouter (grid, list, compact), tre utseendeförinställningar (graphite, midnight, warm), och fyra visuella slots, background, slot, equipment, tooltip, som öppnas i en annan modul för en ordentlig omritning.

Data tables är typade: en kolumn är text, number, bool eller ref. CSV går in och kommer ut. Varje redigering körs genom rena funktioner, vilket är det som håller tabellen exporten skriver identisk med tabellen builden läser.

Dialogue trees är noder med en talare och en replik. En nod fortsätter antingen till en next, eller förgrenar sig i choices, var och en med egen text och egen destination, förgreningsreglaget är det enda strukturella beslutet i redigeraren.

Animation och kamera#

Cinematic Sequencer bygger sekvenser med en varaktighet och en loop-flagga, ett spår per entitet, och keyframes fångade vid spelhuvudet, Add Key tar entitetens aktuella värde i stället för att be dig skriva in det. Grafredigeraren under visar tid mot förlopp, med runda handtag för easing: lutningen är hastigheten. Tagningar har egna varaktigheter, och en Cinemascope-inramning (1.422:1) finns tillgänglig för letterbox.

Camera Tools täcker FOV, position, mål, läge och hastighet, plus bookmarks för synvinklarna du fortsätter komma tillbaka till, och kameralager.

Ljud#

Audio Manager håller ljudhändelser, spår och en mixer med kanaler och kategorier. Effekter per källa är ett low-pass, ett high-pass och en reverb send; ett random-läge väljer mellan flera klipp så att ett upprepat ljud slutar läsas som en loop. Scrubbing spelar upp ljud medan du drar spelhuvudet.

Profileraren#

En nedbrytning av bildrutan, inte en bildruteräknare: kamerarendering, mesh-utvärdering, partiklar, sprites och shader-kompilering, var och en märkt real eller estimated så att ett tal som kom från en mätning aldrig misstas för ett som kom från en modell. Räknare bredvid: meshar och aktiva meshar, ljus, kameror, fysikkroppar.

Inspelning är explicit, och den avslutas med en Issues-lista i stället för en graf att tolka: low FPS, high draw calls, high triangles, high memory, mot den mål-bildhastighet du satt.

Att bygga en scen#

Entiteter#

Engine-viewporten, med gizmot på den markerade entiteten

En ny scen anländer med en Main Camera, ett Directional Light, en Skybox och ett Ground Plane.

Scengrafen, med de fyra entiteterna en ny scen börjar med

Vad du kan lägga till: Empty, Cube, Sphere, Cylinder, Plane, Light, Camera, Script, Mesh, plus två familjer som anländer färdigkopplade:

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

Scengrafen söker, filtrerar efter typ, och lägger till, duplicerar eller raderar; entiteter kan nästlas, och att byta förälder är ett drag. Placering har fäst och en scatter brush för att snabbt befolka mark.

Inspektorn#

Transform (position, rotation, skala), en Enabled-brytare, och entitetens components: läggs till, konfigureras och tas bort här, med Add Script längst ner. Markera flera entiteter och inspektorn växlar till batch-redigering, så en fältändring landar på alla.

Konsolen#

Inte bara en logg. Den filtrerar efter nivå (all, logs, info, warning, error), länkar ett meddelande tillbaka till entiteten som producerade det, och bär en expression prompt: skriv ett uttryck, Enter kör det mot den levande scenen, piltangenterna vandrar genom historiken.

Att ge den beteende#

Tre vägar, och de samexisterar.

Scripts#

JavaScript med livscykelkrokar, och en egen referens:

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 och triggers utlöses i både 2D och 3D, och varje sida får sin egen kontaktnormal: other.contact.normal pekar från den andra entiteten mot den här. Det är vad som låter ett skript skilja "jag landade på det" från "det landade på mig": en plattformsstamp läser other.contact.normal.y > 0.5.

Skriptredigeraren#

F2, eller Add Script på en entitet. En Monaco-redigerare med flikar, flera skript öppna samtidigt, var och en sparad i webbläsarens egen databas i stället för i projektfilen, så en osparad buffert överlever en omladdning.

Fem dialekter, ett program. Språkväxlaren erbjuder JavaScript, BASIC, Python, C# och Rust. Det den gör är inte vad den ser ut att göra: JavaScript är sanningskällan, och de andra fyra är vyer transpilerade från den sparade JS:en. Att växla från Python till Rust översätter inte Python, den går tillbaka till JS:en Python genererades från och översätter den. Flerstegsöversättning är det som korrumperar ett program, och redigeraren vägrar göra det.

Tretton mallar i fem kategorier, var och en märkt med svårighetsgrad:

KategoriMallar
Basicsblank script with 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-förinställningarna och game-starter-props (pickup, hazard) visas i samma lista, vilket är det praktiska sättet att släppa en fungerande controller på en importerad karaktär.

Köra och felsöka. F5 kör, F9 sätter en breakpoint. Debuggern pausar vid en rad, stegar en enda bildruta, och rapporterar levande värden genom watch-uttryck. Script Lab kör ett program utan någon entitet kopplad alls, ett skrapblock för API:et snarare än en komponent på ett objekt.

Vid sidan av koden: en API-referens, en symbollista för den öppna filen, och ett snippet-bibliotek med favoriter och senaste. Ctrl+S sparar, Ctrl+F söker, Ctrl+H ersätter, och redigeraren levereras med åtta teman.

Blueprints och beteenden#

En visuell graf, ett bibliotek med färdiga beteenden, och en tillståndsmaskin lagrad ovanpå beteendestacken.

Grafen bär 267 noder i tjugotvå grupper, Math, Scene, Entity, Animation, Flow Control, String, Events, Physics, UI, Array, Vector, Transform, Debug, Input, Utility, Game, Boolean, Camera, Tween, Variables, Audio och 2D- och 3D-familjerna. Tre egenskaper skiljer dem åt, och det är vad grafen är gjord av: 17 event-noder startar exekvering, 117 rena noder beräknar ett värde utan sidoeffekt och utan exekveringspinne, och 9 latenta noder blir klara senare: det är de som gör en fördröjning eller en tween uttryckbar utan en egen tillståndsmaskin.

Fyra verktyg: select V, pan H, comment C, reroute R, över en duk som zoomar från 0.1× till 3× med en minikarta. Variabler kommer i sex typer, boolean, integer, float, string, vector3 och object. Varje nods beskrivning finns på dess tooltip, vilket är den enda platsen ett bibliotek av den storleken kan förklara sig själv.

Tillståndsmaskinen#

Sin egen panel, och avsiktligt inte Animators: Animators villkor är en platt enum med handskriven UI per fall, medan de här är strukturerade och handlar om världen.

Sju villkor, och vart och ett är en fråga om scenen: sees (ett taggat mål inom räckhåll, valfritt inom en vinkel och i siktlinje), lost (inget mål på N sekunder), distance mot en tröskel, health, message received, timer (tid spenderad i det aktuella tillståndet), och flag (ett värde på den delade blackboarden). Två kombinatorer, and och or, listas båda även om or redan fanns implicit, två övergångar till samma tillstånd är ett or, men "den ser mig OCH jag har fortfarande hälsa" hade ingen form alls.

⚠️ Health jämförs som en andel av maximumet, aldrig som ett absolut tal. En tröskel på "under 30 HP" överlever inte en ombalanseringspassering; "under 0.3" gör det.

Vid inträde i eller utträde ur ett tillstånd, fyra effekter: send ett meddelande, set en blackboard-nyckel, play ett animationsklipp, eller avfyra en named effect. Ingen av dem flyttar något, rörelse stannar hos beteendena, och maskinen bestämmer vilket beteende som är aktivt.

En övergång kan starta från *, vilket betyder vilket tillstånd som helst. Validatorn returnerar listan över problem i stället för att kasta på det första, så en halvskriven maskin ritas ändå upp och du ser allt fel på en gång. Nodpositioner är en del av datan: en graf vars layout lever utanför scenen kommer tillbaka omblandad för nästa person som öppnar den.

BASIC#

TXT-vyläget är en klassisk BASIC-miljö med medföljande demoprogram, och språket har en egen referens. Det är ett riktigt språk här, inte en leksak: flerfilsmoduler (#INCLUDE), typade numeriska typer (signerade och osignerade 8/16/32/64-bit, float32 och float64), nästlade poster, objektmetoder med SELF, referenser (REF/BYREF), strukturerad TRY/CATCH/FINALLY, villkorlig kompilering, coroutines, typade handtag, och WebGPU compute med storage buffers och rå WGSL.

OPTION EXPLICIT är opt-in; klassiska implicita variabler förblir standard så att importerade program fortfarande körs.

Att spela och leverera#

Play#

Play, Pause, Stop. Vid stopp rapporterar en banderoll vad sessionen ändrade, så en play-lägesredigering aldrig behålls eller går förlorad tyst. Sessioner kan spelas in och spelas upp igen i en buggrapport, och scenario bookmarks låter ett playtest starta från mitten av en nivå.

Build#

Build tar en speltyp (upptäckt från scenen, eller satt för hand: sidescroller/plattform, first/third person, textbaserat) och ett mål.

  • Web: WebGPU med en WebGL-reserv, valfri WebXR (VR/AR), minifiering, en FPS-räknare, och ett embed assets-alternativ som producerar en enda fil.
  • Desktop och mobile: nativa builds. Scenen exporteras som data (scene.glb + scene.json) och kompileras genom ett genererat Bevy (Rust)-projekt; skript körs oförändrade där på en inbäddad QuickJS-runtime.

Komprimering är konfigurerbar per axel, algoritm, texturer, meshar, med en kvalitetsförinställning som binder ihop dem. Builds hålls i en historik med sina storlekar (original mot komprimerad) och kan laddas ner igen senare.

En nativ build innehåller bara det exportören vet hur den ska exportera. glTF fångar inte anpassade shaders, thin instances, den procedurella himlen eller efterbehandling, så ett körtidssystem som inte har portats till Bevy-sidan kommer att saknas i en desktop- eller mobilbuild medan det ser perfekt ut på webben. Kontrollera en nativ build innan du förlitar dig på den.

Multiplayer#

Panelen Multiplayer room kopplar en scen till en Colyseus-spelserver. En gratis delad testserver är tillgänglig utan konto och utan konfiguration; ett projekt kan också få en egen server. Rummet nyckelas av en delningskod du kan behålla för dig själv eller dela ut.

Filer den läser och skriver#

Native format.engine
Imports.glb, .gltf, .obj, .fbx, .png, .svg, .mp4, .webm, .mov, .scene
Exportsen webbygg, en nativ desktop-/mobilbygg, scene.glb + scene.json

Att skicka arbete till andra moduler#

Godtar meshar från Sculpt, Retopo och Pigment, hela scener från Render, pixelkonst, animationer, PBR-materialuppsättningar från Matter, 2D-riggar, videoprojekt, bilder, vektorgrafik, och Vectra-objekt.

Producerar 2D-riggar.

En Vectra-skärmskiss anländer som struktur, inte som en bild. Den blir en HUD-hierarki Engine kan lägga ut och skripta: skillnaden mellan en design du kan koppla ihop och en skärmdump av en.

Genvägar#

Cmd/Ctrl + K når Engines egna kommandon från paletten, sida vid sida med de globala. Engine har också en dedikerad, sökbar genvägspanel i sina egna inställningar; den har mycket mer än vad som skulle få plats på sidan med tangentbordsgenvägar.

Begränsningar och vanliga fallgropar#

  • En tom viewport är oftast webbläsaren, inte scenen. Engine behöver WebGL 2; kontrollera att hårdvaruacceleration är på.
  • Systems och Tools delar en panel. Om en panel "försvann" ligger den troligen i den andra.
  • Konsolen är det första stället att titta, inte det sista: den länkar fel till entiteten som orsakade dem.
  • En komponent som läggs till i play-läge kanske inte överlever stopp. Läs banderollen som visas när du stoppar.
  • Physics skiljer sig mellan 2D och 3D i sin lösare även om skriptets callbacks är desamma. En vilande kontakt i 2D upptäcks med ett 2 mm skin, eftersom lösaren för penetrationen till exakt noll innan detekteringen körs.
</content>