D2X-XL Worklog

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

Switching To A New Compiler

A few weeks ago I had decided to finally make the switch to Microsoft's latest and greatest (and most of all free) C++ compiler: Microsoft Visual Studio 2008 Express. Transition of the projects required for D2X-XL went smooth ... so I thought.

Reality caught up quickly with me. I started to receive bug reports about D2X-XL quitting immediately after having been launched, with Windows displaying an error message that 'The application couldn't be initialized properly'. I began to dig around in the internet and after having read a very authoritative discussion thread about the issue came to the conclusion that D2X-XL users with that problem only needed to install the Microsoft Visual C++ 2008 Redistributable Package, and maybe the Microsoft .NET 2.0 Framework to be happy with the program again.

Not so.

A D2X-XL user drew my attention to the manifest files the Visual C compilers embed in executables and DLLs, telling the OS which additional libraries were required. According to these, the debug run time libraries were needed to run D2X-XL. I was baffled. Had I not compiled the program and every DLL from the package as release code? Yes I had. Did any of these components still contain debug information? No, they didn't.

So I was back to the internet, and I finally found an explanation so esoteric that I reckon it a miracle I found it at all. According to that source, Visual C++ links with an oldnames.lib library whenever it finds deprecated identifiers in a program, and in that case also links with the debug CRT library - even for release builds. The solution to this is to explicitly prohibit linking of msvcrtd.lib in the affected projects' linker options. Now I don't know whether this actually might be good for something, but if you ask me it looks pretty idiotic.

The most aggravating thing about the entire issue is that the 'deprecated' symbols were calls to functions like strlwr(), which Microsoft (for good, i.e. security reasons) would like to see replaced by calls to their safer counterparts checking the size of the buffer they're operating on. Still, strlwr() and the like are good old C standard, and who does Microsoft believe they are to simply give them the boot? Well, "Microsoft and standards", you may feel urged to say here ... Do I need to say that the way Microsoft offers to get around deprecation (using _CRT_SECURE_NO_WARNINGS) doesn't seem to work for DLLs, not to mention I couldn't find any detailled documentation about it, only a hint issued by the compiler when encountering such symbols?

I think I really should give Eclipse and gcc on Windows another shot, once MinGW will start to use gcc version 4.

...

As I am on it, a word about the 16 bit version of D2X-XL. That program version does not contain 16 bit code. It only lacks all references to 32 bit Windows DLLs and therefore can run on 16 bit Windows versions. So you don't need to worry that D2X-XL will only run at half speed when using that version.


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.