Last week I merged two of my work branches to the unstable master and started work on automatic updates.
The "autostr-and-garbage" merge was rather straightforward, as it did not introduce significant changes to existing code. It should however bring us some benefit down the road in the form of easier string management in C code (which still comprises majority of the code base).
The "de2-args" branch was more impactful, as it completely replaces the handling of command line options passed to the engine. Particularly on Unix platforms we have long been suffering from glitches in the parsing of options, for instance in order to specify a path that contains a space it was necessary to apply nonstandard quoting around the path. Now the options are parsed according to platform conventions. This also means that if a relative path is specified on the command line, it is resolved relative to the current working directory at startup time. For example, with the option "-file addon.pk3", the "addon.pk3" file would be loaded from the current working directory where the engine was started. Previously such relative paths were interpreted as being relative to the engine's runtime directory (where you can find, e.g., screenshots and savegames).
After the merges and subsequent minor repairs were done, I commenced work on automatic updates
. Thanks to Qt, this has been progressing rather smoothly. Here's what is working so far:
- Doomsday can contact dengine.net to find out the latest stable/unstable build and determine if an upgrade is necessary.
- A notification dialog about an available update is shown with the possible actions that can be taken.
- A configuration dialog can be used to configure the updates (stable/unstable; how often to check, if ever; where to save the downloaded file).
- SourceForge download redirections are resolved and the package is downloaded via the instructed SourceForge mirror.
- The downloaded file is saved to the configured location.
The next step is to actually start the (re)installation using the downloaded file. This week I plan to continue focusing on this, hopefully managing a successful automatic update by the end of the week.
You may have noticed that over the past month or so that I've not been as actively involved in deng development as I generally am. Real Life personal issues have negatively affected deng and other projects I am involved with, although thankfully the situation in question now looks to have been resolved.
Its all well and good featuring cool things like shiny surfaces, detail textures and light decorations but if the core map geometry construction is flawed, it rather undermines it all. Particularly when it comes to dealing with doom.exe mapping tricks Doomsday's support has historically been found rather lacking. So over the past couple of weeks I have spent my time focusing on "back to basics" work in the map renderer.
It turned out that the geometry construction logic wasn't quite working the way it needed to in order to emulate the behavior of id tech 1's column based software wall renderer. I fixed several issues in the wall and sky-masked geometry construction exposed in big mods like Base Ganymede
, Kama Sutra
and Plutonia II
I also fixed an issue with the plotting of light decorations on middle textures that resulted in them being offset incorrectly.
As of these recent changes I'm satisfied that the core geometry is being constructed correctly and that we are now ready to move on to re-implementing support for more of the common mapping tricks. This is what I intend to focus on over the next couple of weeks.