NewWorldMapData
Version support
Section titled “Version support”| Version | Status |
|---|---|
| v92 | Full |
| v90 | - |
| v86 | - |
NewWorldMapData.xml defines the game world map structure: worlds, continents (map regions), guards (geographic zones), sections (sub-zones like dungeons and towns), and NPC map markers.
The hierarchy is 4 levels deep: World > Continent/Guard > Section > Npc.
DSL support
Section titled “DSL support”Entity: newWorldMap
Operations: create, update, delete, upsert
File organization: SingleFile — WorldMap/NewWorldMapData.xml
Quick recipes
Section titled “Quick recipes”Create
Section titled “Create”spec: version: "1.0" schema: v92
newWorldMap: create: - worldId: 1 desc: "Arborea" mapId: "map_arborea" nameId: 100 scale: 1.0 continents: - continentId: 1 centerPixelX: 512 centerPixelY: 384 - continentId: 2 centerPixelX: 768 centerPixelY: 512 guards: - guardId: 10 desc: "Velika Territory" left: 50 height: 200.0 width: 300.0 top: 100.0 sections: - sectionId: 100 desc: "Velika Outskirts" floor: 1 nameId: 200 type: "town" - sectionId: 101 desc: "Sinestral Manor" floor: 1 nameId: 201 type: "dungeon" npcs: - continentId: 1 desc: "Dungeon Entrance" nameId: "1,2" pos: "100,200,300" type: "MARKER_enter_Dungeon"Update
Section titled “Update”spec: version: "1.0" schema: v92
newWorldMap: update: - worldId: 1 changes: desc: "Arborea (Updated)" scale: 1.5 guards: - guardId: 10 desc: "Velika Territory (Expanded)" width: 400.0 sections: - sectionId: 102 desc: "New Zone" floor: 2 nameId: 300 type: "dungeon"Delete
Section titled “Delete”spec: version: "1.0" schema: v92
newWorldMap: delete: - 1Upsert
Section titled “Upsert”spec: version: "1.0" schema: v92
newWorldMap: upsert: - worldId: 1 desc: "Arborea" scale: 1.0 guards: - guardId: 10 desc: "Velika Territory" sections: - sectionId: 100 desc: "Velika Outskirts" floor: 1 nameId: 200 type: "town"Properties reference
Section titled “Properties reference”World attributes
Section titled “World attributes”| Attribute | Type | Since | Required | Description |
|---|---|---|---|---|
worldId | int | v92 | Yes | World identifier |
desc | string | v92 | Yes | World description |
mapId | string | v92 | No | Map resource identifier |
nameId | int | v92 | No | Name string reference ID |
scale | decimal | v92 | No | Map scale factor |
continents | list[Continent] | v92 | No | Continent entries. See Continent. |
guards | list[Guard] | v92 | No | Guard zone entries. See Guard. |
Nested elements
Section titled “Nested elements”Continent
Section titled “Continent”Map region markers with pixel coordinates for positioning.
| Attribute | Type | Since | Required | Description |
|---|---|---|---|---|
continentId | int | v92 | Yes | Continent identifier |
centerPixelX | int | v92 | Yes | Center X pixel coordinate on the world map |
centerPixelY | int | v92 | Yes | Center Y pixel coordinate on the world map |
Geographic zones within a world, containing sections.
| Attribute | Type | Since | Required | Description |
|---|---|---|---|---|
guardId | int | v92 | Yes | Guard zone identifier |
desc | string | v92 | Yes | Zone description |
height | decimal | v92 | No | Zone height on map |
left | int | v92 | No | Left boundary position |
mapId | string | v92 | No | Map resource identifier |
mode | int | v92 | No | Display mode |
nameId | int | v92 | No | Name string reference ID |
top | decimal | v92 | No | Top boundary position |
visibleInMap | bool | v92 | No | Whether visible on the world map |
width | decimal | v92 | No | Zone width on map |
sections | list[Section] | v92 | No | Section entries. See Section. |
Section
Section titled “Section”Individual zones within a guard area (dungeons, towns, etc.).
| Attribute | Type | Since | Required | Description |
|---|---|---|---|---|
sectionId | int | v92 | Yes | Section identifier |
desc | string | v92 | Yes | Section description |
floor | int | v92 | Yes | Floor number |
nameId | int | v92 | Yes | Name string reference ID |
height | decimal | v92 | No | Section height on map |
left | decimal | v92 | No | Left boundary position |
mapId | string | v92 | No | Map resource identifier |
mode | int | v92 | No | Display mode |
rmwidth | int | v92 | No | Room width |
top | decimal | v92 | No | Top boundary position |
type | SectionType | v92 | No | Section type. See SectionType. |
visibleInMap | bool | v92 | No | Whether visible on the map |
width | decimal | v92 | No | Section width on map |
npcs | list[Npc] | v92 | No | NPC map marker entries. See Npc. |
NPC map markers displayed within a section.
| Attribute | Type | Since | Required | Description |
|---|---|---|---|---|
continentId | int | v92 | Yes | Continent reference for positioning |
desc | string | v92 | Yes | Marker description |
nameId | string | v92 | Yes | Packed group and local ID (format: "groupId,localId") |
pos | string | v92 | Yes | Packed position coordinates (format: "x,y,z") |
type | string | v92 | Yes | Marker type (string passthrough, preserves exact casing) |
showRequireQuestTaskId | int | v92 | No | Quest task ID required for marker visibility |
showRequireQuestTemplateId | int | v92 | No | Quest template ID required for marker visibility |
Enum types
Section titled “Enum types”SectionType
Section titled “SectionType”| Value | Description |
|---|---|
dungeon | Dungeon instance zone |
town | Town / safe zone |
XML structure
Section titled “XML structure”WorldMap/NewWorldMapData.xml└── NewWorldMapData └── World (0..4) @id (required) @desc (required) @mapId (optional) @nameId (optional) @scale (optional) ├── Continent (0..∞) │ @id (required) │ @centerPixelX (required) │ @centerPixelY (required) └── Guard (0..∞) @id (required) @desc (required) @height (optional) @left (optional) @mapId (optional) @mode (optional) @nameId (optional) @top (optional) @visibleInMap (optional) @width (optional) └── Section (0..∞) @id (required) @desc (required) @floor (required) @nameId (required) @height (optional) @left (optional) @mapId (optional) @mode (optional) @rmwidth (optional) @top (optional) @type (optional) @visibleInMap (optional) @width (optional) └── Npc (0..∞) @continentId (required) @desc (required) @nameId (required) @pos (required) @type (required) @showRequireQuestTaskId (optional) @showRequireQuestTemplateId (optional)Common pitfalls
Section titled “Common pitfalls”- Continent and NPC management: Continents and NPCs use a create/clear list pattern. On upsert, the entire list is replaced — individual continent or NPC entries cannot be updated independently.
- Guard and Section management: Guards and Sections are keyed by
idand support individual CRUD operations. Updates target specific guards/sections within a world. - NPC type is a string: The
typeattribute on NPC markers is a raw string passthrough, not an enum. Mixed-casing values likeMARKER_enter_Dungeonare preserved exactly as written. - NPC nameId and pos are packed strings:
nameIduses the format"groupId,localId"andposuses"x,y,z"— these are not numeric values. - World limit: The XSD constrains a maximum of 4 World entries per file.
- Update with guards: When updating guards, provide the
guardIdto identify which guard to update. Only non-null fields are modified. Sections within an update guard block use the create pattern (added, not merged).