Week 5/2013: UI and network evolution
Last week I was working on the new libdeng2-based UI framework and started improving network code as part of the libshell / Shell app functionality.
UI Framework
On the whole, work on the next-gen Doomsday UI framework continued at a good pace. Even though I'm currently focusing on the text-mode shell UI, I'm taking care of separating which parts are generic enough to be used in the client's GUI as well.
The implementation of my somewhat experimental layout Rules continued to evolve during the week. While I was adding a couple of dialogs to the new Shell app (that allows connecting a server over the network), I discovered a number of flaws in my implementation of the Rules. Fortunately, I was able to address the issues after a bit of rethinking. I ended up with a much easier-to-use API for specifying the layout of a widget, too.
Network Code
While UI code is my main focus for 1.10, a Shell app needs a lot of network functionality, too. As Doomsday's low-level network code is mostly ancient and in need of replacing, pretty much all the work I did last week didn't touch the existing code, but rather augmented it with new capabilities. In time, the old code will disappear completely.
libshell (a shared library for server management) was improved with code related to starting a new server on the local machine and locating servers running on the local network. The library will eventually also be incorporated into the client app, making it much easier to run local multiplayer games.
An important addition to libdeng2 was the Beacon class, which allows servers to announce their presence and status on the local network using UDP. It should be noted that this functionality is only intended for the local computer or local network; the master server is still the mechanism for locating servers on the internet.
The Deng Team MP test servers have been frozen at version 1.9.10 ever since the stable release. Last week I again enabled the autobuilder for them, so that the test servers keep using the latest code in the master branch. This is important for me as I keep evolving the network/MP code, although it may mean that from time to time you will experience problems connecting to or playing on them.
The MP test servers are using a script called "doomsday-host" (included in the Doomsday repository/tarball), which handles their configuration and restarts servers when they crash. As the VM hosting the servers ran out of disk space, I improved the script so that it compresses old doomsday.out files in the servers' runtime directories.
The plan for this week is to keep working on libshell and the Shell application. Thus far I've only been running it on Mac OS X — other platforms will require a little additional work.
UI Framework
On the whole, work on the next-gen Doomsday UI framework continued at a good pace. Even though I'm currently focusing on the text-mode shell UI, I'm taking care of separating which parts are generic enough to be used in the client's GUI as well.
The implementation of my somewhat experimental layout Rules continued to evolve during the week. While I was adding a couple of dialogs to the new Shell app (that allows connecting a server over the network), I discovered a number of flaws in my implementation of the Rules. Fortunately, I was able to address the issues after a bit of rethinking. I ended up with a much easier-to-use API for specifying the layout of a widget, too.
Network Code
While UI code is my main focus for 1.10, a Shell app needs a lot of network functionality, too. As Doomsday's low-level network code is mostly ancient and in need of replacing, pretty much all the work I did last week didn't touch the existing code, but rather augmented it with new capabilities. In time, the old code will disappear completely.
libshell (a shared library for server management) was improved with code related to starting a new server on the local machine and locating servers running on the local network. The library will eventually also be incorporated into the client app, making it much easier to run local multiplayer games.
An important addition to libdeng2 was the Beacon class, which allows servers to announce their presence and status on the local network using UDP. It should be noted that this functionality is only intended for the local computer or local network; the master server is still the mechanism for locating servers on the internet.
The Deng Team MP test servers have been frozen at version 1.9.10 ever since the stable release. Last week I again enabled the autobuilder for them, so that the test servers keep using the latest code in the master branch. This is important for me as I keep evolving the network/MP code, although it may mean that from time to time you will experience problems connecting to or playing on them.
The MP test servers are using a script called "doomsday-host" (included in the Doomsday repository/tarball), which handles their configuration and restarts servers when they crash. As the VM hosting the servers ran out of disk space, I improved the script so that it compresses old doomsday.out files in the servers' runtime directories.
The plan for this week is to keep working on libshell and the Shell application. Thus far I've only been running it on Mac OS X — other platforms will require a little additional work.