A modern open-source level editor for classic DOOM games, built with C and the Orion UI framework.
- Full-featured level editor for DOOM, DOOM II, Heretic, and other DOOM engine games
- Support for PWAD/IWAD file formats
- Real-time 2D map editing with visual feedback
- 3D map preview and navigation
- Vertex manipulation and geometry editing
- Sector creation and editing with triangulation
- BSP tree visualization and traversal
- Texture management and display
- Thing placement and properties
- Linedef and sidedef editing
- Inspector panels for editing map elements
- Built with the Orion UI framework for window management
- Cross-platform support (macOS, Linux)
- Orion UI (window management and UI — included as a git submodule)
- OpenGL (3D rendering)
- cglm (OpenGL Mathematics library for C)
- C17 compatible compiler (gcc)
- Make (for building with Makefile)
Linux (Ubuntu/Debian):
sudo apt-get install build-essential libcglm-dev libgl1-mesa-devmacOS:
brew install cglmOpenGL is included with Xcode Command Line Tools on macOS.
After cloning, initialize the submodules to get the WAD files and the Orion UI framework (orion-ui):
git submodule update --init --recursiveBuild the main executable:
makeThis will create the doom-ed executable in the current directory.
make cleanThis removes all object files, executables, and the build directory.
OpenGL headers not found: Make sure you have the OpenGL development headers installed:
- Linux:
sudo apt-get install libgl1-mesa-dev - macOS: OpenGL is included with Xcode Command Line Tools
cglm not found: Install cglm library:
- Linux:
sudo apt-get install libcglm-dev - macOS:
brew install cglm
The editor requires a WAD file to load:
./doom-ed path/to/yourfile.wadYou can use the WAD files included via git submodules in the wads/ directory.
- Left Mouse: Select objects
- Mouse Wheel: Zoom in/out
- WASD / Arrow Keys: Navigate in map view
- Tab: Switch top/first-person views in 3D view
- Mouse Movement: Pan/navigate the view
The editor includes multiple inspector windows for editing different map elements (vertices, lines, sectors, things).
/
├── mapview/ # Core map viewer and renderer
│ ├── *.c, *.h # Map rendering, BSP, textures, sprites
│ └── main.c # Application entry point
├── editor/ # Editor-specific functionality
│ ├── editor_*.c # Drawing, input, sector editing
│ ├── radial_menu.* # Radial menu system
│ └── windows/ # Editor windows (inspector, game view, etc.)
│ └── inspector/ # Property inspector for map elements
├── ui/ # [Orion UI](https://github.com/corepunch/orion-ui) framework (git submodule)
│ ├── kernel/ # Event handling and initialization
│ ├── user/ # Window system API
│ └── commctl/ # Common controls (buttons, lists, etc.)
├── doom/ # DOOM engine headers and some source
├── hexen/ # Hexen game engine headers and source
├── tests/ # Test suite (triangulation, BSP)
├── screenshots/ # Screenshot images
├── wads/ # WAD files (git submodule)
├── Makefile # Build system
└── mapview.xcodeproj/ # Xcode project files
Run all tests:
make testThis will run the triangulation tests and BSP tree traversal tests.
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the GPL v3 License - see the LICENSE file for details.
- id Software for creating DOOM
- The DOOM modding community for their dedication and tools that inspired this project
- The Orion UI framework for window management and UI
