Skip to content

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.

  1. Go to Management > Entity Types in the world sidebar.
  2. Click Create Entity Type.
  3. Enter a name (e.g. “Spell”, “Vehicle”, “Deity”).
  4. Add fields to define what data this entity type captures.
  5. Configure layout rules for how the form and detail page are arranged.
  6. Optionally set behaviour rules for automation and validation.
  7. Click Save.

Fields define the data each entity can hold. The system supports a wide range of field types:

Field typeDescriptionExample
stringShort text inputName, title, epithet
textMulti-line text areaBackstory, notes
rich_textTipTap rich text editorFull description with formatting
numberFloating-point numberPopulation, power level
integerWhole numberAge, floor count
decimalArbitrary precision decimalCoordinates, measurements
booleanYes/no toggleIs alive, is capital city
Field typeDescriptionExample
dateDate onlyFounding date
datetimeFull timestampExact time of event
temporalWorld calendar value (day + time of day)Date of birth in your calendar
Field typeDescriptionExample
enum / selectSingle selection from optionsAlignment, rarity, status
multi_selectMultiple selectionsLanguages spoken, abilities
tagsTag array with tag input UIKeywords, categories
Field typeDescriptionExample
entity_referenceLink to a single entityHomeland, current ruler
entity_referencesLinks to multiple entitiesAllies, known associates
location_referenceLink to a location entityBirthplace, headquarters
media_referenceLink to a media fileTheme music, voice clip
Field typeDescriptionExample
imageSingle image uploadPortrait, icon, symbol
image_galleryMultiple imagesCharacter expressions, location views
audioAudio fileTheme music, ambient sound
voiceVoice profileCharacter voice sample
Field typeDescriptionExample
jsonArbitrary JSON objectCustom structured data
arrayTyped arrayList of items
coordinateX/Y positionMap placement
colorHex colour valueFaction colour, aura colour

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”)

The layout system controls how fields are arranged in forms and detail views. It uses a three-level hierarchy:

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.)

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

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 add dynamic logic to your entity types:

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.

Automatically compute field values:

Calculation typeDescriptionExample
FormulaMath expression from other fieldsbase_attack + strength_bonus
LookupCopy value from another field or related entityCopy homeland from parent
AggregationSum/count/avg/min/max of related valuesCount of member entities
TemplateString template{first_name} {last_name}
FunctionNamed function executionCustom calculation logic

Enforce constraints beyond basic field validation — custom rules that check relationships between fields or external conditions.

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

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.