So, I've written a bsp decompiler. So far, it's pretty useful for
looking through maps and seeing how various entities are used (this is,
in fact, exactly what I wrote it for).
It's brushwork production is not very good. Texturing is OK, but the
brushes are sort-of faked. (Technically, it turns every face in the map
into a thin brush, kind of like a facade - it doesn't try to
reconstruct the original brushes in any way). It looks reasonable,
enough to see where everything is in Hammer, but you'd have a hell of a
time editing or recompiling anything.
Because of this, until now I've not seriously worried about people
using it to rip-off other people's maps. It's just too much work to do
anything, you'd practically have to remake every brush on the map.
Despite some head-banging messages I've seen on some forums and
received by email (d00d, will you send me the vmfz for de_dust? I want
to make some kewl changez!), I don't regret releasing it.
But now I've found a different way of decompiling. It turns out that
damn-near everything you need to reconstruct the original brushes is
stored in the bsp. (I still haven't decoded displacement surfaces yet,
and there are some difficulties with brush entities, but I will
probably be able fix them.)
I haven't release a version that uses this method yet, and I'm not sure I want to. It's just a bit too
good - it recovers almost everything, clip brushes, hint placement,
detail brushes, etc. Even brush faces that are normally culled away. Some things get lost, but you could definitely use
the output to recompile a map that was almost identical to the original.
So, the question is, do I release this? There are some good,
experienced mappers here (and the forum is much more mature that some
other mapping forums, which is why I'm asking here). Would you prefer
not to see such a decompiler? Do you think what's released so far is
bad enough already? Or don't you care?
One option I've thought of is releasing it, but adding the ability of a
map author to add something to a map that disables decompilation (using
my decompiler, anyway). There are several things the program could
check for that would be hard for someone to get around. This is easy to
do, but wouldn't prevent rip-offs of already exisiting maps.
Bear in mind that it's not particularly difficult to write a decompiler
- almost everything you need to know is in one .h file in the SDK
source. Someone is likely to write another one eventually, even if I
stop production of the current one.
Anyway, let me know your thoughts, folks.