Qodot - Quake .map file support for Godot
Qodot extends the Godot editor to import Quake .map files, and provides an extensible framework for converting the entities and brushes contained therein into a scene-based node hierarchy with custom properties.
Why build Qodot?
A good 3D level editor is something I've been wanting for a long time across many projects, ever since I started using Unity back in the day. Having taken a detour through Unreal 4 and arrived at Godot, I've found that none of the major general-purpose engines scratch that itch. (Though I have to say, Godot's overall design and implementation makes it my favourite engine so far!)
After a recent dip back into old-school shooters, I found myself watching this trailer for the TrenchBroom editor:
Now, if you're anything like me - a programmer with little in the way of 3D modelling skill - that video might stir some feelings. Things like "where has this been all my life" and "I need this in a modern game engine right now".
I haven't touched a dedicated level editor since using SLADE and Doom Builder to make primitive levels for GZDoom back in the day, but seeing how simple Quake tech is while still providing rich editing was an eye-opener. I did some casual research into the map format, and lo and behold- id Software's generous open-sourcing meant that finding a detail spec was trivial.
And thus, Qodot was born. After about 48 solid hours of poring over text files, puzzling out how to create geometry from sets of intersecting planes, and reverse-engineering the format's undocumented triplanar UV system, I've built a solid tool that can produce 1:1 Godot representations of brush geometry, textures and basic (extendable) entities from a plaintext .map file.
Does Qodot work with other Quake editors, like Radiant?
Yes, providing they support the standard Quake 1 .map format. TrenchBroom is recommended and directly supported with an included set of customizable game definition files, but other editors will work just fine provided that they can support custom game definitions.
Qodot is the first project I've managed to take from inception to public release in quite some time, in part due to the stumbling block of asset creation- I have countless Unity and UE4 projects sat on my hard drive that died as soon as their base gameplay concept was proven and it was time to actually make some levels. In a way, Qodot is a tool to deal with that personal stumbling block as much as one to improve upon the core Godot workflow!
I've submitted it for release on the Godot Asset Library, though it's still pending testing at the time of writing.
The GitHub repo might move fast for a while as I wrangle out some minor usability issues and add extras like shader surfaces and multi-threaded geometry generation, but releases will be tagged as appropriate as each feature reaches completion. Pull requests are encouraged and graciously accepted (providing that you don't scribble all over everything, of course )
Hopefully someone out there will be able to make use of Qodot- drop me a line if you do, I'd be happy to hear about your experience with it