Doomsday 2.0.2 released

The stable version 2.0.2 (build 2372) is now available. The release notes can be found in the Manual.

This is another patch release that fixes incorrect behavior and improves the stability of the engine. Some of the fixes affect data file identification, so if you’re experiencing issues with your WAD files or other resources, try selecting Clear Cache from the DE menu and restarting Doomsday so that all your data is reindexed.

I recommend anyone currently running Doomsday 2 to upgrade to 2.0.2.

Odds and ends

I’ve been getting back into the swing of things with a set of smaller changes and improvements. I haven’t yet started work on the major focus of the 2.1 release, which is planned to be Multiplayer improvements.

2.0.2 will be out on Saturday, July 1st, with a couple of bugfixes that I hope will be useful. As usual, I will post the details after the build is available.

The recent changes include:

  • Stability improvements. Several methods that went against the C++ standard were revised. Reliance on undefined behavior was leading to compiler optimization issues particularly with the latest GCC 7. Also, error reporting is now more robust. For instance, previously when something went wrong during busy mode (like engine startup), it could easily lead to a crash because the client app wasn’t reacting to the situation appropriately. When the error message was being shown, the application was still trying to do something in the background.
  • More powerful model scripting. Starting animations and timeline scripts via Doomsday Script.
  • The model renderer shaders support more macros for easier customizability. Generally speaking, using macros is more future-proof than writing completely customized shaders.
  • Resource identification fixes. There was a duplicate IWAD spec for Heretic 1.3 vs. SOSR. Now only the latter remains; if you have problems with your Heretic IWADs, Clear Cache and restart Doomsday. Also, autogenerated package IDs had a problem with special characters in file names. Doomsday will choose package IDs based on the file name of the data file, however it allowed spaces and quotes be included in the IDs. This lead to problems because whitespace characters are used as separators in lists of IDs, and quotes may not be accurately escaped in Info strings. Again, Clear Cache is recommended.
  • Assimp build option. There’s a new CMake build option (DENG_ASSIMP_EMBEDDED) for disabling the use of Doomsday’s customized version of Assimp. This allows one to configure Doomsday to use the Assimp installed as a system library, which is more common on Linux for instance.
  • More UI tweaks. Plenty of small things:
    • Minor dialog layout improvements to avoid awkward dimensions.
    • Changed the UI font on Windows.
    • Added popup outlines for visual clarity.
    • Fixed Home tab scrolling with the mouse wheel so that it doesn’t always jump to the previously selected item when switching between tabs.
    • Game icons are refreshed when package availability changes. No more missing and incorrect icons shown for game profiles.
    • Fixed missing window fullscreen state notification (was affecting the appearance of the “Quit” button on Mac).
  • Monitor refresh rate. Yesterday I started working on monitor refresh rate configuration options. I realized these have been completely missing from the settings for some time now. Doomsday does query the supported display modes, which includes information about refresh rates, so now you have the option of choosing which refresh rate Doomsday will prefer when switching modes on Windows/Linux (display mode changes are not done at all on macOS). However, I recommend you consider adjusting the game pixel density instead of the screen resolution to keep the UI sharp and crispy.

Notes about build 2353

I’ve been taking it easy for the past couple of weeks, but last weekend I did manage to merge the recent OpenGL changes to the master branch. Build 2353 now includes this work. Please let me know if something appears broken!

There was a slight problem with the autobuilder, so the build change log is empty. GitHub has your back, though.

Here’s a rundown of the most important changes: Continue reading Notes about build 2353

Doomsday 2.0.1 released

The stable version 2.0.1 (build 2311) is now available. The release notes can be found in the Manual.

This is a patch release that fixes a number of crashes and various cases of incorrect behavior. Many of the fixes are related to the new Home UI, but there are also other important improvements like faster model renderer performance.

I recommend anyone currently running 2.0 to upgrade to 2.0.1.

Planning ahead for 2.1: multiplayer and OpenGL

The stable version 2.0 has been out for a bit over two weeks now. I hope you’ve been enjoying it! I have been busy working on bug fixes for 2.0.1, which is soon getting into shape for release.

