Skip to content

Entities & Components

A Lumina world is a flat set of entities. An entity is just an id, it holds no data of its own. Everything about it, its position, its mesh, its behavior, lives in components attached to it. There is no “game object” base class; you compose an entity from the components it needs.

Create an entity from the Scene Outliner (the + button) or by right-clicking in the viewport. You can:

  • Create an empty entity,
  • Create one with a single component already on it,
  • Create a primitive (cube, sphere, and so on), which is an entity with a mesh,
  • Drag an asset (mesh or prefab) from the Content Browser into the scene.

Every entity is created with two components you do not manage by hand:

  • Transform, its position, rotation, and scale.
  • Name, the label shown in the Outliner (rename from the right-click menu).

The Transform’s Location, Rotation, and Scale are edited in the Details panel or with the viewport gizmo. These values are local, relative to the entity’s parent (or to the world if it has no parent). Lumina is left-handed and Y-up, in meters, see Worlds & Coordinates.

To parent one entity to another, drag its row onto another row in the Outliner. A child’s transform is then relative to its parent, so moving the parent moves the child.

Select an entity, then click the + button in the Details panel header to add a component. Components are grouped by category and searchable. Once added, a component’s properties appear in Details, generated from reflection, and you edit them there. Property metadata drives the widgets: color pickers, value ranges and units, asset pickers, and an entity-reference picker for fields that point at another entity.

You will not need most of these at first. Browse the full list in the Add Component menu.

Rendering

ComponentDoes
Static MeshRenders a static mesh asset.
Skeletal MeshRenders and animates a rigged mesh.
TextDraws a world-space text string.
BillboardA camera-facing textured quad.
DecalProjects a material onto surfaces.
Post ProcessA volume that blends post-process settings.

Lights & environment

ComponentDoes
Directional / Point / Spot LightThe three light types.
Sky LightAmbient and image-based fill light.
EnvironmentSky background and image-based lighting.
Exponential Height FogHeight fog and volumetric light shafts.

Camera

ComponentDoes
CameraA camera with field of view and post-process settings.
Camera FollowEases a camera toward and faces a target.
Spring ArmA third-person camera boom with collision.

Physics

ComponentDoes
Rigid BodyMakes the entity a physics body.
Box / Sphere / Capsule / Cylinder ColliderA collision shape.
Mesh ColliderCollision from mesh geometry.

Gameplay

ComponentDoes
ScriptAttaches a Luau script.
InputPer-entity gameplay input (see Scripting).
Audio Source / ListenerA positional sound, and the listener.
Rigid Body, characters, AI, particlesMovement, navigation, effects, and more.

You can define a brand-new component type from the editor. Create an Entity Component Type asset, open it, and add typed fields (bool, number, vector, string, asset reference, enum, and so on). The new type then shows up in the Add Component menu under the Data category and works like any built-in component, editable in Details and readable from scripts.

A prefab is a saved entity, with its children, that you can stamp into a world.

  • Create one by selecting entities, right-clicking, and choosing Create Prefab from Selected. Children are captured automatically.
  • Place one by dragging the prefab asset from the Content Browser into the viewport or onto an Outliner row.

Placed instances re-sync when you save the prefab, so editing the asset updates every instance, while each instance keeps its own placement. To turn an instance back into plain entities, right-click it and choose Detach from Prefab.