Engine

De game-engine: scenegraaf, componenten, scripting, fysica, een PBR-pipeline, wereldeditors en native builds voor desktop en mobiel.

In één zin#

Een volwaardige game-engine in de browser: bouw een scène, geef hem gedrag, druk op play, en exporteer hem naar het web of naar een native build voor desktop en mobiel.

Het is verreweg de grootste studio binnen aukimi. Deze pagina brengt hem in kaart zoals de interface dat zelf doet, aan de hand van de lade waarin elk paneel zit, in plaats van functies alfabetisch op te sommen.

De indeling#

Engine, met de scenegraaf, de viewport, de inspector en de console

MenubalkFile · Edit · View · Windows · Run · Plugins
Werkbalkprojectnaam, undo/redo, de schakelaar voor de viewportmodus (3D · 2.5D · 2D · TXT), de scèneselectie, de vier paneelknoppen, FX Master, HUD, het resolutievak, transport (play, pause, stop) en Build
Linkseen pictogramrail, scene graph, list, audio, console, en het paneel dat erbij opengaat
Middende viewport, met een eigen gizmobalk (translate, rotate, scale, world/local, grid, snapping, framing) en een kwaliteitskiezer
Rechtsde inspector voor de geselecteerde entiteit
OnderConsole en Profiler, naast elkaar
Statusbalkmodus, viewportafmeting, aantal entiteiten, rasterstatus

De vier paneelknoppen#

De werkbalk van Engine: scènenaam, undo, de schakelaar voor de viewportmodus, de vier paneelknoppen en het transport

Ze gedragen zich niet allemaal hetzelfde, en het verschil is goed om te kennen voordat u iets gaat zoeken:

KnopGedrag
Systemsopent een lade
Toolsopent dezelfde lade, Systems en Tools sluiten elkaar
Assetsschakelt een permanent dock in of uit
Scriptsopent een modaal venster

Systems en Tools delen bewust één plek; ze staan naast elkaar zodat zichtbaar is dat ze dat doen.

Systems#

De eigen subsystemen van de engine: de dingen die een scène heeft, in plaats van de dingen waarmee u bouwt.

GroepPanelen
Pluginsde plugin-browser
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#

De schakelaar FX Master op de werkbalk zet met één klik de hele post-pipeline aan of uit: de snelste manier om te zien wat die u kost. Afzonderlijk: bloom, depth of field, SSR, SSAO, GTAO, SSGI, temporal AA, FXAA, motion blur, volumetric fog, contact shadows, colour grading, film grain, chromatic aberration, vignette en tonemapping, plus Nanite-achtige geometrie en Hi-Z occlusion.

Look Presets zijn complete configuraties van het bovenstaande. Render Style verandert het register, gestileerd in plaats van fotografisch. Shader Lab is waar u uw eigen shaders schrijft. Mesh LOD en Post Process Volumes zijn de twee die zichzelf terugverdienen op een grote scène: detailniveau per mesh, en post-processing die alleen binnen een volume werkt.

De renderer is Babylon.js. Hij start op WebGL en schakelt zelf over naar WebGPU zodra de browser dat heeft, en valt uit zichzelf terug als dat mislukt.

Gameplaysystemen#

Physics dekt zowel de 3D-solver (Havok) als de 2D-variant. AI & Navigation is het navmesh en de agents daarop. Gameplay Zones zijn triggervolumes met gekoppeld gedrag. Multiplayer room verbindt de scène met een Colyseus-server (zie verderop).

World-systemen#

Level Streaming laadt en ontlaadt delen van een level terwijl de speler beweegt. Baking berekent belichting vooraf; Light Probes vangen indirect licht en reflecties op punten in de ruimte. Decals projecteren detail op oppervlakken zonder geometrie toe te voegen.

Tools#

De dingen waarmee u bouwt.

GroepPanelen
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

Wereldgeneratoren#

Terrain, water, sky en vier content-generatoren: trees, plants, rocks en kitbash-onderdelen. Ze hebben een eigen hoofdstuk verderop.

Gameplay opbouwen#

