A modern Quake-format level toolchain for Unity 6.
Build levels in TrenchBroom, save the .map file into Assets/, and get game-ready geometry, materials, colliders, trigger volumes, and C#-bound entities — with reimport-on-save iteration and graph-based level validation in CI.
Status: pre-alpha (design phase). Nothing usable yet. The architecture and roadmap live in docs/design/0001-architecture-and-roadmap.md. Follow the phase roadmap there if you're curious where this is going.
TrenchBroom is one of the best brush-based level editors ever made, and Godot users get a first-class bridge to it via func_godot. Slipgate aims to give Unity the same workflow — plus a few things no engine has:
- Entity binding as a framework. Declare
[PointEntity("info_player_start")]or[BrushEntity("trigger_hurt")]on aMonoBehaviour, and Slipgate generates the TrenchBroom FGD from your C# code and wirestarget/targetnameconnections into typed UnityEvents at import. Your components are the single source of truth; the editor can't drift from the game. - Level-flow analysis. At import time and in CI (
slipgate lint), Slipgate builds a graph of your level — rooms, portals, triggers, keys, locks — and validates it: is every area reachable from the player start? Is the key locked behind its own door? Can the player softlock? Powered by Graph1x. - Engine-agnostic core. The
.map/FGD/WAD parsers and geometry kernel ship as plain .NET libraries on NuGet, usable from CLI tools and CI without Unity. The Unity package is a thin layer on top. - Unity 6 native.
ScriptedImporterpipeline, URP-first materials, Burst/Jobs geometry kernel, ProBuilder conversion for touch-ups.
Slipgate stands on well-trodden ground and is honest about it. Scopa already imports Quake/Half-Life/Source formats into Unity and may be all you need today. Qunity ports Qodot concepts to Unity. func_godot is the gold standard this project measures its geometry output against. If Slipgate's differentiators (entity framework, flow analysis, engine-agnostic core) don't matter to you, use those excellent projects.
| Package | Distribution | Purpose |
|---|---|---|
Slipgate.Core |
NuGet | .map / FGD / WAD2/WAD3 parsers, AST, writer |
Slipgate.Geometry |
NuGet | Brush-to-mesh kernel (winding, culling, UV projection) |
Slipgate.Analysis |
NuGet | Graph1x-based flow graph + validators |
Slipgate.Cli |
NuGet (dotnet tool) | parse · stats · lint · export-fgd |
com.lgamorim.slipgate |
UPM / OpenUPM | Unity importer, entity binder, editor tooling |
- Unity 6.0 LTS or later (URP-first; HDRP/BiRP via pluggable material resolvers)
- .NET 8+ for the standalone libraries and CLI
- TrenchBroom with the generated Slipgate game config (Valve 220 format)
BSP import, Quake 2/3 curved patches (v1), and shipping any id Software assets. See the design doc for the full list and rationale.
Not open for contributions yet — the foundations are still moving. Issues with real-world .map files that parsers tend to choke on are welcome from day one, though: the golden-file test corpus is the backbone of this project.
Slipgate is developed in close collaboration with Claude (Anthropic), following the same agentic workflow and verification discipline as Graph1x: design decisions are recorded in numbered design docs, geometry output is differentially tested against func_godot, and the managed reference implementation serves as the correctness oracle for the Burst backend.
Apache-2.0. Sample maps and textures under samples/ carry their own licenses — see the notices in that folder.