Homeward

With the 3D model renderer in reasonably good shape so that new models can be worked on, I’m now pushing toward building the front-end’s central features into the Home screen: selecting PWADs and other resources to use when playing a game.

The main feature I was working on last week was a new way of handling classic data files such as WADs, PK3s, DEDs, and DEHs. The engine is now able to recognize these files and treat them as Doomsday 2 packages internally. Additionally, I’ve added a small database of known files (such as the vanilla IWADs) that are further identified as packages with very specific IDs and versions.

I’m quite happy with how this mechanism actually works. The Doomsday 2 internal file system (FS2) is rather Unix-like, and one of its features is symbolic links to any other file. To make, say, a WAD file appear as a package, I’m simply creating a symbolic link to the WAD file with a package-like name ({packageid}_{version}.pack). The package loading code can then treat this symbolic link just as if it were a .pack folder or a ZIP archive.

This all means that the engine can now both recognize and load packages that represent classic data files — although “load” in this situation means marking it to be read by the old resource subsystem when loading a game. The next piece in the puzzle is reworking how game plugins register themselves in the engine so that they can define which packages are required for each game. After that, the UI can finally be built for the user to select additional packages for each game, and eventually create additional game profiles (like in Snowberry). I’m expecting the Home UI will be changing quite significantly as a result of these new features.