Inventory, Data tables (Tools → Data) en Dialogue Trees zijn de drie editors waarmee een game inhoud kan hebben zonder dat die inhoud in code zit, verderop in detail.

Animatie#

Timeline voor entiteitsanimatie, Cinematic Sequencer voor shots, en Camera Tools voor de kadrering. Zie Animatie en camera.

De wereldeditors#

Zeven panelen onder Tools → World. Het is de snelste manier om een scène te vullen, en de reden waarom een level niet hoeft te beginnen met een modelleersessie.

Terrain#

Een scène kan meerdere terreinen bevatten; elk is een rij in de lijst Terrains en wordt aangemaakt op een van drie resoluties: 128² (snel), 256² (gebalanceerd) of 512² (gedetailleerd).

Het paneel heeft tien modi, en ze delen één ding: het masker dat u schildert onder Masks beperkt elk van hen.

ModusWat het doet
Sculptzeventien kwasten op het hoogteveld
Painttot acht textuurlagen, verdeeld over twee splatmaps
Generateruis, automatisch textureren, en import van echte hoogtedata
Sketchteken bergruggen en dalen, synthetiseer een terrein dat erbij past
Masksbeperk elke andere modus tot een deel van het oppervlak
Waterzeeniveau, en de keuze tussen terreinwater en een FFT-oceaan
Pathseen Bézier-weg gebakken in de grond
Vegetationstrooien met de kwast, of op basis van regels
SDFeen geraymarcht terrein, gerenderd in plaats van gemesht
Biomesgrond, planten, bomen en rotsen in één keer

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 stelt de bron in), Blur B, Ramp R, plus de twee watergereedschappen: River tekent een loop, Lake vult op een punt.

De kwast zelf heeft dynamiek: drukcurve, lazy mouse, falloff, symmetrie, patroon, en jitter op zowel grootte als sterkte. Stamp heeft zes vormen: krater, bergtop, plateau, rivierdal, koepel, ruisheuvel. Erosie komt in twee vormen: de kwast E werkt lokaal, terwijl Adjustments hydraulische, thermische en winderosie over het hele terrein laat lopen.

Paint. Acht lagen, omdat twee RGBA-splatmaps elk vier kanalen bevatten. De materiaalbibliotheek is gesorteerd per categorie: gras, aarde, bos, rotsen, wegen en oppervlakken, kliffen, zand, sneeuw, vulkanisch, moeras, fantasie, en uw eigen materialen. Elke laag heeft UV-schaal, verplaatsing (displacement), een detailmap, en oppervlaktereliëf (bumpsterkte en parallaxdiepte). Break texture tiling (cell bombing) is de instelling die voorkomt dat een herhaalde grondtextuur als een raster leest.

Generate bouwt vanuit ruis, waarna Generate Textures materialen toewijst op basis van hoogte en helling, met noord-zuid-schaduwvariatie en zand- of kiezelkusten waar water is. Real World importeert publieke NASA/USGS-hoogtetegels: kies een oriëntatiepunt of typ coördinaten, kies het zoomniveau, en het paneel meldt het hoogtebereik dat het heeft opgehaald.

Sketch is de andere ingang. Teken bergrug- en dalstreken op een 2D-kaart, kies tot drie echte referentielandschappen, en het terrein wordt gesynthetiseerd om bij de schets te passen, optioneel gemengd met wat er al staat, automatisch getextureerd en geërodeerd in dezelfde stap.

Masks worden geschilderd met een kwast en daarna als geheel bewerkt: clear, invert, blur, grow, shrink. De slimme maskers leiden een masker af van het terrein zelf, op basis van hoogte, helling, laag of holte.

Paths. Klik om controlepunten neer te zetten en er loopt een vloeiende curve doorheen; sleep de amberkleurige punten om ze te verplaatsen, de cyaan handvatten om de curve te buigen. Bake Path vlakt de grond eronder af, schildert de textuur en verhoogt de bermen.

