Week 27/2013: Further script integration

edited 2013 Jul 8 in Developers
Last week was again spent on bug fixing and improvements for the upcoming stable 1.11. The up-to-date status of our candidate phase work is on the stable release to-do page:
http://dengine.net/stable_to-do_list

A couple of important model-related bugs were fixed: slash handling in definitions and illegal access of submodels. Stability should now be improved and some of the missing 3D models should again appear normally, as the paths are interpreted correctly.

I also made improvements to the task bar. The ">" button in the bottom left corner now pops up a menu with some basic console log related functions. I also fine-tuned the behavior of many of the widgets in certain edge cases.

The plan is to release the stable 1.11 in the second half of July, depending on the progress with the to-do items. The candidate work has been slightly slowed down by the dengine website improvements, however my summer vacation is starting soon so at least I should have plenty of time for Doomsday in the near future.

Input bindings and Doomsday Script

Doomsday has always missed a mechanism that allows performing tasks automatically when upgrading. I decided to use Doomsday Script to handle this.

At the moment, we need to have the new Tilde binding created so that opening the taskbar+console can be done in the manner familiar from previous releases. The problem is that bindings are persistent per game plugin, and when an upgrade is detected there is no guarantee that a specific game is loaded during that session.

When Doomsday now (build 920 onwards) detects an upgrade from an old build that doesn't have the Tilde binding as default, it persistently adds a callback function for all the game plugins. The callback creates the Tilde binding using Doomsday Script. That way, when the plugin is later loaded, the Tilde binding gets created for each game separately. In the future, some of the bindings can be made shared between all games so that the situation is somewhat simplified. For the time being we are storing them separately for each game, though, so this extra wrinkle is necessary.

This solution allowed me to establish some new/improved patterns about how Doomsday Script integrates with the rest of the system:
  • I added the App and Input native modules that provide access to the native App class and input subsystem.
  • How to extend the libdeng2 observer mechanism to scripts so that they, too, can register callbacks to be called when a certain notification occurs. Here it is important to keep the native code and scripts conceptually as similar as possible.
  • There is now an application bootstrap script that gets run as part of the app init (currently only for the client).

Comments

  • Last week I spent almost exclusively working on improvements to dengine.net and the Doomsday homepage.

    If you are reading this on our homepage then you will have no doubt noticed there have been some considerable changes. What originally started out as minor relatively self-contained changes to try out a few new ideas quickly snowballed into an almost complete redesign. The new design is intended to complement the new taskbar UI featuring in the upcoming Doomsday 1.11 release. I hope you agree that the new design brings some much needed consistency to the whole of the Doomsday user experience :)

    Following on from the previous week's PHP and Apache upgrades, the Doomsday homepage is now implemented with HTML5 and many page elements are now dynamically constructed in the browser client using AJAX (or so-called Web 2.0) techniques. Project news, build events, most recent build and most active server information are now all built in this way.

    The homepage also features a new forum template consistent with the new design and utilizing more semantic markup. While this is mostly finished there are however a few remaining issues which I'll address over the coming week.

    In addition to the homepage I also spent some time working on a new 1.4 version of the Doomsday master script, which implements many of the ideas outlined in the minimize communications with master server proposal. The catalyst for which being the homepage's built-in server browser as this is currently implemented in a less than ideal manner from a technical perspective. The revised master server script utilizes a more lightweight message format and introduces a new query API with JSON response digests (object graphs) and cache-friendly persistent storage. I expect this new version to go live towards the end of the coming week.

    This week I plan to finish off the homepage improvements and then resume work on the Doomsday 1.11 stable release polishing.
Sign In or Register to comment.