Skip to content

RobertBeckebans/TrenchBroomBFG

 
 

Repository files navigation

TrenchBroomBFG for DOOM-3-BFG

The goal of TrenchBroomBFG is to make mapping for Doom 3 (BFG) as easy as it is for Quake.

Doom 3 also requires some extensions in order to work with TrenchBroom. The Quake 1/2/3 communities already adopted the Valve 220 .map format in the BSP compilers and I did the same with dmap in RBDOOM-3-BFG. I usually develop these things for RBDOOM-3-BFG but I created a separated branch for vanilla Doom 3 so everybody can adopt TrenchBroom and the new Doom 3 (Valve) .map support. You can find all relevant code snippets by looking for TrenchBroom in the comments

https://github.com/RobertBeckebans/DOOM-3/tree/506-TrenchBroom-interop

TrenchBroomBFG's abilities for Doom 3 are still limited at the moment and it works best with RBDOOM-3-BFG.

You can only save maps to the Doom 3 (Valve) format but you can copy paste from the vanilla Doom 3 .map format into the Doom 3 (Valve) configuration and reset your texture alignment as you want.

RBDOOM-3-BFG >= 1.4 also has the console command convertMaptoValve220 <mapname> which lets you easily convert any original Doom 3 (and BFG) .map and saves it with the _valve220.map suffix. This command prepares Doom 3 maps for editing in TrenchBroomBFG and saves a lot of additional work.

In addition the RBDOOM-3-BFG engine framework and ingame light editor can also edit light settings, place new entities or manipulate ragdolls and save them to the new Doom 3 (Valve) .map format so both programs interop with each other.

TrenchBroomBFG is in sync with the latest stable release of TrenchBroom 2023.1.

Here is an overview of the changes made to TrenchBroom:

New

  • Doom 3 .map parser with brushDef3, patchDef2, patchDef3 primitives
  • Doom 3 Valve .map configuration
  • Quake 3 .shader parser adopted to support .mtr materials and RBDOOM-3-BFG specific extensions. It includes support for Doom 3 diffuse/basecolormap stages and the lookup for them is like in idMaterial::GetEditorImage()
  • New Doom 3 OBJ parser. RBDOOM-3-BFG automatically creates OBJ files to work with TB and it also allows seamless interop with Blender 2.8x - 3.x without the need of additional model formats
  • RBDOOM-3-BFG >= 1.4 ships with TB specific helper entities like misc_model or func_rotating_model to reflect TrenchBroom's clean architecture and differentiation between Brush Entities and Point Entities
  • Game FGDs for Doom 3 and Doom 3 BFG
  • Custom PNG icons for special entities like lights, speakers, particle emitters, info_location, target_* and so on
  • After loading a map TrenchBroomBFG generates unique entity names and also fixes missing or bad "model" keys for brush based entitites
  • Creating new entities like a light will automatically receive unique names like light_2
  • Changed Rotation Tool behaviour to use "angles" by default
  • Translucent materials that might cause BSP leaks have a purple rectangle border in the Texture Browser
  • Changed OBJ exporter so exported models can be easier reimported by RBDOOM-3-BFG
  • Changed Assimp glTF 2 importer so it will look for Doom 3 materials instead of trying to load embedded textures
  • Bezier patches can be copy pasted and copied out of other maps

Issues

  • TrenchBroomBFG doesn't support brush primitives like in D3Radiant or DarkRadiant. Use the Valve 220 .map format instead
  • TrenchBroom has a very clear architecture. An entity can be either a Brush Entity or a Point Entity which has no brushes or patches. This is a conflict with Doom 3's design where each entity can have optional models. Therefore mapping with TrenchBroomBFG requires a different workflow and RBDOOM-3-BFG ships with helper entities for these cases like func_door_model instead od func_door.
  • It has no support for BFG .resource files and .bimage files. You need to call exportImagesToTrenchBroom in RBDoom's console once to have all images available in base/_tb/textures/ as PNG format.
  • Many entities work differently in Doom 3 if they have an origin. Brush work in D3 is usually stored in entity space and not world space. However as a workaround you can use the convertMapToValve220 engine command to prepare a Doom 3 map for the TrenchBroom Doom 3 (Valve) configuration which also creates origin brushes for each entity.
  • Doom 3's primary model formats are LWO and ASE. Assimp has problems to convert them into the Quake/Doom coordinates. (not an issue with the Doom 3 BFG edition)
  • Some ASE models can't be loaded and materials are usually all wrong if loaded (not an issue with the Doom 3 BFG edition)
  • TrenchBroomBFG doesn't support the "rotation" keyword and many models have the wrong orientation (not an issue with the Doom 3 BFG edition)
  • TrenchBroomBFG breaks compatibility for other id Tech engines, e.g. entity links work between "target[num]" and "name" and not "targetname"
  • Linked groups do not work yet with id Tech 4 due to name conflicts
  • Converting maps into the Valve 220 .map can cause BSP leaks because of floating point precision problems and you have to fix the leaks by adding caulk brushes

Releases

  • Binary builds are bundled with RBDOOM-3-BFG available from Mod DB releases. You can find this customized version under tools/trenchbroom/.

For feedback, questions and support join the id Tech 4 Discord: https://discord.gg/Q3E9rUFnnP , #rbdoom3bfg

You can also find weekly or monthly snapshots of this TrenchBroom version in the pinned messages of #rbdoom3bfg

Packages

No packages published

Languages

  • C++ 97.8%
  • CMake 1.9%
  • Shell 0.1%
  • C 0.1%
  • ShaderLab 0.1%
  • PHP 0.0%