Vegetation heeft twee kanten. De kwast plaatst en verwijdert exemplaren met de hand; de scatter rules plaatsen ze op basis van voorwaarde, laaggewichten, seed, min/max-schaal, en de hoogte- en hellingband die elke asset accepteert. Gras en bloemen vervagen voorbij een instelbare zichtafstand, en Export to Scene zet de exemplaren om in scène-objecten.

Biomes is de versie met één klik van dit alles: kies een biome, vink de categorieën aan die u wilt (grond, bomen, planten en gras, bloemen, algen bij water, rotsen), stel een dichtheid in, en Apply Biome schildert de grond en strooit alles, met een melding van hoeveel exemplaren van elk het heeft geplaatst. Leeftijdsvariatie van bomen mengt zaailingen tot eeuwenoude exemplaren in plaats van overal dezelfde boom neer te zetten, en ground blend (RVT) versmelt de basis van elke rots met de terreinkleur eronder.

SDF is een andere renderer, geen ander gereedschap: het terrein wordt geraymarcht vanuit een distance field, vorm gegeven door octaves, lacunarity en persistence, getextureerd met gras/rots/sneeuw met een sneeuwgrens en een hellingsdrempel, en heeft eigen zachte schaduwen, ambient occlusion en mist.

Grote terreinen hebben een LOD-systeem met skirt-geometrie (die de gaten tussen niveaus dichthoudt), vloeiende niveauovergangen, frustum culling en een statistiekenoverlay. Hoogtekaarten importeren en exporteren als 16-bit PNG, 8-bit PNG of RAW 16-bit; splatmaps als één RGBA-PNG of één bestand per laag; en het hele terrein, of alleen de instellingen ervan, als preset.

Sky Studio#

De atmosfeer. Vier soorten hemel: solid, gradient, HDRI, en een physical atmosphere met Rayleigh- en Mie-verstrooiing, Mie-absorptie, ozon, grondalbedo, troebelheid, planeetstraal en atmosfeerdikte.

Alles hangt af van time of day, dat op zichzelf kan doorlopen: de zon op hoogte, azimut en intensiteit, met een eigen schaduwintensiteit; de maan op fase; sterren met twinkeling; en een aurora. Volumetric clouds hebben dikte, erosie, ruisschaal en curl-vervorming, en licht via absorptie, scatter, ambient en een powder-term; cirrus en de Belt of Venus staan los. Aerial perspective is de waas die dikker wordt met de afstand en verre geometrie laat vervagen in de horizon; het is de instelling die een landschap groot laat lezen.

Tien presets om mee te beginnen: clear day, dawn, sunset, dusk, night, overcast, stormy, desert, arctic en space.

Water#

Twee tabbladen: Ocean (FFT) voor open zee, Shore & lakes voor de rest.

⚠️ Water wordt aangemaakt in de Terrain-editor: de river- en lake-gereedschappen, of Show Water, en hier afgesteld. Dit paneel openen op een scène zonder water geeft u instellingen zonder iets om ze op toe te passen.

Shore water heeft kleur, opaciteit, golfsterkte en -snelheid, choppiness, schuimbreedte en Fresnel, met screen-space reflecties en refractievervaging. Daaronder zit de WGSL-shader zelf: twee normal-schalen met eigen scrollrichtingen en snelheid, schuimdrempel en -zachtheid, refractiesterkte en brekingsindex, en het licht in het water: absorptie, troebelheid, verstrooiing en translucentie.

Tree Generator#

Twee modi, Tree en Trunk. Een boom is loofhoudend of altijdgroen, heeft een leeftijd van zaailing tot eeuwenoud, en kan levend, dood, een snag of een gevallen stam zijn. Alles is geseed, dus Randomize seed is de snelste manier om een andere boom met hetzelfde karakter te krijgen.

De vorm wordt per takniveau bepaald: kinderen, lengte, straal, verjonging (taper), knoestigheid, twist, secties, segmenten, hoek en starthoogte, plus natuurlijke variatie, phototropisme en gravitropisme: de twee die een boom naar het licht laten leunen en onder zijn eigen gewicht laten hangen, en een globale kracht met een eigen sterkte. De basis heeft root flare (lobben en hoogte) en steunwortel (buttress).

