Page cover

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? Two aspects to consider:

  • .MAP / .BSP support: can your engine import or compile .MAP files or .BSP 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.

    • Some plugins can import compiled .BSP files instead.

    • Worst case scenario -- export brushes to .OBJ but lose all entity data

  • Asset integration: can TB hook into your game assets and display them?

    • To place enemies, doors, or other scriptable game objects, TB uses .FGD file with special extensions.

    • TB uses Asset Importer (AssImp) to read a wide variety of common file formats, such as PNG, JPG, FBX, OBJ, etc.

importing .MAP geometry into Godot Engine using the Qodot plugin
Game / Engine
.MAP support
Asset integration

Godot

import via FuncGodot (docs) or Qodot (docs)

common file formats, FGD / WAD via plugin

Unity

common file formats, FGD / WAD via some plugins

Unreal

import via HammUEr (guide)

common file formats, textures via TextUEr (guide)

Quake 1

compile BSP via EricW-tools

built-in FGD / WAD / MDL

Quake 2

compile BSP via q2tools-220

built-in FGD / WAL / MD2

Quake 3 (incomplete)

compile BSP via q3map2

built-in MD3 / etc but no patch editing support yet (or ever?)

Half-Life (almost complete)

compile BSP via ZHLT v3.4+ / VHLT (guide)

built-in FGD / WAD3 / MDL

Doom 3 (incomplete)

needs custom fork

Resources and Community

Last updated