Skip to content
RF DataData reference
RU

Maps

Map registry

Total 33 Known 18 Derived 12 Unused 3

Used parameters

Fields read by the server or the client, or assembled from other files. The description says what the field means and how it acts; below it — where that was established.

DataTable\<language>\NDMap.edf client file

Total 3 Known 0 Derived 3 Unused 0
Schema
Strs\map strs\NDMap.strs
Registry level
derived
Derived from
map and portal names
Digest
variable-length records; 3D\RFMapCompiler writes them byte for byte (maps.md §6)
OffsetFieldWhat it is and how it actsAssembled fromServer readersRoleStatusData
—names of maps, portals, tooltips
1 + portalCount + tooltipCount 64-byte strings per map
3D\docs\MAP_REGISTRATION_RU.md, “Map.edf and NDMap.edf” (outside the repository; not moved into maps.md — finding C)
entity texts (map, portal)—clientderived—
—minimap zone names
u32 length, string; the count follows the Map.edf zones
3D\docs\MAP_REGISTRATION_RU.md, “Map.edf and NDMap.edf” (outside the repository; not moved into maps.md — finding C)
texts—clientderived—
—world map zone names
the same
3D\docs\MAP_REGISTRATION_RU.md, “Map.edf and NDMap.edf” (outside the repository; not moved into maps.md — finding C)
texts—clientderived—

DataTable\Map.edf client file