Bladeren zijn billboards, enkel- of dubbelzijdig, met aantal, grootte, hoek, variatie, clump, curl, droop, glans en afgeronde normalen. Bast komt in zes stijlen: ridged, aspen, pine, birch, smooth, palm, met reliëf, mos, een vochtige basis, zonbleking, kroon-ambient-occlusion en een herfsttint. Vier seizoenen schakelen de hele look tegelijk om.

Forest strooit er meteen veel: aantal, spreidingsradius, schaalvariatie, en een leeftijdsmix (single, natural, young, old, even). Add age progression plaatst alle vijf levensfasen op een rij, de snelste manier om ze naast elkaar te beoordelen. Een boom vertrekt als scène-entiteit of als GLB, en elke instelling kan als preset worden opgeslagen.

Plant Generator#

Vijf soorten: flower, cluster, herb, fern, grass, die een stengel delen (aantal, hoogte, dikte, kromming, kleur) en bladeren (aantal, grootte, breedte, hoek). Ferns voegen leaflet-paren, leaflet-zwaai en frond-boog toe; grass voegt aantal bladen en boog toe.

Een bloem is optioneel op elk van hen: kroonbladen, kroonbladrijen, lengte, breedte, curl, tipscherpte, bloei, kernafmeting, en drie kleuren: kroonblad, kroonbladtip en kern, met translucentie en ruwheid voor hoe licht door het blad valt. Voeg er één toe aan de scène, strooi er veel, of exporteer als GLB.

Rock Generator#

Drie soorten: rock, stone, cliff, in drie stijlen: realistic, toon, of low poly met een omtreklijn.

De vorm is ruis over een bol: schaal, sterkte, octaves, persistence, warp en een ridged-optie, plus strata met een eigen frequentie en facet cuts met diepte en scherpte voor hoekige steen. Radius, detail, afplatting, vormvariatie en een platte onderkant bepalen het silhouet, en vier erosiepresets: fresh, weathered, natural, eroded, verschuiven alles tegelijk.

Het oppervlak heeft kleurvariatie, mineraaladers, korstmos en mos, een detailtextuur met tiling en sterkte, triplanaire menging en parallaxreliëf. Standaard wordt een meegeleverd Stone-materiaal gebruikt; stuur een materiaal vanuit Matter naar de Engine om het te overschrijven.

Kitbash, dezelfde bibliotheek als Sculpt#

Kitbash wordt gedeeld met Sculpt: dit paneel en Edit Forge van Sculpt lezen uit één bibliotheek. Een onderdeel dat daar is gebouwd, wordt hier geplaatst, en een onderdeel dat hier is beschilderd kan worden teruggezet in de bibliotheek.

Wat de scène opslaat, is het onderdeel en zijn afmetingen, niet de vertices: dat is waarom een gekitbashd gebouw bijna niets kost in het bestand en later kan worden bijgewerkt vanuit de bron.

Bewapen een onderdeel uit de catalogus en elke linkerklik plaatst het. Drie snapmodi bepalen waar het landt: on terrain (onderdelen volgen de grondhoogte eronder), on water (het bouwvlak ligt op waterniveau), en snap to sockets (richt een verbindingspunt op een geplaatst onderdeel en het nieuwe onderdeel draait om ermee te matchen). Een keten groeit vanaf het vrije uiteinde, bezette sockets vallen af als kandidaat, en elke klik is zijn eigen undo-stap. Ctrl/Cmd blijft gereserveerd voor selectie en Alt voor rotatie. Collections bewaren hun bron en versie, zodat een exemplaar kan worden bijgewerkt wanneer het origineel verandert.

De andere editors#

De wereldeditors vullen een scène; deze editors geven hem een interface, een kaart, zijn inhoudstabellen en de instrumenten om te controleren wat het kost.

De HUD-editor#

Tools → Editors → UI. Zes tabbladen: Templates, Elements, Layers, Preview, Style en Script, boven een voorvertoning die schakelt tussen drie apparaatformaten: desktop 960×540, tablet 768×432, mobiel 375×667.

