Links

TrenchBroom

info and resources for this modern brush-based level editor tool
TrenchBroom (or TrenchBroom 2, or TB) is a free open-source cross-platform 3D level editor with modernized Quake-style brush-based construction and ongoing updates / support. It is widely used across several modding communities as well as commercial projects.
We recommend TB as a decent general purpose 3D level editor tool that potentially works with multiple game engines on Windows, macOS, and Linux.

Construction

TB departs from previous Quake-era level editors to emphasize 3D construction in a single view pane.
Clipping planes can be 3D, and all brushes are automatically validated for convexity. TB is also great at resizing many brushes at once, with SketchUp-like handling of shared planes and contextual extrusion. For its construction capabilities alone, we recommend TB for building blockouts, but it also allows surprisingly detailed modeling and texturing when art passing.
TB's vertex manipulation and automatic brush validation, by Benoit "Bal" Stordeur
TB's visual UV texture editor with "mapversion 220 (Valve)" style skewing, by Benoit "Bal" Stordeur
building a 3D torus using TB's brush tool, clipping tool, and CSG merge by Benoit "Bal" Stordeur

Scripting

TB currently has only basic tools for scripting levels. It parses a .FGD file for entity definitions, and users can create and edit keyvalues to script gameplay, with some limited autocomplete and colorpicker support. This is suitable for simple Quake-style scripting with entity chains, but lacks the functionality of something like Hammer's extensive entity I/O system.
Outside of Quake modding, most users do their level scripting in the Unity / Unreal / Godot editor itself, and make minimal / no use of TB's entity support. But if you really want to implement custom entity support for your game, you must write your own .FGD file and create your own TrenchBroom game configuration.

Compatibility / engine pipeline

Is TrenchBroom a good choice for your game engine? There are two levels of technical compatibility to consider:
  • .MAP support: can your engine import or compile .MAP files?
    • TB's main file format is a Valve variant ("version 220") of text-based Quake .MAP format.
    • Your engine needs some sort of compile tool or plugin to process .MAP files.
    • Optionally, you can also parse / import compiled .BSP files instead. However, Quake 1 / Half-Life BSPs strip out all brush information, which makes convex collider calculation impossible.
    • Worst case scenario -- export brushes to .OBJ but lose all entity data
  • Integration: can TB hook into your game assets and display them?
    • To place enemies, doors, or other game objects, the level editor needs to import a file that lists all these types and their properties. TB's main entity definition format is a WorldCraft .FGD file with special extensions just for TB.
    • To preview textures and 3D models in the 3D camera view, TB supports Quake-era file formats (.WAD, .MDL) or common 3D formats (.OBJ) or 2D formats (.TGA, .JPG, .PNG) via FreeImage. No BLEND or FBX support... yet.
importing .MAP geometry into Godot Engine using the Qodot plugin
Game / Engine
.MAP support
Editor integration
Quake 1
compile to BSP via EricW-tools
built-in FGD / WAD / MDL
Unity
OBJ, common image formats
Unreal 4
import via HammUEr (guide)
textures via TextUEr (guide)
Godot
import via Qodot (docs)
FGD export from Qodot, OBJ
Quake 2
compile to BSP via q2tools-220
built-in FGD / WAD2 / MD2
Quake 3 (incomplete)
compile to BSP via q3map2
maybe use GtkRadiant instead
Half-Life (incomplete)
compile to BSP via ZHLT v3.4+
maybe use JACK instead
needs custom fork
  • To build a .MAP importer for other engines, see MAP file format for info and example code.
  • For technical help with TrenchBroom, visit the TrenchBroom Discord
    • If you're using Qodot, go directly to the Qodot Discord for better help
  • see Tools for a full list of game engines and recommended level editors

Resources and Community