Last week I got back to work on Doomsday after a brief hiatus.
I started by taking a hard look at the stable to-do list and decided that many of the items were better moved to the Bug Tracker
and dealt with at a later time. The to-do list is meant for short-term, immediate tasks — lately it has had a tendency of growing longer and longer, which tells me we're not managing it properly. For reference, we're currently using several planning tools:
- Feature Requests Tracker (long term): the main database of ideas for future features and improvements. This is open for submissions from everyone and now also supports voting.
- DEW proposals (medium term): detailed implementation plans by team members. Proposals may mature into technical/user documentation about specific features.
- To-do list (short term): one-liners and brief notes about things we're currently working on.
The Candidate phase for version 1.9.9 has begun. I was kind of hoping to have build 600 as the stable build of 1.9.9 (like build 500 was the stable 1.9.8) but the vacation break happened to overlap this.
I did some general Candidate phase polishing, i.e., fixed bugs and addressed simple performance bottlenecks. In Hexen, I fixed a long-standing issue where the "kill" cheat wouldn't affect underwater Stalkers or buried Wraiths. I also adjusted the movement of fog clouds so that they don't jerk up and down suddenly. The auto-updater was slightly improved and a missing update status notification in candidate builds text was fixed.
One minor but significant change was in the syntax of DED files. It is now possible to use the following syntax to clear the Flags for a definition:
Flags = 0;
For details, see the commit note
It is important to note that this is now rightfully a syntax error:
Flags = ;
There are a few optimizations upcoming for the next candidate build. DaniJ has been working on the BSP builder; it should now be faster leading to shorter map load times. Also, I did some profiling runs and noticed that there was a disproportionate amount of time being spent calculating updated sector reverb properties. These are needed only for 3D sounds, and they are recalculated when the volume or surface materials of a sector change. However, only the properties of the listener's sector are ever applied, so updating them instantly for the entire map is quite unnecessary. Now they are updated just-in-time, when the player enters a sector.
This should have a two-fold benefit: there is no longer a long one-time delay after loading a map, as all the sectors are not updated instantly. During gameplay, no time is spent per frame for calculating updates, unless the player has crossed to a different sector. This should result in higher framerates in maps with a lot of moving planes.