UQE Hexen II

Friday, February 17, 2012
Its unbelieveable that its been almost a full year since the previous version of UQE Hexen II were released! When I released the previous version of UQE Hexen II with additional higher and widescreen resolutions gamers pointed out that the field of view (FOV) is still set at a fixed 90 degrees which is typical for the classic 4:3 letterbox resolutions.

When I investigated the FOV implementation in the engine I decided to port the original Quake engine's FOV setup code over to Hexen II as it seemed as if its implementation pretty much fixed it to 90 degrees. Changing the FOV on the console did not change the field of view at all. After some work on the subject I succeeded in changing the code to actually calculate the FOV value dynamically based upon the currently used resolution.

Some third party libraries also got an update with this release.
The JPG library has been updated with the one used by Quake III Arena which for one allowed the loading of JPG data via a stream of bytes which helped a lot with the recent implementation of PK3 (zip) loading support. The engine is capable of loading game assets from a mix of PAK and PK3 files. The code responsible for loading data from PK3 files have been directly ported from Quake III Arena as well.

The FMOD middleware library implementation in UQE Hexen II also got a huge upgrade.
It got completely re-written from scratch using the at the time of writing the code version of FMOD. Theres been quite some logical changes apart from only the technology upgrade. The engine now also checks for WAV files as an alternative music playback format if it can't find a suitable OGG or MP3 file. The dated WinMM-based CD Audio playback code have also been replaced with brand new FMOD code that now manages the playback of CD Audio and the same has been done to the native MIDI implementation. Moving all music playback functionality to third party middleware saves some legacy code from being part of the engine and probably might even help reduce the possibility of legacy issues rearing its ugly head at some point in the future as all source code tend to decay over long periods of time.

With the release of UQE Hexen II it will be the first time the software renderer will be completely omitted from the project as it serves no real purpose anymore and becomes pretty difficult to maintain and keep it error-free. I did however made some changes to the remaining OpenGL version of the engine to enable it to simulate the classic effect the software renderer has given by simply changing some console variable values. To help with simulating the unfiltered effect of textures in the software renderer I've added a "Point Sampled" texture mode that can be set from the menu. To get the best classic look and feel for the game will be to set the texture mode to "Point Sampled" and restart the engine using a lower resolution mode like 640×480 for example.

There are numerous more additions and tweaks to UQE Hexen II, but they are too minor to write about.