A drop-in replacement for the traditional M2 WorldEditor binary. Now with native 64-bit support. Fully translated, crash-fixed, with an embedded Python 3.8 scripting API and dozens of tools the original never shipped.
What's inside
Built on top of the original binary with patches accumulated over years of active M2 map development.
Modern rendering engine. Migrated from DX8 to DX9Ex for full GPU compatibility and improved resource management.
Full Python 3.8 embedded. Press F5 in any scene to run your script live. Access 200+ native API functions.
Buffer overflows, atlas saves, regen load/save, multi-object selection, skybox cleanup — fixed.
Full undo/redo for terrain edits and object operations.
Before every save, the entire map folder is cloned to a dated backup directory automatically.
Read files directly from pack/Index — no extracting assets just to edit.
One-click export of all loaded map files into a clean release-ready directory.
WASD + arrow key camera with async diagonal movement. Step size configurable in the .ini.
Generate server attribute maps with texture pattern auto-detection and configurable flag cleaning.
Water height pick, set-all, +1z / -1z buttons, and cleanup of orphaned water pixels.
Python API
If you can do it by hand in the UI, you can script it. Terrain edits, attribute painting, prop scattering, water cleanup.
# Paint ATTRIBUTE_BLOCK on "stone" textures, ATTRIBUTE_BANPK on "tile" textures from WorldEditorRemixWrapper import terrain_operations terrain_operations.ApplyAttributesByTexturePattern() # Scatter props across grass-textured tiles, 15 m minimum spacing MY_CRCS = [802175187, 1030411250] inserted, skipped = terrain_operations.PlaceObjectsOnSpecificTextures( MY_CRCS, "grass", min_distance_meters=15.0 ) # Flatten a region to height 1000 import WorldEditor as we we.DrawHeightRegion(100, 100, 300, 300, 1000) we.RefreshTerrain()
Documentation
From first install to advanced scripting — every option, every function, every known issue.
File layout, prerequisites, drive setup, localization DLLs.
Every WorldEditorRemix.ini option, explained with defaults.
Entry point, modules, workflow tips, and code examples.
Full WorldEditor.* function and constant reference — 200+ entries.
WorldEditorWrapper: Pythonic return types and batch helpers.
Attribute painting, water cleanup, prop scattering functions.
Full keyboard and mouse wheel shortcut reference.
Floating overlay — live map info, action buttons, how to extend it.
25 documented limitations, fix status, and workarounds.
Startup failures, performance, scripting issues — common fixes.
Open on GitHub
Distributed as prebuilt binaries — no compilation needed. Download, extract, and run.
Prebuilt Release + Debug binaries, Python scripts, and DLLs. Always the latest stable build.
Structured template: version, build type, reproduction steps, crash dump attachment.
Backlog, in-progress, done, and won't-fix — mirrored from the GitHub Projects kanban.
Community
Release announcements, bug reports, and script sharing happen on M2Dev.