MapForge web
{{ S.text }}
◆ {{ G.text }}
Sculpt height
strength {{ sculptStrengthText }}
size {{ sculptSizeText }}
Writes height.raw only: minimap, shadows, water attr and object Z are not refreshed. Hold the button to keep going; works in 3D Preview too. X raise / lower · [ ] size · − + strength · right-drag moves the map · Ctrl+Z undo
Paint shadows
darkness {{ shadeLevelText }}
size {{ shadeSizeText }}
Writes shadowmap.raw and shadowmap.dds together. X shade / light · [ ] size · − + darkness · right-drag moves the map · Ctrl+Z undo
Paint attributes
{{ paintMaskText }}
tip {{ paintSizeText }}
BATCH PAINT · whole map
{{ paintTsLine }}
{{ T.label }}
Water water.wtr, ground below it
{{ paintMsg }}
{{ paintStaleText }}
B brush · R rectangle · C circle · I pick · X next mode (Set → Clear → Replace) · [ ] size · 1–8 flags · right-drag moves the map · Ctrl+Z undo
x — · y —
100%
Open a Metin2 map
Click Open map folder  ·  or drag a map folder here
reads setting.txt, sectree grids, regen & areadata
Workspaces
{{ wsMsg }}
{{ W.name }}
{{ W.links }}
{{ W.when }}
✎ ×
A workspace remembers which folders and files you opened, not their contents. The browser asks once per session before reading them again.
MAP SETTINGS
Map name
{{ iMapName }}
Size (sectrees)
{{ iDims }}
Sectors
{{ iSectors }}
Base position
{{ iBase }}
CellScale
{{ iCell }}
HeightScale
{{ iHeight }}
ViewRadius
{{ iView }}
TextureSet
{{ iTex }}
Environment
{{ iEnv }}
CURRENT LAYER · {{ layerName }}
Load a map to inspect layers.
PAINT
ALL LAYERS
Export writes one PNG per layer into a .zip. Import takes PNG files, a .zip or a folder — in any mix, also by drag and drop — and tells the layers apart by the file name (minimap, height, tile, shadow, attribute), so you can swap them all at once or only some.
Import decodes a full-map PNG (cols×256 by rows×256) back into the current layer's per-sector files. Minimap is lossless; height/tile/shadow/attribute are approximate. Edits are written into Export map (.zip).
Type
Vnum
{{ vnumName }}
X
Y
Sx (½rng)
Sy (½rng)
Dir
Respawn
⚠
Percent
Count
⚠ {{ respWarnMsg }}
Click the map to place · drag a marker to move it · drag the white handles on its range to set Sx/Sy · Ctrl+click adds/removes a marker from the selection, Ctrl+drag boxes (+Alt removes), Ctrl+A all · arrow keys nudge the selection (Shift = bigger step) · Shift+click to place on top of one · click a row to load it here, edit, then Update or Enter · ↑↓ step the numeric fields (Shift ×10).
TypeVnumXYRespSxSyDir%CntName
{{ R.type }}{{ R.vnumText }}{{ R.x }}{{ R.y }}{{ R.respText }}{{ R.sx }}{{ R.sy }}{{ R.dir }}{{ R.perc }}{{ R.count }}×{{ R.name }}
no spawns in this file
Sector (areadata.txt)
Objects plot at (x, −y). Click a marker to select it · drag it to move (clicking the map never moves an object) · Ctrl+click adds/removes a marker from the selection, Ctrl+drag boxes (+Alt removes), Ctrl+A all · arrow keys nudge the selection (Shift = bigger step) · Enter = Update · ↑↓ step fields · Del deletes · Esc deselects. Fields are cm (map-local).
#CRCcell x·y
{{ O.idx }}{{ O.crcText }}{{ O.cell }}×
no objects in this sector
X (cm)
Y (cm)
Z (cm)
Property CRC
Bias
Yaw
Pitch
Roll
⚠ {{ objWarnMsg }}
● {{ statusText }} {{ iMapName }} {{ iDims }}
Merge maps
Load as many maps as you like: each one takes as many cells as it has sectors (a 6×6 map is 6 cells wide and 6 tall). Drag it anywhere on the board — from the strip above, or a map that is already placed. Drop it onto another map to overlap them. The board is just working room: the merged map is cut down to the area your maps actually cover, so empty space around them is dropped, and empty cells in between become flat empty ground. Each map's textureset is read from setting.txt: if the file is not inside the map folder, link the YmirWork/textureset folder below, once. Regenerate server_attr after merging.
SETUPS — {{ mergeSetupCount }}
{{ U.name }}{{ U.info }} ✎ ×
{{ mergeSetupHint }}
LOADED MAPS — {{ mergeMapCount }}
{{ M.thumbLabel }}
{{ M.name }}
{{ M.dims }}
{{ M.tsRef }}
{{ M.layerLabel }}
⧉ overlapping
+
add
map
BOARD
{{ mergeResultLabel }}
{{ B.name }}
{{ mergeMsg }}
{{ confirmTitle }}
{{ confirmMsg }}
Web → {{ appWeb }}
Repo → {{ appRepo }}