Now that the goals for the 2.0 release have been met, it is time to look ahead to version 2.1. The first point release is planned to primarily feature improvements for multiplayer games. I won’t be exclusively working on that, though, so various minor improvements will also be included. Small things like a persistent console command history and options to start a game profile in a chosen map are already available in the unstable 2.1 builds.

When it comes to the release schedule, it remains futile to speculate about how much time I will have for Doomsday in the future, but my hope is that point releases in the 2.x series will have a roughly six month cadence. While there is no specific release date set for 2.1, I am uncomfortable with the idea of more than 12 months between stable releases. If that much time passes I am willing to postpone the remaining work to a later point release and do a smaller stable release instead. I prefer that there is a steady and predictable flow of stable releases, much like the situation is with the unstable builds.

In any case, if you run unstable builds you will of course get all the latest improvements as soon as they are implemented.

Multiplayer

2.1’s primary objective in terms of user-facing features is multiplayer improvements. This means both bugfixes and new features. I envision the following MP-related improvements in concrete terms (list still subject to change, in no particular order):

  • Bug fixes. Multiplayer gameplay is suffering from a variety of small glitches, particularly in Hexen. The goal here is to get rid of the more significant ones.
  • Movement smoothing for enemies. Single-player games use movement smoothing for everything, so MP games should be no different.
  • New chat UI. Modern games have some established conventions regarding in-game chat, so Doomsday should take inspiration from them. The chat should use Doomsday’s native UI widgets so the font isn’t blurry or too large, text can have colors and rich formatting, there is nice scrolling, text entry is more versatile, and there is autocompletion for usernames and commands. One particular direction this feature could take is integration with the console command prompt, so one can still issue console commands using IRC-like slash prefixes while primarily still chatting.
  • New scoreboard UI. A better scoreboard would be a nice thing to have for competitive game types. There should also be an option for a small, always-on scoreboard HUD. I will likely end up with a toggle between completely hidden, small HUD, and full-size scoreboard modes.
  • More GUI options for configuring game via Shell GUI. Most of the gameplay cvars should be configurable via the GUI. The 2.0 Shell already offers a couple of options (such as game type and current map), but there are more options that would be useful to have conveniently available. My strategy with regard to the Shell remains unchanged, though: for hosting games, the Shell should be the tool you use. Duplicating its features in the client GUI would be more or less redundant and wasted effort. However, I can look into integrating the Shell better with the client GUI, so it is quick and easy to get a local server started, for instance, by launching the Shell via the client.
  • GUI for configuring map cycle. Map cycling is one important MP feature, especially for longer-running servers. By default, a co-op server will not restart the episode once it ends; map cycling should for instance allow configuring entire episodes to be played through and then restarted.
  • Remote packages. The key feature here is loading PWADs from the server.

OpenGL

The internal objective for 2.1 is to complete or at least take a major step toward migrating the rest of the OpenGL code to version 3.3, making it also OpenGL ES 2 compatible. GLES is a requirement for Android and iOS, and also Raspberry Pi (a good low-powered testing/development platform). As a nice side-effect, this transition will also future-proof much of the code for subsequent migrations (particularly thinking about APIs like Vulkan, or some other low-level graphics API of the future). The crucial advantage that this transition will provide is support for GLSL shaders when rendering world surfaces. This truly opens up the potential for renderer improvements.

However, in the scope of 2.1, it must be noted that this will be an internal change, meaning the renderer features available to you remain roughly the same as in 2.0. Some older GPUs may no longer be supported, although it is also possible that some OpenGL drivers work better with OpenGL 3 instead of the old compatibility profile. It may also be necessary to drop some older graphics settings that are no longer relevant, if it isn’t feasible to reimplement them with new GL code.

Finally, please remember that plans may change so none of this is particularly set in stone. Stay tuned for updates. 🙂

Doomsday 2.0 released

The first stable build of Doomsday 2.0 is now available.

