Week 34/2013: Map hacks, new Updater UI

edited 2013 Sep 2 in Developers
Last week I continued my UI changes and DaniJ was improving support for Doom mapping hacks.

My main objective for the week was to revise the autoupdater's dialogs. To make this possible, I first needed to apply some enhancements in the new UI framework related to dialog-type widgets, general ease-of-use, and the layout mechanism.

One of the central components of the layout system is called RuleRectangle. It basically contains information about where an individual widget is placed on the screen. The tricky part is that one can define the placement of any widget in relation to other widgets (typically while also applying mathematical operations to the coordinates), and the system needs to very quickly resolve where everything ends up when drawing the next frame. I managed to rewrite this class entirely in a more efficient and robust manner.

Another change was to enhance the way a widget's margins are defined. This is the amount of empty space to leave between the widget's rectangle and its content (cf. padding in the CSS box model). Unlike before, now every widget can have separate margin widths on each of its four sides, and the margin values are stored as Rules so they can be used freely in widget layout calculations.

The UI framework now supports dialog-type widgets as a specialization of popups. The dialog may appear as a standalone widget (centered in the view), or it may appear attached to some other UI element, like a regular popup.

These changes, plus a few more under the hood, allowed me to completely revamp the Updater's UI. First a screenshot of the new automatic update settings dialog:


The settings can be accessed from the DE menu or from the update check dialog.


Now when a download is in progress, its status is displayed in the notification area and one can access the download dialog simply by clicking the notification widget. All of this means there are no more forced switches to windowed mode or playing around with separate dialog windows.

I also improved the About dialog to be a bit more useful. You can now see the active GL and audio configuration by clicking on the respective buttons:


Finally, on Windows, the UI style was improved to use the Open Sans font. This provides a fresher, more readable look for the UI.



  • Last week I worked on improving DOOM map hack support.

    The focus of my work last week was specifically on the "deep water" class of map hack. These constitute various and often elaborate, so-called "self-referencing" mapping constructs. Mappers have and continue to use these for a whole range of effects, from partially submerging the player in water to seemingly impossible invisible bridges.

    To recap, this class of map hack has had limited support in Doomsday previously but was removed during the old 1.9.0-beta phase (specifically around the time glBSP was moved into the engine). This was done for various reasons but mainly because the accumulation of hacks upon kludges intended to deal with these had built up to the point where following this logic through the map renderer was nigh on impossible. We needed to start over.

    Flash forward a few (okay, quite a few...) years and lets see how some maps look. Bear in mind that these shots were taken with the current master and not using today's build 968 (and so narrowly missed a couple of commits which some of these areas rely on).

    Most of you will be familiar with this area from TNT MAP31:

    The nukeage pool secret in Alien Vendetta MAP01:

    Double bridge in Requiem MAP13:

    And by no means least; mine shaft elevator in Requiem MAP08:

    I think you'll agree that the new implementation is achieving a much higher success rate. Particularly with more complex and/or nested map hacks. While this is certainly not final I think its good enough for me to now shift my attention to tackling another class of hack.

    My plan for next week is focus on support for the "missing texture" class of DOOM mapping hacks. As this name implies these utilize a ring of missing textures to coerce the original game renderer to "flood fill" over "holes" in the floor/ceiling and often to create a similar looking "deep water" effect.

    kustra.wad MAP05 serves as typical example of how this class of hack looks currently (the numbers are those of relevant sectors which are produced by the new debug display enabled with cvar rend-dev-sector-show-indices). The issue in question being the big hole in the ground that currently looks like a waterfall:
  • May I suggest flipping the on/off switches to more follow other programs and OS's that use switches (left is off, right is on)
    As seen in Ubuntu, Android and iOS

    http://media.idownloadblog.com/wp-conte ... option.jpg
    http://www.antetype.com/blog/wp-content ... itches.png
  • KuriKai wrote:
    left is off, right is on
    At present the toggles are visualized similarly to how iOS does it, however the "sliding knob" is black instead of white.

    This is likely not the final visual appearance of the toggles, but for now I'm happy with it.
  • Is the new world renderer going to replace hacks altogether and make them obsolete when the time comes? Hacks are obviously there to produce certain effects that can't be done in a real manner because the engine can't support doing it in a more realistic manner.
  • In simple terms, the renderer is purely the visual display of the world; Doomsday, like all OpenGL ports can't use the Vanilla Doom renderer and hence it doesn't naturally support the various visual illusions (i.e. 'rendering hacks') people were able to coax out of the Vanilla Doom renderer. Hence support for them has to be manually added to Doomsday.

    The actual world will be determined by the mapping and modding features the map format and engine support; Doomsday 2 will indeed have a suite of new modding features that allow modders to make mods and maps that do things that aren't possible (or can only be faked by rendering hacks) in either Vanilla Doom or Doomsday 1; note the passing mentions of 'DED 2.0, XG 2.0 etc on the road map, for instance. Naturally, the renderer does have to be capable of displaying all the mapping and modding features supported though.
  • gary wrote:
    Is the new world renderer going to replace hacks altogether and make them obsolete when the time comes?
    Map hacks are basically a crude way to extend the original Doom map format with new features, e.g., deep water. As Vermil explained (as far as Doomsday is concerned) they are not directly related to the actual map rendering, but instead how the original map data is modeled as 3D polygons.

    The plan for Doomsday 2.0 is to make it possible to do similar kinds of "special" map constructs in officially supported, more flexible ways (e.g., XG 2.0). However, if one takes advantage of these, the map is no longer compatible with other Doom ports.
  • For the Updater UI, will it be possible to add an option to close Snowberry from in-game? I tried out the new Updater UI the other day and had to Alt-Tab out of Doomsday to close Snowberry before being able to continue with the updater. Currently I have snowberry set to remain open after exiting Doomsday, in the event I want to make an adjustment or two to the settings (ex: PWADs) before re-launching Doomsday.

    Or would this not be worthwhile since Snowberry will eventually be gone?
Sign In or Register to comment.