Leveldesign in Ryzom Core covers the data and configuration that defines the game world: creature and item data sheets, World Editor primitives that place and configure NPCs, fauna, deposits, and missions, the AI scripting language that drives NPC behaviour, and the localization system for translated text.
All game data — creatures, items, weather, deposits, AI actions, and more — is defined in Georges XML data sheets. A sheet is a form file (e.g. .creature, .sitem, .weather) containing structured data that conforms to a schema. The schema is defined separately using type (.typ) files for primitive value constraints and definition (.dfn) files for the form structure. Sheets are edited with the Georges Editor and loaded at runtime via the form loader or as packed sheets for performance.
The World Editor is used to place and configure all gameplay entities in the world using primitives. Primitives are organized in layers per continent, typically split by purpose:
| Primitive layer | Contents |
|---|---|
botobject_*.primitive |
Static decorations (crates, devices, Mektoub Packers) |
deposit_*.primitive |
Foraging zones |
staticfauna_*.primitive |
Fauna spawn groups with feed/rest areas |
task_*.primitive |
Mission giver NPCs and mission foraging zones |
urban_*.primitive |
Town NPCs: guards, merchants, trainers |
Each primitive file contains a tree of npc_manager → npc_zone → npc_group → npc_bot nodes that define where NPCs spawn, how they move, what they look like, and how they behave.
NPC behaviour is driven by an event/action system. When an event fires on a group (combat start, player interaction, timer, etc.), one or more action handlers execute. Actions range from simple commands (say, emote, spawn) to full AI script code blocks.
Events are conditions that trigger action handlers. There are 61 registered event types across state machines, timers, combat, death, player interaction, escort, variables, and outpost/spire systems.
Actions are what happens when an event fires. They include logic flow (if/else, random, switch), state changes, timers, behavioural commands, and AI script execution.
The code action type executes blocks of AI script, a C-like bytecode language with variables (float, $string, @context), control flow, user-defined functions, and over 150 native functions for controlling NPC behaviour, combat, spawning, player interaction, and inter-group communication.
Creature AI actions define combat behaviour: damage, spells, healing, and casting parameters. These are Georges sheets under leveldesign/game_elem/creature/.../aiaction.
Not to be confused with NPC Logic Action Types (event handler actions) or AIS actions (service-level commands).
The localization system handles both static client-side text (.uxt files with key-value pairs) and dynamic server-side text (phrase files with parameterized templates, conditional clauses for gender/plural agreement, and word files for noun declension). A diff-based translation workflow supports incremental updates across multiple languages.