13 — Feature List
Pipeline detail per feature: 10 — Feature Traces · Runtime API: 14 — API Guide · Behavior authoring: LLM_SCRIPTING_CONTEXT.md
Everything the kit can author in Blender and consume at runtime, in one place. Use this page to answer “does the kit support X?” and “where do I click?” Follow the trace link when you need the step-by-step file chain.
I want to…
| Goal | Start here |
|---|---|
| See how one feature flows Blender → game | 10 — Feature Traces (pick a card) |
| Write or debug a behavior script | 14 — API Guide · 05 — Scripting |
| Understand load order | 04 — Load Pipeline · trace-load |
| Understand the frame loop | 02 — Runtime Basics · trace-runtime-loop |
| Fix export warnings | Validator · trace-validate |
| Iterate in Blender (Ctrl+S) | 09 — Workflow · trace-livelink |
Where you click in Blender
| Panel | Scope | What it controls |
|---|---|---|
| Babylon Object (viewport N-panel) | Selected object | Component stack (collider, script, audio, GUI, …), light/camera/animation child panels |
| Babylon Scene (viewport N-panel) | Whole scene | Environment, fog, atmosphere, post-processing, input actions, export, Live Link, debug build, large-world rendering |
| Properties › Material › Babylon | Material datablock | NME JSON, Scan NME, Extract Textures…, texture/input/gradient overrides |
Object components
Each row in the Babylon Object Components list becomes one entry in entities[].components[] in the manifest (when enabled). Multiple rows of the same type are allowed where noted.
| Component | What it does (plain) | Runtime result | Trace |
|---|---|---|---|
| TAG | Text label for queries and Event Message filters | entity.tag, attachment row | feature trace |
| SCRIPT | Attach a TypeScript behavior + tunable @exposed fields | Behavior instance on entity.behaviors | feature trace · trace-exposed |
| COLLIDER | Collision shape (box, sphere, convex, mesh, …); optional Event Messages | Part of one PhysicsBody per entity (compound if several) | feature trace · trace-physics |
| RIGIDBODY | Mass, friction, dynamics (static / dynamic / animated) | Same body as colliders on that object | feature trace |
| CONSTRAINT | Physics joint to another body (hinge, slider, 6DoF, …) | Havok constraint on level.constraints | feature trace · trace-constraint |
| CAMERA | Replace exported camera with orbit / follow / geospatial controls | Typed Babylon camera; may become level.activeCamera | feature trace · trace-cameras |
| AUDIO | Sound file (2D or 3D spatial) | StaticSound on entity.sounds | feature trace · trace-audio |
| GUI | 2D HUD or mesh-projected UI from GUI Editor JSON | AdvancedDynamicTexture | feature trace · trace-gui |
| PARTICLE | Particle or Node Particle system JSON | IParticleSystem on entity | feature trace · trace-particles |
| MSDF_TEXT | Crisp 3D labels (bmfont JSON + atlas PNG) | TextRenderer; draws after main pass | trace-msdfText · 11 — UI |
| RENDERING_GROUP | Babylon draw-order group (0–3); optional propagation to owned meshes / child entities | mesh.renderingGroupId (+ particle systems on entity) | feature trace · 07 — Rendering |
| LAYER_MASK | Babylon visibility bitmask for multi-camera / light filtering | mesh.layerMask on owned meshes | feature trace · 07 — Rendering |
| COLLISION_LAYER | Named Havok collision layer; optional propagation to owned colliders / child entities | PhysicsShape.filterMembershipMask / filterCollideMask | feature trace · 06 — Physics |
| REFLECTION_PROBE | Local cubemap for nearby geometry inside an influence volume (not a sky replacement) | ReflectionProbe on entity; skybox keeps IBL | 07 — Rendering |
| GUI3D_BUTTON | 3D button plate (text or image) | Control3D; click → OnMessage | feature trace · trace-gui3d |
| GUI3D_HOLO | Holographic button | Control3D | |
| GUI3D_TOUCH_HOLO | Holographic button with near-touch | Control3D | |
| GUI3D_MESH | This mesh becomes clickable | Control3D | |
| GUI3D_STACK | Row/column layout panel for child controls | Control3D panel | |
| GUI3D_SPHERE | Arrange controls on a sphere | Control3D panel | |
| GUI3D_CYLINDER | Arrange controls on a cylinder | Control3D panel | |
| GUI3D_PLANE | Arrange controls on a plane | Control3D panel | |
| GUI3D_SCATTER | Randomized scatter layout | Control3D panel |
Auto-derived per object (no component row)
These come from ordinary Blender objects and export blocks on the entity — you do not add a component for them.
| Blender object | Manifest block | Runtime | Trace |
|---|---|---|---|
| Lamp | light (+ optional shadow) | Babylon light; may cast shadows | lights · trace-lights |
| Camera | camera | FreeCamera (+ optional CAMERA component override) | camera |
| NLA strips | animation | Autoplay chosen clip after load | animation |
| Mesh + material | — (geometry in glb) | Imported mesh; optional NME override via material | materials |
Scene-wide settings (scene block)
Edited in Babylon Scene; serialized into the manifest’s scene object (not per-entity components).
| Feature | What it does | Prose | Trace |
|---|---|---|---|
| Clear / ambient color | Background and fill light | 07 — Rendering | trace-load |
| Environment / skybox | IBL from World texture or default studio HDR | 07 — Rendering | scene-settings |
| Fog | Linear, exponential, or exponential² | 07 — Rendering | — |
| Atmosphere | Physical sky (replaces env skybox when on) | 07 — Rendering | feature trace · trace-atmosphere |
| Post-processing | Bloom, DOF, SSAO, tone mapping, LUTs, … | 07 — Rendering | feature trace · trace-post |
| Input Actions | Maps, actions, bindings + scene default map | 12 — Input | feature trace · trace-input |
| Collision Layers | Named layer list + N×N collision matrix (Unity-style) | 06 — Physics | feature trace |
| Light budget / clustering | Forward vs clustered punctual lights | 07 — Rendering | trace-lights |
| Freeze shadows | Bake shadow maps once (static worlds) | 07 — Rendering | trace-shadows |
| Large World Rendering | Floating-origin engine + Havok region radius | 07 — Rendering | 02 — Runtime Basics |
Material-level (NME)
| Feature | Blender | Manifest | Trace |
|---|---|---|---|
| Node materials | Properties › Material › Babylon — link NME JSON, extract embedded textures, scan textures/inputs/gradients | Top-level materials[] (matched by material name on meshes; JSON may embed data: textures; optional inputs[] and gradients[]) | feature trace · trace-materials |
Export artifacts
| File / folder | Contains |
|---|---|
level.glb | Meshes, hierarchy, standard materials, lights, cameras, animation clips, GUIDs in node extras |
level.scene.json | Components, scene block, per-entity light/camera/animation, materials[], debug flag (schema v4) |
audio/, gui/, env/, post/, particles/, materials/, fonts/ | Sidecar media referenced from the manifest |
Workflow & tooling
| Feature | What it does | Trace |
|---|---|---|
| Export | Validate + write glb + manifest + sidecars | Blender trace-export |
| Validator | Pre-export warnings (missing scripts, bad refs, physics traps, …) | trace-validate |
| Live Link | Ctrl+S re-export + browser reload | feature trace |
| Debug Build | Gates collider overlay (C) and inspector (I) | feature trace |
| Collider / CoM / probe preview | Viewport wireframes, center-of-mass cross, and reflection-probe influence volume | collider preview · CoM preview |
Scaffolder (npm run create) | New app from playground template | 09 — Workflow |
| Babylon Launcher | Desktop hub for editors and docs | Launcher docs |
Runtime-only concepts (not authored in Blender)
| Concept | Meaning | API |
|---|---|---|
| Entity | One exported object + its runtime attachments | API Guide — Entity |
| Behavior | Your TypeScript class from a SCRIPT component | API Guide — Behavior |
| Attachment | One applied component row (data + runtime object) | API Guide — Attachments |
| Level | Container for all entities, scene subsystems, frame loop | API Guide — Level |
| OnMessage | String messages from Event Messages, GUI, or SendMessage | trigger trace |