The 3D Software Rendering Technology of 1998's Thief: The Dark Project
nothings.org
nothings.org
No Sean. To someone who's currently reverse-engineering Thief for the purposes of remaking it for modern platforms, this is a wonderfully helpful document. Many thanks.
GOG might well come out with a version and I'd be ecstatic if they made a bundle which could run predictably on a modern platform. It would certainly save me a bunch of work :)
I'm jealous - I really am ;) I know the process - hyperthreading fix, DDFix, DarkLoader, T2 meshes in T1, safe texture manager switch, reload the codecs and so on - works well for some people. I guess I'm scratching a (very large) personal itch.
We did some similar occlusion stuff in our (admittedly terrible) game ("Assault Rigs", Psygnosis). We sliced foreground object geometry along a plane where necessary to resolve sort issues with the background - and also to allow the scenery to cast "fake" shadows on parts of the object. I also came up with bitfield-represented PVS independently of the Quake guys :)
If I remember correctly, I did a special-case constant-z renderer for big scenery polys, but the in-game geometry used self-modifying code to set the constant U/V gradients for the spanline. Ugh.
Of course on the PS1, there was no software rendering anyway, and we just had to subdivide foreground polys to avoid affine-mapping artifacts. I'm still not sure how we dealt with all the seaming issues that that can introduce.
Ah, happy days :)
But my favorite bit of the engine? Sound. It was so vital to gameplay you had to consider it heavily while creating a level. I don't think I had to consider how sound travels through a level since.
Dromed brings back memories. http://www.keepofmetalandgold.com/upcoming.htm -- The Garden, 2002, FM under development by mr_luc; screenshots here: http://www.keepofmetalandgold.com/ej/gardn/ -- wow, way back.
Dromed was a bear. I remember the 'water brush hack' -- you couldn't make a cylinder with more than a certain number of sides (8)? But if you made an air brush with 8, a water brush with 8 but rotated, and then a water-air, and then a water-solid, you could make columns with lots of sides. I did that process over and over again to make a dome, and then to hollow it out on the inside, too.
I started programming for money around that time and had to leave it all behind. But every few years I've downloaded all of the Thief FM's and replayed through both games and the standout Fan Missions.
Except recently. I can't get it to work on Windows 7, with VMware or any other way.
The impressive things about the game engine were 1) the sound; 'room brushes' to apply different acoustics to areas, which promoted sound design to a first-class citizen of level design, 2) the object system. It was surprisingly flexible, and you could do a lot of very programming-like things because there were various stimuli and stimuli receptors you could attach to objects, be they AI or elevators or other things ...
The sound propagation in Thief based on the various room types was amazing! It's a shame that modern games don't put as much focus on sound. You can do some cool stuff with it: http://www.youtube.com/watch?v=LJwUVCXH-gM
System Shock 2 is still one of the scariest games around.