Last week I eased back into multiplayer debugging and addressed a number of glitches with weapon psprite animations. As usual, because we are effectively retrofitting the old (positively ancient) codebase with distributed features such as game state that exists both on the server and the clients, the issues stemmed from old code that was working with outdated assumptions. I ended up shifting more of the weapon logic onto the client side.
Looking at the longer scope of things, it seems to me that we should prioritize releasing a new stable version soon. I'm starting to get the feeling that sorting out everything in the ringzero+master branch will still take several months of effort, and it's giving me some doubts whether it makes sense to have ringzero as part of the next stable release. A more reasonable plan might be to tidy up the master branch and release it as the stable 1.9.7 before the end of the year. I really would like to have a stable release during 2011. DaniJ, what do you think?
This week, however, I will continue focusing on debugging the multiplayer weapon behavior, and evaluating what other showstoppers there are in the master branch.
Work continued last week on ringzero+master branch.
To date, Doomsday has used the OS-native path delimiter for representing paths to both files and resources in our virtual file system. With resource paths now being represented as URIs, it was necessary to implement a temporary mechanism in de::Uri
, which automatically rewrote paths using the OS's native delimiter.
With work having been completed on the resource collections (Fonts, Materials, Textures, etc...) in the previous week, now was the time to switch the delimiter used for representing paths throughout the engine to a uniform forward slash on all supported platforms. The only times a path is now converted to OS-native delimiters is when dealing with real files on the local system or when being displayed to the user (e.g., console and log).
I also implemented a new mechanism for configuring the render list texture units with a new write-state mechanic. The previous implementation made texture unit configuration a function of primitive writing, therefore every time one wanted to write a polygon to the lists, the texture unit config had to be reconstructed. The new mechanism allows the texture unit configuration to be directly mapped from cached data in MaterialSnapshot
now using forward slashes, I can now finally implement the percent-encoded representation that is needed to resolve the last Big Issue on the todo list
. Hopefully I'll have this remaining piece of the puzzle implemented by my next update.