Elementen komen in drie groepen (Display, Data, Input) en nestelen: panel en flex bevatten kinderen, dus het tabblad Layers is een echte boom in plaats van een platte lijst. De geschiedenis gaat vijftig stappen terug.

⚠️ Het tabblad Style is CSS-achtig, en dat verschil is belangrijk. De HUD wordt getekend op het canvas door Babylon's GUI, en echte CSS bereikt het niet. De regels die u hier schrijft, worden vertaald naar GUI-eigenschappen; de selectors zijn #name voor één element, .type voor een soort (.text, .panel) en * voor alles.

Het tabblad Script is de andere manier om er een te bouwen: de ui.*-API, createText, createPanel, createProgress, createButton, met twee manieren om het uit te voeren. Build Layout voert het uit op ontwerptijd en laat u met echte elementen die u met de hand kunt bijsturen; Run Live voert het uit in het spel.

Twee verbindingen naar buiten: HUD-artwork opent in Inkwell of Vectra en wordt teruggekoppeld in plaats van gekopieerd, en een Vectra-document kan worden geïmporteerd als HUD-elementen. Het minimap-element staat op zichzelf, met bereik, raster, en markers voor speler, vijanden, bondgenoten, items en doelen.

De tilemap-editor#

Elf gereedschappen: brush, eraser, fill, rectangle, select, eyedropper, stamp, autotile, prop, zone en path, op vier kaartprojecties: orthogonal, isometric, staggered isometric en hexagonal.

Autotiling levert vier templates, en het getal in elke naam is het aantal tiles dat het verwacht: Blob 47 (volledige hoeken en randen), Wang 16 (op randen gebaseerd), Simple 4 (NSEW), en RPG Maker A2 (48 tiles, compatibel met kaarten die daar zijn gemaakt).

Boven de tiles zelf liggen twee lagen. Zones schilderen gameplay- betekenis: buildable, water, forest, road, farm, residential, commercial, blocked, en props plaatsen objecten per categorie: trees, rocks, buildings, vegetation, water, paths. Kaarten leven in de eigen database van de browser, dus een niet-opgeslagen kaart overleeft een herlaad.

Inventory, datatabellen en dialogen#

De drie editors waarmee een game inhoud kan hebben zonder dat die inhoud in code zit.

Inventory bewerkt een catalogus en past hem toe op de scène. Een item draagt acties, en een actie is een trigger: use, equip, unequip, plus één van acht typen: message, heal, damage, grant, remove, event, toast, scene. Het paneel zelf heeft drie lay-outs (grid, list, compact), drie uiterlijkpresets (graphite, midnight, warm), en vier visuele slots: background, slot, equipment, tooltip, die voor een echte herschildering in een andere module opengaan.

Data tables zijn getypeerd: een kolom is text, number, bool of ref. CSV gaat erin en komt eruit. Elke bewerking loopt via pure functies, en dat is wat de tabel die de export wegschrijft identiek houdt aan de tabel die de build leest.

Dialogue trees zijn nodes met een spreker en een tekstregel. Een node gaat ofwel verder naar één next, of vertakt in choices, elk met een eigen tekst en een eigen bestemming; de vertakkingsschakelaar is de enige structurele keuze in de editor.

Animatie en camera#

Cinematic Sequencer bouwt sequenties met een duur en een loop-vlag, één track per entiteit, en keyframes vastgelegd op de afspeelkop: Add Key neemt de huidige waarde van de entiteit in plaats van u te vragen die in te typen. De graph editor eronder toont tijd tegen voortgang, met ronde handvatten voor easing: de helling is de snelheid. Shots hebben hun eigen duur, en een Cinemascope-kadrering (1.422:1) is beschikbaar voor de letterbox.

Camera Tools dekt FOV, positie, doel, modus en snelheid, plus bookmarks voor de standpunten waar u steeds op terugkomt, en cameralagen.

Audio#

De Audio Manager bevat audio-events, tracks en een mixer met kanalen en categorieën. Per-bron-effecten zijn een low-pass, een high-pass en een reverb send; een random-modus kiest tussen meerdere clips zodat een herhaald geluid niet meer als een loop leest. Scrubben speelt audio af terwijl u de afspeelkop sleept.

