Entity Type Creation
Entity types define the structure of your world’s entities. Each type determines what fields an entity has, how its form is laid out, and what automated behaviours apply.
Creating an entity type
Section titled “Creating an entity type”- Go to Management > Entity Types in the world sidebar.
- Click Create Entity Type.
- Enter a name (e.g. “Spell”, “Vehicle”, “Deity”).
- Add fields to define what data this entity type captures.
- Configure layout rules for how the form and detail page are arranged.
- Optionally set behaviour rules for automation and validation.
- Click Save.
Field types
Section titled “Field types”Fields define the data each entity can hold. The system supports a wide range of field types:
Basic types
Section titled “Basic types”| Field type | Description | Example |
|---|---|---|
| string | Short text input | Name, title, epithet |
| text | Multi-line text area | Backstory, notes |
| rich_text | TipTap rich text editor | Full description with formatting |
| number | Floating-point number | Population, power level |
| integer | Whole number | Age, floor count |
| decimal | Arbitrary precision decimal | Coordinates, measurements |
| boolean | Yes/no toggle | Is alive, is capital city |
Date and time types
Section titled “Date and time types”| Field type | Description | Example |
|---|---|---|
| date | Date only | Founding date |
| datetime | Full timestamp | Exact time of event |
| temporal | World calendar value (day + time of day) | Date of birth in your calendar |
Selection types
Section titled “Selection types”| Field type | Description | Example |
|---|---|---|
| enum / select | Single selection from options | Alignment, rarity, status |
| multi_select | Multiple selections | Languages spoken, abilities |
| tags | Tag array with tag input UI | Keywords, categories |
Reference types
Section titled “Reference types”| Field type | Description | Example |
|---|---|---|
| entity_reference | Link to a single entity | Homeland, current ruler |
| entity_references | Links to multiple entities | Allies, known associates |
| location_reference | Link to a location entity | Birthplace, headquarters |
| media_reference | Link to a media file | Theme music, voice clip |
Media types
Section titled “Media types”| Field type | Description | Example |
|---|---|---|
| image | Single image upload | Portrait, icon, symbol |
| image_gallery | Multiple images | Character expressions, location views |
| audio | Audio file | Theme music, ambient sound |
| voice | Voice profile | Character voice sample |
Complex types
Section titled “Complex types”| Field type | Description | Example |
|---|---|---|
| json | Arbitrary JSON object | Custom structured data |
| array | Typed array | List of items |
| coordinate | X/Y position | Map placement |
| color | Hex colour value | Faction colour, aura colour |
Field definition options
Section titled “Field definition options”Each field has additional configuration:
- Constraints: required, max_length, min/max_value, pattern (regex), allowed options
- Description: Help text shown under the field
- Placeholder: Example text shown in empty inputs
- Default value: Pre-filled when creating a new entity
- Group: Logical grouping for layout purposes (e.g. “basic_info”, “combat_stats”)
Layout system
Section titled “Layout system”The layout system controls how fields are arranged in forms and detail views. It uses a three-level hierarchy:
Tab groups
Section titled “Tab groups”The outermost container. Each tab appears as a separate section in the entity form:
- Tab ID and title — e.g. “overview”, “Overview”
- Icon — displayed on the tab
- Sections — array of section layouts within the tab
- Visible contexts — which views this tab appears in (form, detail, card, list, etc.)
Sections
Section titled “Sections”Groups of fields within a tab:
- Title and optional description
- Collapsible — can be collapsed/expanded
- Columns — 1 to 4 column layout for fields
- Background — default, subtle, or accent styling
Field layout
Section titled “Field layout”Per-field display configuration:
- Show in form / detail / card / list — control visibility per view context
- Width — full, half, third, or quarter of the section width
- Order — display position within the section
- Read only — prevent editing
- Editor height — small, medium, large, or auto (for rich text fields)
Behaviour rules
Section titled “Behaviour rules”Behaviour rules add dynamic logic to your entity types:
Visibility behaviours
Section titled “Visibility behaviours”Control when fields are shown based on conditions:
- Field value — show a field only when another field has a specific value
- Entity subtype — show fields only for certain subtypes
- Feature flag — show fields only when a world feature is enabled
- User role — show fields only for editors or owners
Conditions can be combined with AND or OR logic.
Auto-calculate behaviours
Section titled “Auto-calculate behaviours”Automatically compute field values:
| Calculation type | Description | Example |
|---|---|---|
| Formula | Math expression from other fields | base_attack + strength_bonus |
| Lookup | Copy value from another field or related entity | Copy homeland from parent |
| Aggregation | Sum/count/avg/min/max of related values | Count of member entities |
| Template | String template | {first_name} {last_name} |
| Function | Named function execution | Custom calculation logic |
Validation behaviours
Section titled “Validation behaviours”Enforce constraints beyond basic field validation — custom rules that check relationships between fields or external conditions.
Subtypes
Section titled “Subtypes”You can add subtypes to an entity type for finer categorisation:
- Subtypes appear in the subtype picker when creating entities of this type
- Each subtype has a value, label, description, and optional icon
- Visibility behaviours can show/hide fields based on the selected subtype
- Subtypes help with filtering in lists and graph views
Domains and seeding
Section titled “Domains and seeding”Entity types are organised into domains (core, economic, magical, cultural, etc.). The seeding_conditions on each type definition control when it becomes available:
- requires_domains — the domain must be enabled in the world
- requires_features — specific feature flags must be active
- world_config_keys — specific world configuration keys must be set
This means economic entity types (Resource, Market, Facility) only appear when the economic domain is enabled.