A procedural
.mapfile generator and Diabotical importer for the game Turnt.
Turnt-o-Mapper generates ready-to-play for Turnt / ready-to-compile Quake 3 .map files.
Design a full map layout in seconds: choose room count, dimensions, corridor width, texture sets, and let the generator handle the geometry.
Turnt-o-mapper.mp4
Turnt-o-mapper.rbe.import.tt_turbine.mp4
- 6 layout strategies — Linear, Zigzag, Snake, Random, Spiral, Multilevel
- Unified art style — one cohesive texture set per map with accent outline borders on floors and mint-colored ramp surfaces
- Interactive 2D preview — scroll to zoom, drag to pan, double-click to fit
- Interactive 3D wireframe — drag to rotate, WASD to pan, scroll to zoom, Iso/Top/Front/Side presets
- Physics model — acceleration-based speed simulation per room segment
- Texture selector — assign floor / wall / ceiling textures with F/W/C checkboxes; the generator picks one set per map from the enabled pool
- Diabotical
.rbeimporter — import existing DBT maps with configurable XYZ scale - Auto-update — checks GitHub Releases on startup and downloads new versions automatically (you can opt-out in Settings tab)
Pre-built binaries are available on the Releases page:
| Platform | File |
|---|---|
| Windows | turnt-o-mapper-windows.exe |
| macOS | turnt-o-mapper-macos |
| Linux | turnt-o-mapper-linux |
Windows: Double-click the .exe — no install needed.
macOS: If you see a security warning, right-click → Open, or run:
xattr -cr turnt-o-mapper-macos && chmod +x turnt-o-mapper-macos && ./turnt-o-mapper-macosLinux:
chmod +x turnt-o-mapper-linux && ./turnt-o-mapper-linuxRequirements: Python 3.10+
git clone https://github.com/dhcold/Turnt-o-mapper.git
cd Turnt-o-mapper
pip install PyQt6 Pillow
python main.pyOptional — texture thumbnails require Pillow (already listed above).
pip install pyinstaller
pyinstaller --onefile --windowed --name turnt-o-mapper main.py
# Output: dist/turnt-o-mapper[.exe]
- Set Number of rooms (2–100) and choose a Layout style
- Adjust Room size (min/max width, depth, height)
- Set Corridor width (25–100%)
- Optionally enable Physics model for acceleration-based level design
- Click ⚡ Generate — preview updates instantly
- Select a Diabotical
.rbemap file - Configure X/Y/Z scale (Quake units per DBT block)
- Click Import to get a
.map - Save map file
- Assign textures to Floor, Wall, and Ceiling categories using the F/W/C checkboxes
- Set the Texture folder path in Settings to see live thumbnails
- The generator picks one unified texture set per map from the enabled pool
- Floor outlines use an accent texture (a different wall texture) for visual detail
- Output .map file — where the generated file is saved
- Texture folder — path to your Turnt texture assets (for preview only)
- Game executable — path to Turnt binary for the Launch button
- Save .map — writes the current map to the configured output path
- Open .map — opens the current map with TB / Radiant / etc
- Open folder — opens the output folder in your file manager
- Launch game — runs Turnt with
--import=<path>to preview in-engine
Turnt-o-Mapper → .map file → Turnt
The generated .map uses standard Quake 3 brush format and is compatible
with any Q3-based compiler (q3map2, DarkPlaces, etc.).
main.py Entry point (QApplication bootstrap)
turnt_o_mapper/
app.py Main window (PyQt6 UI)
preview2d.py 2D top-down preview widget
viewer3d.py 3D wireframe preview widget
generation.py Map generation orchestrator + bridge footprint clipping
layout.py Room placement, corridor routing, Z collision avoidance
brushes.py Quake 3 brush/face geometry (rooms, ramps, outlines)
entities.py Spawn, trigger, checkpoint entities + footprint/wall clips
dbt_import.py Diabotical .rbe importer
constants.py Texture registry, theme colours, geometry params
models.py Room & Bridge dataclasses
config.py JSON config persistence
updater.py GitHub Releases auto-update
__version__.py Version string
MIT