Home sweet home?

In build 1918 I have merged in my work branches. This means the new Home UI — in its current state of implementation — is now available. Most of the basic features are working, however there are still many things that either need improvement or are completely missing.


Let’s first look at what is already there. As a general summary, the old game selection UI has been completely replaced with a new column-based design. The bigger your monitor, the more columns will be visible.

Start games and load saved games. All available games are listed in their own columns. Each game family (such as Doom or Hexen) has its own column. The saved games are listed directly below the game item. As a cool detail, the game icons are loaded directly from the WAD file(s) used by the games, even when you have selected additional packages to be loaded for the game. As a stylistic choice, the game icons are then colorized to match the column’s primary color.

As a shortcut, you can double-click on games and savegames to load them immediately. You can right-click on games to show a context menu with additional functions.

Persistent package selection for profiles. When a profile is selected, a Packages button is shown next to the game’s Play button. This opens up a package selection dialog, where you can select which WAD files and other packages to use with the game. The selections are saved in the configs/game.dei file in your runtime folder.

Creating and editing custom profiles. At the bottom of each game list is a button for creating a new profile. This is similar to creating your own profiles in the old Snowberry front-end. You can choose the game and the packages to use with each profile. Right-click on custom profiles to edit or delete them.

List and join multiplayer games. Multiplayer games discovered via dengine.net or on the local network are listed in the Multiplayer column. Currently the only available function is to join the game.

Settings. There are a couple of settings offered in the Home settings submenu (gear icon > Home). You can choose which columns are visible, and whether unplayable games should be included in the lists. You can use this to hide game families that you are not interested in.

Packages sidebar. When a game is running, you can still load and unload packages on the fly using the new Packages sidebar. At the moment, this can be opened via DE menu > Packages. Loading and unloading packages via the sidebar only affects the current game session; the selections are not saved anywhere.

Bugs and missing things

This is still a work in progress, so there is quite a list of bugs and missing features at the moment:

  • You may encounter some crashes while navigating the UI, opening and closing popups.
  • Custom profiles don’t yet have saved games associated with them. Eventually the saved games will be aware of which packages were used to create them, and this allows linking them appropriately with the game profiles.
  • Support for Snowberry .addon/.box bundles is still missing.
  • Several UI elements are just placeholders, for example many of the […] menu buttons.
  • The new UI widget keyboard focus indicator is still quite rough, with inaccurate positioning and animation issues.
  • The package selection dialog needs basic usability improvements for easier adding/removing of packages.
  • The multiplayer game listing lacks certain pieces of information that were previously displayed.
  • Tons of polish is missing and some layout bugs can occur. For instance, the number of visible columns may be incorrect when first launching the app; resizing the window will redo the layout.
  • I intend to still adjust the overall design in terms of element sizing, colors, and animations.
  • Keyboard shortcuts! Also, arrow key navigation.
  • Needs some more performance tuning, particularly when dealing with long lists of packages.

Let me know if you have any feedback or other comments about the direction of this new UI, but please keep in mind the issues listed above. I’m now continuing work on this in the master branch, so updates should be coming out a lot more frequently.

P.S. Also note that several file writing issues (as noted in the previous blog post) have now been resolved.