De profiler#

Een frame-uitsplitsing, geen framecounter: camera-render, mesh-evaluatie, particles, sprites en shader-compilatie, elk gemarkeerd als echt of geschat, zodat een getal dat uit een meting komt nooit wordt aangezien voor een getal dat uit een model komt. Tellers ernaast: meshes en actieve meshes, lichten, camera's, physics bodies.

Opnemen is expliciet, en eindigt in een lijst Issues in plaats van een grafiek om te interpreteren: low FPS, high draw calls, high triangles, high memory, tegenover de doelframerate die u instelt.

Een scène bouwen#

Entiteiten#

De viewport van Engine, met de gizmo op de geselecteerde entiteit

Een nieuwe scène begint met een Main Camera, een Directional Light, een Skybox en een Ground Plane.

De scenegraaf, met de vier entiteiten waarmee een nieuwe scène begint

Wat u kunt toevoegen: Empty, Cube, Sphere, Cylinder, Plane, Light, Camera, Script, Mesh, plus twee families die al kant-en-klaar aankomen:

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

De scenegraaf doorzoekt, filtert op type, en voegt toe, dupliceert of verwijdert; entiteiten nestelen, en herouderen is een kwestie van slepen. Plaatsing heeft snapping en een scatter brush om grond snel te bevolken.

De inspector#

Transform (positie, rotatie, schaal), een schakelaar Enabled, en de componenten van de entiteit: hier toegevoegd, geconfigureerd en verwijderd, met Add Script onderaan. Selecteer meerdere entiteiten en de inspector schakelt over naar batchbewerking, zodat één veldwijziging op ze allemaal terechtkomt.

De console#

Niet alleen een log. Hij filtert op niveau (all, logs, info, warning, error), koppelt een bericht terug aan de entiteit die het veroorzaakte, en heeft een expression prompt: typ een expressie, Enter voert hem uit tegen de live scène, pijltjestoetsen lopen door de geschiedenis.

Er gedrag aan geven#

Drie routes, en ze bestaan naast elkaar.

Scripts#

JavaScript met lifecycle-hooks, en een eigen referentie:

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

Botsingen en triggers vuren zowel in 2D als in 3D, en elke kant ontvangt zijn eigen contactnormaal: other.contact.normal wijst van de andere entiteit naar deze. Dat is wat een script het verschil laat zien tussen "ik ben erop geland" en "het is op mij geland": een platformer-stomp leest other.contact.normal.y > 0.5.

De scripteditor#

F2, of Add Script op een entiteit. Een Monaco-editor met tabbladen, meerdere scripts tegelijk open, elk bewaard in de eigen database van de browser in plaats van in het projectbestand, zodat een niet-opgeslagen buffer een herlaad overleeft.

Vijf dialecten, één programma. De taalschakelaar biedt JavaScript, BASIC, Python, C# en Rust. Wat het doet, is niet wat het lijkt te doen: JavaScript is de bron van waarheid, en de andere vier zijn views, getranspileerd vanuit de opgeslagen JS. Overschakelen van Python naar Rust vertaalt geen Python; het gaat terug naar de JS waaruit de Python is gegenereerd en vertaalt die. Vertaling in meerdere stappen is wat een programma corrumpeert, en de editor weigert dat te doen.

Dertien templates in vijf categorieën, elk gelabeld met een moeilijkheidsgraad:

CategorieTemplates
Basicsleeg script met lifecycle-stubs
Movementauto-rotate · WASD · asgebaseerde 3D-beweging · fysica-sprong met grond-detectie · third-person-camera die volgt
Gameplaytriggerzone · gezondheidsbalk met schade en genezing · getimede spawner
AIpatrouille met nabijheidsalarm voor de speler
AdvancedVerse-achtige asynchrone cutscene · gestructureerde concurrency · volledige API-oppervlaktest

De character-controllerpresets en de game-starterprops (pickup, hazard) staan in dezelfde lijst, wat de praktische manier is om een werkende controller op een geïmporteerd personage te zetten.

