Tuesday, 31st July 2007
Looks nice, I could never figure out Quakes lightmaps.
The unofficial Quake specs are a bit confusing on this matter. To get the size of the texture, find the bounding rectangle for the face (using the horizontal and vertical vectors to convert the 3D vertices to 2D in the same way as it's done for the texture coordinates). Then divide by 16 and add one, like this:
Width = (Ceiling(Max.X / 16) - Floor(Min.X / 16)) + 1 Height = (Ceiling(Max.Y / 16) - Floor(Min.Y / 16)) + 1
It'd certainly work, but it'd probably look a bit odd (mixing and matching, that is - emulating the appearance of the software renderer on its own is very cool).
Quake II appears to contain a lump that maps 16-bit colour values to values in the palette. I don't know what that was used for, but you could probably use something similar to convert the truecolour textures to 8-bit textures.
The rest of this journal post goes off on a bit of a historical tangent.
Before Quake was released, ID released a deathmatch test program, QTEST. This featured the basic engine, three deathmatch levels and not a whole lot else.
However, the PAK files contained some rather interesting files, including a variety of models - some of which were later dropped from Quake entirely!
The model version is type 3, and I've made a guess at the differences between type 3 and type 6 (6 is the version of the models in retail Quake). Type 6 has 8 more bytes after the frame count in the model header. I skip the "sync type" and "flags" fields, as I don't know what these do anyway. Type 3 files don't have a 16 byte frame name, either (between the frame bounding box information and vertices in type 6).
The most impressive extra model is progs/dragon.mdl. It appears in this early screenshot:
One character which changed design considerably was progs/shalrath.mdl.
Appearing in registered Quake, it became the following (QPed seems to mangle the palette, sorry):
The charmingly-named progs/vomitus.mdl is likewise untextured:
The frame data appears to be corrupted here, so I don't think my model loader is working properly. However, you can still get the rough idea of what progs/serpent.mdl might have looked like:
The fish model is quite different, but like the above its last few frames appear corrupted.
A number of textures changed in the final release. Some model textures, such as the grenade and nail textures, were originally much larger.
The Ogre before and after his makeover
The original 'gib' textures, eventually unidentifiable meat, were also toned down quite a lot from the rather more graphic ones in the QTEST PAKs.
The screenshots (taken directly from QTEST - I can't load those BSPs myself) show a few other changes - billboarded sprites for torches and flames were replaced with 3D models, the teleporter texture was changed and the particle effects for explosions were beefed up with billboarded sprites.