Week 4/2014: Multiplayer UI, Mac fonts

edited 2014 Jan 30 in Developers
Last week I started work on the new multiplayer UI for the client and implemented native font rendering on OS X.

The multiplayer UI is the last remaining bit of the old UI left in the engine. I've now started constructing equivalent functionality that fully integrates into the task bar. Once completed, we can drop the old UI and with it, a sizable portion of the old supporting code.

I'm taking this opportunity to rethink and revise the UI when it comes to joining a multiplayer game and how to control the connection once joined. For instance, when one joins a game, the appropriate game plugin will be automatically loaded. This means there will be one less reason for a failed connection.

On a separate note, it's been bothering me for quite some time now that on the latest version of OS X, Qt doesn't really know how to handle font weights properly. Thus I indulged in a bit of OS X specific coding by implementing native Core Text based font measuring and rasterization. I'm pleased to say that this now works exactly as it should, with light, normal, and bold font weights all applied as intended. At the same time, I ensured that in the future the UI framework is capable of using bitmap-based runtime generated fonts like the ones used by DOOM's menus and game UI.

I made a few improvements to the UI in general. For instance, the initial game selection menu now adapts better to view size: the number of columns and rows in the menu is reduced when the view is smaller.
adapt_gamesel.jpg

Another change is that labels can be configured to appear with an animation where their size grows from zero to the correct size. This is useful in dynamic lists like the alerts dialog and the new multiplayer servers list that would otherwise appear messy if the items just pop into place suddenly.

I also tweaked the default UI style so that there's a second accent color that matches the DE logo. This new color is now used in the console command hint and dialog default buttons. I feel this brings some nice balance to the color scheme as there are some elements that match the logo, particularly along the bottom of the view.

Comments

  • skyjake wrote:
    For instance, when one joins a game, the appropriate game plugin will be automatically loaded. This means there will be one less reason for a failed connection.
    That is cool; that the MP joining UI is effectively shared by all games.


    I notice a commit about a place holder MP icon that is looks to have been drawn in a similar art style to taskbar icons; does this spell the end of the game mode selection menu (i.e the Dday specific menu between selecting new game and picking an episode/skill level) within the games themselves? That the MP joining UI will now be accessed via the taskbar and/or ring Zero? That would certainly highlight the above quoted feature.

    EDIT: Ok, I now see the placeholder icon is for the Shell, rather than the UI, but I would still like to ask the question the above leads into, if I may?

    Will the hosting MP UI be added to the Shell or to Dday (in the later case, potentially, the Shell would be launched in the background and Dday would hand it a series of settings to host a game with; I figure the host UI would include a checkbox to determine if the player then immediately joins that game or not)?
  • Vermil wrote:
    I notice a commit about a place holder MP icon that is looks to have been drawn in a similar art style to taskbar icons; does this spell the end of the game mode selection menu (i.e the Dday specific menu between selecting new game and picking an episode/skill level) within the games themselves? That the MP joining UI will now be accessed via the taskbar and/or ring Zero? That would certainly highlight the above quoted feature.
    We are thinking about revising the games' main menus when it comes to the MP items. The task bar will provide everything one needs to play MP games, at least for clients at this time. The main idea would be to streamline the menus a little so they don't have so many separate pages.
    Will the hosting MP UI be added to the Shell or to Dday (in the later case, potentially, the Shell would be launched in the background and Dday would hand it a series of settings to host a game with; I figure the host UI would include a checkbox to determine if the player then immediately joins that game or not)?
    The client will eventually get an option to host MP games in a convenient way, allowing the hosting player to join the game as a client. This is feasible to implement because the core Shell functionality has been placed in a shared library and can be accessed from the standalone Shell tools as well as the client.
Sign In or Register to comment.