Components Overview
Components are typed data containers attached to entities. They hold no behavior — all logic comes from systems and scripts. Razorbill ships with 28 built-in components across 8 categories.
Categories
Core
Fundamental components present on most entities. Full reference →
| Component | Description |
|---|---|
| Transform | Position, rotation, and scale in world space |
| CameraComponent | Camera projection settings (perspective or orthographic) |
Rendering
Visual representation and materials. Full reference →
| Component | Description |
|---|---|
| MeshComponent | References a mesh asset and material for rendering |
| SkinnedMeshComponent | Mesh with skeletal animation support |
| PBRMaterialComponent | Physically-based material (metallic/roughness workflow) |
| UnlitMaterial | Flat-color material without lighting calculations |
Physics
Physics simulation and collision. Full reference →
| Component | Description |
|---|---|
| Rigidbody | Dynamic physics body with mass and velocity |
| Collider | Collision shape (box, sphere, capsule, cylinder, convex hull) |
| CharacterController | Full-featured character movement with jumping, crouching, sprinting |
Lighting
Light sources for the scene. Full reference →
| Component | Description |
|---|---|
| DirectionalLightComponent | Infinite-distance parallel light (sun/moon) |
| PointLightComponent | Omnidirectional point light with falloff radius |
Scripting
Script attachment. Full reference →
| Component | Description |
|---|---|
| ScriptComponent | Holds script GUIDs and per-instance properties |
Animation
Animation playback and state machines. Full reference →
| Component | Description |
|---|---|
| AnimatorComponent | Animation controller with clip playback and locomotion blending |
| JointComponent | Physics joint connecting two entities (fixed, hinge, distance) |
Particles
GPU-accelerated particle effects. Full reference →
| Component | Description |
|---|---|
| ParticleEmitterComponent | GPU particle emitter for fire, smoke, sparks, and magic effects |
UI
Runtime UI system with layout, input, and rendering. Full reference →
| Component | Description |
|---|---|
| UICanvasComponent | Root of a UI hierarchy (screen-space, world-space, or render-to-texture) |
| UIRectTransformComponent | 2D positioning with anchors and pivots |
| UITextComponent | Text rendering with font, size, color, alignment |
| UIImageComponent | Image display with slicing, tiling, and fill modes |
| UIButtonComponent | Clickable button with state colors |
| UIPanelComponent | Background panel with border and corner radius |
| UISliderComponent | Draggable slider for numeric input |
| UIToggleComponent | Checkbox or switch toggle |
| UIProgressBarComponent | Fill-based progress indicator |
| UIInputFieldComponent | Text input with cursor, selection, and content validation |
| UIDropdownComponent | Dropdown selector with options list |
| UILayoutGroupComponent | Flexbox-style layout for child elements |
| UILayoutElementComponent | Per-element layout overrides (padding, flex, min/max size) |
World
World and terrain generation. Full reference →
| Component | Description |
|---|---|
| TerrainComponent | Procedural terrain with heightmap, biomes, and scatter rules |
Adding Components
Components are added through the AddComponent operation:
{
"op": "AddComponent",
"params": {
"entity_name": "Player",
"component_type": "Rigidbody",
"data": { "mass": 70.0 }
}
}
Or through the SetProperty operation to modify existing component values:
{
"op": "SetProperty",
"params": {
"entity_name": "Player",
"component_type": "Transform",
"property_path": "/position",
"value": { "x": 0, "y": 5, "z": 0 }
}
}