The highlighted features of 2.0 are:

  • Home Screen replaces the frontend app. A launcher is no longer needed; games and add-ons can be managed using Doomsday itself.
  • Built-in support for different data file and package formats. Used packages are tracked in saved games and multiplayer games.
  • The new 3D model renderer that has been in development since the 1.15 release is now mature enough for use. It supports FBX and MD5 models, skeletal animation, GLSL shaders, and scripting.
  • This is the first 64-bit stable release for Windows.

See the Manual for the complete release notes.

Thanks to everyone who reported bugs in the release candidates! A number of nasty bugs were found and fixed. There is still a few less serious known issues that have been scheduled for next month’s 2.0.1 update.

Work on the 2.x series will now continue along the lines planned in the roadmap, with the first focus area being multiplayer improvements. Under the hood, there is still lots to do with updating remaining old OpenGL rendering code so we can take full advantage of shaders in future releases.

Website refresh

In preparation of the 2.0 release of Doomsday I have redesigned the dengine.net website from the ground up. The new design went live today.

While the old design has been perfectly adequate during the past years, I felt that a bit of freshness would do the site good. I also took the opportunity to tie all the parts of the site together and reconsider the overall organization.

There is a new navigation bar visible on all pages, even in the Autobuilder and Bug Tracker that have previously been detached from the rest of the site. This should make it easier to move around and find what you’re looking for. In the bottom of most pages, you can find the latest news and blog posts, recent builds, and currently running multiplayer servers — these were previously only shown on the dengine.net front page.

Following the migration of the forums, the Doomsday Engine Wiki has been replaced with the more focused and structured Manual. It uses DokuWiki, which makes it considerably less complex and lighter to run than MediaWiki. The old wiki will remain accessible at its old address (as read-only).

I quite enjoyed the chance to do some web development. The new implementation aims to be as light-weight as possible: there are no frameworks or toolkits in use beyond basic PHP and MySQL. Shared elements like the top bar are easily inserted into other pages via PHP includes. File caching is used in many places to reduce database access and other repeated processing. I’ve also been paying attention to making the CSS responsive and mobile-friendly.

Let me know if you find anything that seems broken. I will undoubtedly continue doing minor tweaks to the site over the coming weeks.

Doomsday 2.0 RC3

Update: New build 2272 available with updated IWAD recognition rules.

The third and possibly final release candidate of version 2.0 is now available (build 2272).

There is a whole bunch of fixes:

  • IWAD files are now recognized with stricter rules to avoid files from being misidentified as known IWADs. If you have been seeing problems dealing with WAD files in the Packages browser, try DE → Clear Cache and restart.
  • Under specific circumstances, opening the game profile package selection dialog would crash.
  • Hang when trying to spawn damage particles triggered by a very large amount of damage.
  • Light from the Torch powerup in Heretic and Hexen was rendered incorrectly.
  • 3D model animation problem where a non-animating mobj would be repeatedly restarting its animation sequences.
  • Several UI glitches of varying severity. For example, the Update Available notification was triggering a fatal error, and there were occasional random color changes happening when UI widgets were being drawn.

Another notable change is that the folders where Doomsday looks for IWADs and other data files are now configured in the same Data Files dialog. I’ve added a new quick-access button to the bottom of the Home’s Packages list for opening this dialog.

Full change log

Doomsday 2.0 RC2

The second release candidate is available: build 2257.

This build has a number of bugfixes and minor improvements, particularly when it comes to loading and unloading data files. Some of the fixes affect metadata generated for data files, so if you’ve been running RC1, I recommend clearing Doomsday’s resource cache. This will also ensure that all add-ons are detected again, if some files were previously missing.

When one loads a savegame, Doomsday will attempt to load or unload resources depending on what was used in the save. However, this was quite buggy and could easily lead to a crash. There was also a mixup that caused Doomsday to try load and unload the same files twice. These issues are resolved in RC2.

I’ve made a couple of usability tweaks in Home. It should now be clearer when a profile is unplayable because the game IWAD is missing, or if the problem is that your selected additional packages are unavailable.

RC1 notes