Total 17 Known 5 Derived 9 Unused 3
Schema
Strs\map strs\Map.edf_2.2.4.strs
Registry level
derived
Derived from
Map_Data.spt + portals and map SPTs (mining points *0dr/*1dr/*2dr), BSP, minimap zones (= the server's Map\MAPDATA.DAT)
Digest
variable-length records, size not checked (maps.md §1)
OffsetFieldWhat it is and how it actsAssembled fromServer readersRoleStatusData
—map count
u32; the client requires exactly 37 (0x25 hard-coded in 0075C490) and equality with the NDMap.edf map count
maps.md §4 (Map.edf layout); maps.md §4.3
Map_Data.spt (row count)—clientderived—
—index
map number 0…36
maps.md §4 (Map.edf layout)
Map_Data.spt (order)—clientderived—
—name
map code (32); map and minimap lookup by code, case-insensitive
maps.md §4 (Map.edf layout); maps.md §4.3
Map_Data.spt column 1—clientderived—
—file
BSP path (128); the client builds the _dummy.spt path from it too
maps.md §4 (Map.edf layout)
Map_Data.spt column 2—clientderived—
—spr
minimap .spr name (128); the client stores ./SpriteImage/Common/Map/<spr> and loads it as the minimap window sprite
maps.md §4 (Map.edf layout); maps.md §4.3
———known—
—portalCount
portal count
maps.md §4 (Map.edf layout)
[PORTAL] of the map—clientderived—
—portal × N
288 bytes: map, portal number, box (6 float), 3×4 matrix, point x y z 1 (the same as -node_tm in .spt), type (1 entrance, 0 arrival, 3 menu), “works”, races, dummy name, name (empty — taken from NDMap), +0xED number of destination pairs (1 everywhere), requirements (4.2)
maps.md §4.2; maps.md §4.3
.spt (*dp) + [PORTAL]—clientderived—
—destinations × N
after all portals of the map: per portal +0xED pairs (i32 map, i32 portal) of 8 bytes, −1, −1 for arrival points; the client stores the pointer at +0xF0 of the portal
maps.md §4.3; maps.md §4
[PORTAL] m_strLinkMapCode/m_strLinkPortalCode—clientderived—
—dummyCount + dummies
u32 + n × 96 — ore mining points: box (+8 minX, +0x10 minZ, +0x14 maxX, +0x1C maxZ; Y is not checked), the matrix and point are not read. The client takes the index of the first record whose box contains the player and sends it as byMineIndex (14/1) and when placing an auto-miner; the server interprets the index by its own *0dr, *1dr, *2dr array. AoP: 226 records against 62 server *0dr — an old list
maps.md §4.3 [code, 30.10.2026]; mining.md 2.1
*0dr, *1dr, *2dr of the server .spt in file order: box = bbox + position, rotation and position rounded—clientderived—
—tooltipCount + tooltips
u32 + n × 84: u32 number, i32 left, top, right, bottom — the icon rectangle on the minimap image (16 × 16), char[64] text (empty in the file, read into memory from NDMap). An icon of type 5 with id number | 0x50000000, the text is the tooltip
maps.md §4.3 [code, 30.10.2026]
text — NDMap.edf—server → clientknown—
—fScale/rect × 2
two minimap insets: fScale ≠ 0 — the inset exists (a magnified fragment), rect[0..1] — the top-left corner of the fragment in image pixels, rect[2..3] — the position of the inset window in the minimap window; an icon in the inset: (px − rect[0]) × fScale − width/2
maps.md §4.3 [code, 30.10.2026]
———known—
—miniMapScale X/Y, Shift X/Y
minimap size and shift: the “world ↔ cell” formula
maps.md §1.2; maps.md §4.3
———known—
—leafNum, nodeNum
BSP leaf and node counts — a check at map loading (0075A130): 0, 0 — do not check; otherwise they must equal the loaded BSP values, on a mismatch the map does not load (“DIFF BSP LEAF/NODE…” in the log)
maps.md §4.3 [code, 30.10.2026]
map BSP (nodeNum = leafNum − 1 in all corpora)—clientderived—
—minimaps and world maps
two sections of one format (CMapArea lists): u32 count; per record u32 height, u32 image width, u32 length + name (= map code, case-insensitive), u32 zone count, zones × {u32 colour (not read — dead code), u32 x, u32 y of the label in pixels, i32 sound (not read)}, u32 length + RLE mask {u16 length−1, u8 zone} → a byte per pixel. The player's zone is by the mask pixel; zone names are in NDMap. The server sends the zone index (8/6) by its own Map\MAPDATA.DAT — in AoP this section is byte for byte the same. World maps are a tree map1 → map1_<zone+1>; the zone text = the map name for switching to its minimap
maps.md §4.3 [code, 30.10.2026]
= the server's Map\MAPDATA.DAT (order and number of zones)—server → clientknown—

Map\Map_Data.spt server file

Total 13 Known 13 Derived 0 Unused 0
Schema
text: * + 12 columns (maps.md §1.1)
Registry level
ready for full
Digest
map registry; map number = row order
OffsetFieldWhat it is and how it actsGoes to client asServer readersRoleStatusData
—*
record start; exactly 12 fields follow (fscanf %s)
maps.md §1.1
———known—
—1 code
map name for all references (m_strCode)
maps.md §1.1
———known—
—2 folder/name
paths .\map\<folder>\<name>.*, SystemSave\<name>_Boss.ini
maps.md §1.1
———known—
—3 type
0 field, 1 layers with sets, 2 …
maps.md §1.1
———known—
—4 class
1 — respawn at the *ds of one's race
maps.md §1.1
———known—
—5 layer count
≤ 500; for type 0 → 1
maps.md §1.1
———known—
—6 town race
0/1/2 — race capital
maps.md §1.1
———known—
—7 monster sets
≤ 30; for type 0 → 1
maps.md §1.1
———known—
—8 sector radius
visibility and broadcasts
maps.md §1.1
———known—
—9 min level
only summoning a player
maps.md §1.1
———known—
—10 max level
summoning only; −1 — no limit
maps.md §1.1
———known—
—11 map code
potion restriction by map (m_nPotionLim)
maps.md §1.1
———known—
—12 PvP race mask
three characters 0/1
maps.md §1.1
———known—

Unused parameters

Fields that neither the server nor the client reads. For each: why it was decided so and where that was established. The editor keeps their bytes as they are.

DataTable\Map.edf client file

OffsetFieldWhy unusedData
—angle
minimap rotation 0/180 — the client does not read the field (not a single read of +0x164 of the map record); the image is pre-rotated, G106 confirms; write 0 when building
maps.md §4.3 [code, 30.10.2026]; maps.md §1.2
—
—vertexNum, faceNum
BSP vertex and face counts — the client does not read them (+0x1C0, +0x1C4)
maps.md §4.3 [code, 30.10.2026]
—
—ebpSize
size of the client map EBP (GU: 31 of 31; AoP mismatches — different file sets); the client does not read the field (+0x1C8)
maps.md §4 [bytes, 29.10.2026]; maps.md §4.3 [code, 30.10.2026]
—

← Back to category

RF Online is a trademark of its owners. The reference is compiled from research for content development. Built 01.11.2026 · field catalog dated 29.10.2026 · Adagio UI 0.5.0