Skip to content
Morrobroom
guide

Mapping

The TrenchBroom vocabulary and the authoring rules Morrobroom expects.

The small vocabulary#

  • A brush is an editable convex solid. Rooms, floors, walls, ceilings and most architectural blockouts begin as brushes.
  • A face is one surface of a brush. Faces carry a texture, its projection, and surface flags.
  • An entity is an object described by properties. Lights, doors, containers and items are entities. Some entities are points; some own brushes.
  • An FGD is the entity definition file that tells TrenchBroom which entities exist and which properties they accept.
  • Compiling turns the saved .map into NIF meshes, lightmaps and a TES3 plugin.

Morrobroom reads Quake 2 maps with Valve 220 texture projection, the format the supplied Morrowind game configuration selects. TrenchBroom does the editing; Morrobroom is responsible for turning the resulting brushes into Morrowind assets.

How a map becomes game content#

In TrenchBroomIn the plugin
The mapOne interior cell, named after the map unless worldspawn says otherwise
Brushes that belong to no entity (worldspawn)One static mesh, placed in the cell
A group or layer of brushesIts own static mesh, placed in the cell
A brush entity (world_Detail, item_Misc, …)Its own mesh, a record of that type, and a reference to it
A lightA light record and a reference, and light in the baked lightmap

Entities lists every entity and what it becomes.

A useful authoring loop#

  1. Block out the room with simple brushes.
  2. Check that every room is enclosed and every brush is a valid solid.
  3. Apply textures and add entities.
  4. Save the map.
  5. Compile early, then make the next change.

Compiling a small test map is more informative than building an entire dungeon before discovering that one brush has been quietly shaped like a legal theory.

Textures#

The game configuration looks for textures in Morrowind’s Data Files/textures, and recognizes .tga, .png, .dds and .webp files. Normal, specular and similar maps (*_n, *_nh, *_spec) are hidden from the texture browser, because nobody paints a wall with a normal map on purpose.

If a texture is missing in TrenchBroom, fix the game directory or the texture path before blaming the compiler. The compiler is many things, but it is not a texture diviner.

Faces that do something special#

Texture or flagEffect
skip, or any texture with skip_ in its nameThe face is not built: no mesh, no collision. For faces nobody will ever see.
clipNot drawn, but collides. For invisible walls.
A texture with water, slime, lava or mwat in its nameDrawn, but never collides, so the player can wade into it.
NoClip surface flagDrawn, but never collides.
Invert Faces surface flagDrawn inside out, for fake skyboxes and other things seen from within.
Smooth Shading surface flagShaded smooth where it meets the entity’s other Smooth Shading faces with the same surface Value: they share vertex normals, so an eight-sided pillar reads as round. Faces that should stay sharp, like the pillar’s caps, get no flag or another value.

Groups and layers#

A TrenchBroom group or layer is also a unit of compilation: its brushes become their own mesh and their own placed object, not part of the map’s main mesh. Group things that belong together, like a pillar with its base, and keep the room’s shell in worldspawn.

Groups also scope NIF structure: billboard, sort and collision nodes placed in a group apply to that group’s geometry. NIF authoring explains how.

Imported geometry#

To start from geometry that already exists as a NIF, see NIF import. The short version: nif2map turns a mesh’s visual geometry back into brushes, which you then edit like anything else.