D2X-XL Worklog

Notes on features and problems from the development of D2X-XL, newest first.

Multi Threading In D2X-XL

D2X-XL contains multi-threading code for a long time already, and it could significantly speed up rendering (for the vertex lighting path, that is). It had its share of problems though: Some tasks that I had multi threaded tended to lock up, and I could never figure why (debugging multiple threads is a daunting challenge to say the least). It didn't work at all for the new lightmap and per pixel render paths, and it also didn't help with a few very CPU intensive tasks, namely computing effects like smoke, lightnings and energy sparks.

I had done quite some experimentation during the past months, trying to put the renderer in a different thread and having the non-visual stuff run parallel to it, but first of all it was a pain in the neck to share the OpenGL render context between the main thread doing the 2D rendering for the menus, and the render thread displaying the mine, and secondly with a few exceptions the renderer consumed 95% of the entire frame time, so it wasn't worth it.

Still, this was rumouring in the back of my head, and sometimes such things are like wine: You need to let it rest and mature to be able to enjoy its full potential. So after letting the whole story rest and mature for a while there in the code cellar in the back of my head, I came to the conclusion that putting the effects code in a separate thread and having it run parallel to the renderer solved two problems at once: First of all, I didn't have to share render contexts any more, and secondly I could accelerate exactly that code that in extreme cases would slow the program tremendously down by executing it when the program did something very time consuming anyway already. So the main benefit of multi threading now will not be increasing frame rates in standard situations (sounds like I've been watching too much soccer lately ...), but prevent them from dropping as much as they did in very CPU intensive scenes.

In the course of doing that, I also salvaged of the existing multi threading code what had proved to be useful and stable, and so I can now present a new take at multi threading in D2X-XL that should really make multi core CPU owners happy. To round the package off, the multi tasking options menu has gotten an overhaul, offering a few meaningful options where the various multi threading blocks in the program can be separately turned on and off, be it for testing and speed comparison, or because one of them causes problems (which hopefully won't arise, as I have done a lot of testing and rearranging code to avoid data invalidation by competing threads).

Regard that you still need to enable multi threading by placing the switch '-multithreading 1' in d2x.ini.


News

A new D2X-XL update fixing broken screen resolution persistence is available

There is yet another D2X-XL update is available (the new Pumo Mines broke a few things ...)

Believe it or not: There's a new D2X-XL version online!

Uploaded updated D2X-XL and library source code that compiles with Visual Studio 19

After a really long time, another new DLE version is available

A new DLE version is available (hear, hear!) :D

A new Max OS X version of D2X-XL is available!

D2X-XL now offers a cartoon style render mode!

New D2X-XL and DLE versions are available

Blarget has got his own area in the level spotlight

New D2X-XL and DLE versions are available

A couple of levels have been added to the level spotlight

Hooray! We're finally having a new Mac OS X version of D2X-XL!

D2X-XL now features an observer mode for multiplayer games

A new D2X-XL version with improved multiplayer synchronization is available

A new D2X-XL version fixing out of sync problems in multiplayer games is available

A new D2X-XL version with many multiplayer bug fixes is available

Added high quality (ogg) Descent 1 and 2 music to the downloads area

A new D2X-XL version with important bug fixes is available

D2X-XL compiles and runs on Linux again!

Descent 1 and 2 high res textures are now available as complete downloads

A new DLE version with a ton of bug fixes and improvements is online

A new D2X-XL version is online

A new D2X-XL version with a much needed bug fix is online

A new DLE version is online

Published another DLE version with more bug fixes and improvements by Sirius

Published a new D2X-XL version

Published a new DLE version with tons of bug fixes and improvements by Sirius

D2X-XL now supports Oculus Rift 3D headsets!

Updated DLE and D2X-XL to support new level features requested by Pumo

Added an article about DLE's new tunnel generator to the worklog

DLE's new tunnel generator is finished

Added a new article to the worklog

Published a new DLE version

Added a new article to the worklog

Added two new articles to the worklog

D2X-XL and DLE-XP now support triangular segment sides!

DLE-XP has an OpenGL render and 1st person view!

New DLE-XP version available

Wrote a new worklog article

Check out DarkFlameWolf's level spotlight section!

New DLE-XP and D2X-XL versions are available

A new DLE-XP version is available

Added a worklog article about the way point feature

Added way point support to DLE-XP and D2X-XL

Posted a bunch of new screenshots

Posted a bunch of new screenshots

A New version of DLE-XP is available

New OS X version of D2X-XL is available!

Added article about lightmaps to worklog.

New article and video added to worklog.