Brushfall imports TrenchBroom and Quake .map files into Unreal 5.8 as merged meshes with exact brush collision, and a reimport rebuilds only what changed

If you block out levels in TrenchBroom, getting them into Unreal usually means one static mesh per brush, collision you rebuild by hand, and starting over every time the map changes.

Brushfall reads Quake standard and Valve 220 .map files (what TrenchBroom, J.A.C.K. and NetRadiant write). World brushes are merged into one static mesh per cluster cell, a cube of 1024 map units by default, with one material section per texture. Every solid brush gets one convex collision hull that is exactly the brush, and the mesh uses simple collision for complex queries too, so a line trace hits the brush shape. Textures come from WAD3, WAD2 or image folders and become shared material instances. Lights become Movable point lights, so the level is lit the moment it lands. A class table maps any classname to your own Blueprint, and entity keys are written to matching properties (speed lands in a Speed variable).

The reimport is the main reason it exists. Every placed actor carries its identity and a fingerprint of what built it, so after you edit the map only the changed clusters are rebuilt in place, moved entities are only moved, and the settings you changed on an actor in Unreal stay. Everything is decided before anything is written, and a read only file refuses the whole import and changes nothing.

There is an import window with a preview of the map from above, an HTML report per run, and a -run=Brushfall commandlet with exit codes for CI (-Strict fails on any unbuilt brush or missing texture).

It does not read Quake 3 patches, .vmf or BSP, and it does not compile the map. Tested on Unreal Engine 5.8, Win64 only. The code was written with AI tools. It costs 19.99 USD on itch, and 14.99 USD in the itch Halloween sale until 4 November: