World components
Every field below is derived from the engine’s own component registry — the same one the editor’s Details panel reads — so the types and defaults here are the values you get when you add the component, and they cannot drift from the code. The prose that explains how to use each one lives in the guides linked per entry.
Marker
A named point or region of gameplay interest — spawn point, waypoint, trigger zone — queryable like any component.
Explained in gameplay/markers.
| Field | Type | Default | Notes |
|---|---|---|---|
type | string | empty | |
properties | object | empty |
ParticleEmitter
A particle system: emission, lifetime, shape, forces, noise, colour and size over life, sub-emitters and trails.
Explained in world/particles.
| Field | Type | Default | Notes |
|---|---|---|---|
rate | number | 10 | Range ≥ 0. |
burstCount | number | 0 | Range ≥ 0, step 1. |
burstInterval | number | 1 | Range ≥ 0. |
duration | number | 5 | Range ≥ 0. |
looping | boolean | true | |
playOnStart | boolean | true | |
maxParticles | number | 1000 | Range ≥ 1, step 1. |
lifetimeMin | number | 5 | Range ≥ 0. |
lifetimeMax | number | 5 | Range ≥ 0. |
shape | enum | Cone | One of Point, Circle, Box, Cone, Sphere, Hemisphere. |
shapeRadius | number | 100 | Range ≥ 0. |
shapeSize | Vec3 | (100, 100, 0) | |
shapeAngle | number | 25 | |
speedMin | number | 500 | |
speedMax | number | 500 | |
angleSpreadMin | number | 0 | |
angleSpreadMax | number | 360 | |
startSizeMin | number | 100 | Range ≥ 0. |
startSizeMax | number | 100 | Range ≥ 0. |
endSizeMin | number | 100 | Range ≥ 0. |
endSizeMax | number | 100 | Range ≥ 0. |
sizeEasing | enum | Linear | One of Linear, EaseIn, EaseOut, EaseInOut. |
startColor | Color | #ffffff | |
endColor | Color | #ffffff00 | |
colorEasing | enum | Linear | One of Linear, EaseIn, EaseOut, EaseInOut. |
rotationMin | number | 0 | |
rotationMax | number | 0 | |
angularVelocityMin | number | 0 | |
angularVelocityMax | number | 0 | |
gravity | Vec3 | (0, 0, 0) | |
damping | number | 0 | Range ≥ 0. |
noiseStrength | number | 0 | Range ≥ 0. |
noiseFrequency | number | 0.01 | Range ≥ 0. |
noiseScrollSpeed | number | 0 | |
noiseOctaves | number | 1 | Range 1–8, step 1. |
texture | Asset<texture> | none | |
spriteColumns | number | 1 | Range ≥ 1, step 1. |
spriteRows | number | 1 | Range ≥ 1, step 1. |
spriteFPS | number | 10 | Range ≥ 0. |
spriteLoop | boolean | true | |
blendMode | enum | Additive | One of Normal, Additive, Multiply, Screen, PremultipliedAlpha, PmaAdditive, Lighten, Darken, Overlay, None. |
layer | enum (sortingLayers) | 0 | Range step 1. |
material | Asset<material> | none | |
simulationSpace | enum | World | One of World, Local. |
enabled | boolean | true | |
subEmitterTrigger | enum | Death | One of Death, Birth. |
subEmitterChance | number | 1 | Range 0–1. |
subEmitterInheritVelocity | number | 0 | Range 0–1. |
subEmitter | Entity | none | |
trailEnabled | boolean | false | |
trailWidth | number | 8 | Range ≥ 0. |
trailPoints | number | 6 | Range 2–12, step 1. |
trailMinDistance | number | 6 | Range ≥ 0. |
collisionEnabled | boolean | false | |
collisionFloor | number | 0 | |
collisionBounce | number | 0.5 | Range 0–1. |
collisionFriction | number | 0.1 | Range 0–1. |
collisionLifetimeLoss | number | 0 | Range 0–1. |
colorGradient | object | {"stops":[]} | |
sizeCurve | object | {"keys":[]} |
ParticleForceField
A field that pushes particles around — point, directional, vortex or drag.
Explained in world/particles.
| Field | Type | Default | Notes |
|---|---|---|---|
type | enum | Directional | One of Directional, Point, Vortex, Drag. |
strength | number | 200 | |
radius | number | 0 | Range ≥ 0. |
direction | Vec3 | (1, 0, 0) | |
falloff | boolean | true | |
enabled | boolean | true |
StreamedWorld
Declares the scene a streamed world and how big the cook cuts its cells.
Explained in world/streaming.
| Field | Type | Default | Notes |
|---|---|---|---|
cellSize | number | 1000 | Edge of one cell on the XZ plane. Range ≥ 1. |
Tilemap
A Tiled map asset projected into the scene; the engine derives one layer entity per map layer.
Explained in world/tilemaps.
| Field | Type | Default | Notes |
|---|---|---|---|
source | Asset<tilemap> | none |
TilemapLayer
One layer of tiles — its tileset, cell size, orientation, sorting and collision.
Explained in world/tilemaps.
| Field | Type | Default | Notes |
|---|---|---|---|
cellSize | Vec2 | (32, 32) | |
orientation | enum | Orthogonal | Grid layout: orthogonal, isometric, staggered, or hexagonal. One of Orthogonal, Isometric, Staggered, Hexagonal. |
hexSideLength | number | 0 | Hexagonal side length in px (0 = a regular pointy hex = tileHeight/2). Ignored unless orientation is Hexagonal. Range ≥ 0, step 1. |
staggerAxis | enum | Y | Stagger axis (staggered/hex): Y shifts rows, X shifts columns. One of Y, X. |
staggerIndex | enum | Odd | Which lines carry the half-cell shift (staggered/hex). One of Odd, Even. |
originOffset | Vec2 | (0, 0) | |
tileset | Asset<texture> | none | |
tilesetColumns | number | 1 | Range ≥ 1, step 1. |
renderLayer | enum (sortingLayers) | 0 | Range step 1. |
tintColor | Color | #ffffff | |
opacity | number | 1 | Layer transparency (0 = invisible, 1 = opaque). Range 0–1. |
parallaxFactor | Vec2 | (1, 1) | |
visible | boolean | true |
WorldPersistent
Keeps an entity's whole subtree out of the partition — it belongs to the persistent world.
Explained in world/streaming.
A tag — it carries no fields.
WorldStreamingSource
Asks for the places near it to exist; several sources are unioned.
Explained in world/streaming.
| Field | Type | Default | Notes |
|---|---|---|---|
prefetchRadius | number | 3000 | Cells this close are prepared, not shown. Range ≥ 0. |
loadRadius | number | 2000 | Cells this close are brought in. Range ≥ 0. |
unloadRadius | number | 3000 | Resident cells are kept until past this. Range ≥ 0. |
enabled | boolean | true |