Draaien en debuggen. F5 voert uit, F9 zet een breakpoint. De debugger pauzeert op een regel, stapt één frame verder, en toont live waarden via watch-expressies. Script Lab voert een programma uit zonder dat er enige entiteit aan gekoppeld is: een schrijfblok voor de API, geen component op een object.

Naast de code: een API-referentie, een symbolenlijst voor het open bestand, en een snippetbibliotheek met favorieten en recente items. Ctrl+S bewaart, Ctrl+F zoekt, Ctrl+H vervangt, en de editor heeft acht thema's.

Blueprints en gedragingen#

Een visuele graaf, een bibliotheek met kant-en-klare gedragingen, en een toestandsmachine bovenop de gedragsstapel.

De graaf heeft 267 nodes in tweeëntwintig groepen: Math, Scene, Entity, Animation, Flow Control, String, Events, Physics, UI, Array, Vector, Transform, Debug, Input, Utility, Game, Boolean, Camera, Tween, Variables, Audio en de 2D- en 3D-families. Drie eigenschappen scheiden ze, en daaruit is de graaf opgebouwd: 17 event-nodes starten uitvoering, 117 pure nodes berekenen een waarde zonder bijeffect en zonder uitvoeringspin, en 9 latente nodes ronden later af: dat zijn de nodes die een vertraging of een tween uitdrukbaar maken zonder een eigen toestandsmachine.

Vier gereedschappen: select V, pan H, comment C, reroute R, op een canvas dat zoomt van 0,1× tot 3× met een minimap. Variabelen komen in zes typen: boolean, integer, float, string, vector3 en object. De beschrijving van elke node staat op de tooltip, de enige plek waar een bibliotheek van dat formaat zichzelf kan uitleggen.

De toestandsmachine#

Een eigen paneel, en met opzet niet dat van de Animator: de voorwaarden van de Animator zijn een platte enum met handgeschreven UI per geval, terwijl deze gestructureerd zijn en over de wereld gaan.

Zeven voorwaarden, en elk is een vraag over de scène: sees (een getagd doelwit binnen bereik, optioneel binnen een hoek en in zichtlijn), lost (geen doelwit meer gedurende N seconden), distance tegen een drempel, health, message received, timer (tijd doorgebracht in de huidige toestand), en flag (een waarde op het gedeelde blackboard). Twee combinators, and en or, staan allebei vermeld, ook al bestond or impliciet al: twee overgangen naar dezelfde toestand vormen een or, maar "hij ziet me EN ik heb nog gezondheid" had geen vorm.

⚠️ Health wordt vergeleken als fractie van het maximum, nooit als absolute waarde. Een drempel van "onder 30 HP" overleeft geen herbalanceringsronde; "onder 0,3" wel.

Bij het binnengaan of verlaten van een toestand, vier effecten: send een bericht, set een blackboard-sleutel, play een animatieclip, of vuur een named effect. Geen van deze verplaatst iets; beweging blijft bij de gedragingen, en de machine bepaalt welk gedrag actief is.

Een overgang kan starten vanaf *, wat elke toestand betekent. De validator geeft de lijst van problemen terug in plaats van te crashen op het eerste, zodat een halfgeschreven machine nog steeds tekent en u alles wat fout is in één keer ziet. Nodeposities maken deel uit van de data: een graaf waarvan de lay-out buiten de scène leeft, komt door elkaar geschud terug voor de volgende persoon die hem opent.

BASIC#

De viewportmodus TXT is een klassieke BASIC-omgeving met meegeleverde demoprogramma's, en de taal heeft een eigen referentie. Het is hier een echte taal, geen speeltje: multi-file-modules (#INCLUDE), getypeerde numerieke waarden (signed en unsigned 8/16/32/64-bit, float32 en float64), geneste records, objectmethoden met SELF, referenties (REF/BYREF), gestructureerde TRY/CATCH/FINALLY, voorwaardelijke compilatie, coroutines, getypeerde handles, en WebGPU compute met storage buffers en ruwe WGSL.

