I’ve begun work (a while ago actually) on a program that I had hoped would be able to with a click of a button convert Half-Life BSP files into their original RMF or VMF file with all the solid object data intact. As I progressed however, I realised that this is quite an impossible task. Unlike Source engine BSP files, Half-Life BSP files do not store their original brush data and makes simple decompilation not an option for this task.
Now, the reason I am so interested in doing this is primarily to convert the old Day of Defeat v1.3 maps into maps that can be played on the Source engine which has a significant online gaming community unlike it’s predecessor which has slid into an endless pit of empty servers and bots fighting bots. There’s something almost magical about these maps that drives me to complete this program.

Day of Defeat
I first played Day of Defeat some seven years ago (I feel old now) and the map I remember seeing was dod_overlord. At the time, I experienced many hours of enjoyment storming the beaches or alternatively holding the beachhead with all my might. The graphics were top notch at the time…sort of. Looking back, it was extremely blocky. But then again this was a free Half-Life modification. Better looking games were kicking around in 2002 but this one held my interest.
Enough reminiscing though, back on track! With my dreams crushed of a quick click of a button ‘conversion’ from one engine to the other, I had to dream up another way to port over the maps.
My options are very limited. I’m basically left with either writing a ‘staight port’ program that somehow takes in the already compiled surface and visibility data from Half-Life and compiles it on the Source engine or I can devise a visual tool to aid me in manually reconstructing the brushes one by one. So in the spirit of adventure and learning I have gone with option number two.

dod_overlord
I envision the tool to be rather similar to Valve Hammer Editor or even Nem’s Crafty program. The basic concept is to select faces that will comprise a given brush. Take for example, a box sitting on the ground. What the tool will do is allow you to select the surfaces to comprise a new brush. If surfaces are missing I will write algorithms to fill in missing surfaces. If surfaces are fragmented due to VIS slicing I will implement a way to combine the surfaces.
This is merely a rough draft and a jot down of my plans for this tool. I will go into more detail as problems arise so I may document how I plan to solve them.
I will probably write a draft of the Half-Life BSP file format as I understand it as my next entry and detail some of the problems I anticipate I will run into.