Steady progress

Last week I continued working on the Home UI as planned.

There is now basic keyword filtering for the Packages list. The entered words are matched against package names, IDs and tags, so it is possible to quickly locate specific packages.

The current implementation is quite rough, though, and not suitable for large collections of packages. It needs optimizing, and the list widget itself should support reusing a small number of widgets to represent only the potentially visible items. At the moment it simply creates widgets for the entire list, even though most of them would be outside the view.

Another improvement is persistent state for the Home columns and item selections. In other words, when you start Doomsday, the previously selected column and game are automatically re-selected.

On the whole the work is progressing as planned and it is clear what needs to be done next. My short-term goal is getting all the important features working so the new UI can be released in the unstable builds for public testing.

Prototype stage

I’m still focusing squarely on finishing a fully functional first iteration of the new Home UI, and it is coming along nicely. Here’s a brief glimpse of how things are looking currently (click for an animated gif):

home_columns

Basic tasks like selecting a game or a saved game are working, and I have a list of the multiplayer games up as well. Main focus is now on the Packages tab, where I’ve revamped the list’s appearance. The next step is to implement some additional features for managing packages, like sorting, filtering and searching. After that the only thing that’s needed is a little of bit of performance tuning in the widgets framework to iron out the worst bottlenecks — this is the most complicated UI so far running on the new widgets and it is revealing some previously unseen issues.

Home improvement

Work continues on implementing a functional prototype of the new Home design. The current status is that it is possible to select and start a game, and load saved games. The Multiplayer browser and package management UIs are still missing.

As expected, the planned ideas didn’t feel quite right when I got to try them out in practice. For instance, I was envisioning that when one selects a game (say, “Doom II”), a list of saved games would expand below it. The rationale was that it would save space to not show all the savegames all the time. However, in practice it was extremely distracting that the game items would keep moving up and down in the list due to saves being shown and hidden above them. I ended up just keeping the save lists visible all the time.

Next I will focus on the multiplayer browser. The basic idea is to use widgets similar to the ones used in game selection, but of course show information relevant to multiplayer. When it comes to the package manager, it will be based on the existing (preliminary) Packages dialog, with a couple of additions and improvements.

Homeward

With the 3D model renderer in reasonably good shape so that new models can be worked on, I’m now pushing toward building the front-end’s central features into the Home screen: selecting PWADs and other resources to use when playing a game.

The main feature I was working on last week was a new way of handling classic data files such as WADs, PK3s, DEDs, and DEHs. The engine is now able to recognize these files and treat them as Doomsday 2 packages internally. Additionally, I’ve added a small database of known files (such as the vanilla IWADs) that are further identified as packages with very specific IDs and versions.
Continue reading Homeward