OPTION EXPLICIT is opt-in; klassieke impliciete variabelen blijven de standaard, zodat geïmporteerde programma's blijven werken.

Spelen en uitleveren#

Play#

Play, Pause, Stop. Bij stop meldt een banner wat de sessie heeft veranderd, zodat een aanpassing in play-modus nooit stilzwijgend behouden of stilzwijgend verloren gaat. Sessies kunnen worden opgenomen en afgespeeld in een bugrapport, en scenario-bookmarks laten een playtest starten vanuit het midden van een level.

Build#

Build neemt een gametype (gedetecteerd uit de scène, of met de hand ingesteld: sidescroller/platformer, first/third person, tekstgebaseerd) en een doel.

  • Web: WebGPU met een WebGL-terugval, optioneel WebXR (VR/AR), minificatie, een FPS-teller, en een optie embed assets die één enkel bestand oplevert.
  • Desktop en mobiel: native builds. De scène wordt geëxporteerd als data (scene.glb + scene.json) en gecompileerd via een gegenereerd Bevy-project (Rust); scripts draaien daar ongewijzigd op een ingebedde QuickJS-runtime.

Compressie is per as instelbaar: algoritme, texturen, meshes, met een kwaliteitspreset die ze samenbindt. Builds worden bewaard in een geschiedenis met hun grootte (origineel tegenover gecomprimeerd) en kunnen later opnieuw worden gedownload.

Een native build bevat alleen wat de exporter weet te exporteren. glTF vangt geen custom shaders, thin instances, de procedurele hemel of post-processing, dus een runtimesysteem dat niet naar de Bevy-kant is overgezet, ontbreekt in een desktop- of mobiele build, terwijl het op het web perfect oogt. Controleer een native build voordat u erop vertrouwt.

Multiplayer#

Het paneel Multiplayer room verbindt een scène met een Colyseus-gameserver. Een gratis gedeelde testserver is beschikbaar zonder account en zonder configuratie; een project kan ook een eigen server krijgen. De room wordt geïdentificeerd met een deelcode die u voor uzelf kunt houden of kunt uitdelen.

Bestanden die het leest en schrijft#

Native formaat.engine
Import.glb, .gltf, .obj, .fbx, .png, .svg, .mp4, .webm, .mov, .scene
Exporteen webbuild, een native desktop-/mobiele build, scene.glb + scene.json

Werk naar andere studio's sturen#

Accepteert meshes van Sculpt, Retopo en Pigment, complete scènes van Render, pixel art, animaties, PBR-materiaalsets van Matter, 2D-rigs, videoprojecten, afbeeldingen, vectorafbeeldingen, en Vectra-objecten.

Produceert 2D-rigs.

Een Vectra-schermontwerp komt aan als structuur, niet als een plaatje. Het wordt een HUD-hiërarchie die de Engine kan opbouwen en scripten: het verschil tussen een ontwerp dat u kunt aansluiten en een screenshot van een ontwerp.

Sneltoetsen#

Cmd/Ctrl + K bereikt de eigen commando's van Engine via het palet, naast de globale. Engine heeft ook een eigen, doorzoekbaar sneltoetsenpaneel in zijn instellingen; het heeft veel meer dan op de sneltoetsenpagina past.

Beperkingen en veelvoorkomende problemen#

  • Een lege viewport is meestal de browser, niet de scène. Engine heeft WebGL 2 nodig; controleer of hardwareversnelling aanstaat.
  • Systems en Tools delen één lade. Als een paneel "verdwenen" is, zit het waarschijnlijk in de andere.
  • De console is de eerste plek om te kijken, niet de laatste: hij koppelt fouten terug aan de entiteit die ze veroorzaakte.
  • Een component die in play-modus is toegevoegd, overleeft stop misschien niet. Lees de banner die verschijnt wanneer u stopt.
  • Fysica verschilt tussen 2D en 3D in de solver, ook al zijn de scriptcallbacks hetzelfde. Een rustend contact in 2D wordt gedetecteerd met een huid van 2 mm, omdat de solver penetratie exact tot nul terugbrengt voordat detectie draait.