D2X-XL Worklog

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

Textures

Rework

Descent's original textures are small and flat, and the new renderer needs more than that: displacement mapping and lighting need to know for every spot of a texture how deep it lies, which way it faces and how shiny it is.

So all textures of Descent 1 and Descent 2 have been reworked. They have been upscaled from the originals, and each one has got a normal map and a map holding its height, ambient occlusion and specularity.

The upscaling is automatic, and so is deriving the maps from a texture's height. The height itself is the problem. It can be taken from the brightness of a texture, which works well enough for rock. But a tool cannot tell from a picture what stands out and what lies deep, and with brightness as height every painted highlight, shadow, rust stain and letter turns into relief.

For a few hundred textures - metal, robots, doors, lamps, signs - the height therefore comes from a hand made mask, and a lot of manual work went into these. Hand made doesn't mean painted: every mask is constructed from geometric shapes that are placed on the texture exact to the texel. Edges, bevel widths and centers were measured in the texture; a bevel is as deep as it is wide; round parts have truly round profiles, so a pipe is half a cylinder and the hub of a fan is a cone. What is only painted on a texture stays flat.

Doors got masks that follow their animation: the leaves of a door move with their relief, and the blades of the iris door turn about their pivots.

All masks share one scale, so a groove of a given width is as deep in one texture as it is in any other.

Displacement Mapping

Descent's walls are flat faces with a texture on them; whatever structure a wall seems to have is only painted on.

D2X-XL now gives textures depth. The renderer uses the height map of a texture to let grooves, plates and rock sink into the wall or stand out of it. Lighting follows the relief, too, be it the light of the lamps in the level, of weapon fire or of your headlight. Robots and other models get relief as well once they are large enough on the screen.

Overlays

Descent cannot model small things like lamps, signs or fans as geometry. Instead it paints a second texture over the base texture of a wall: an overlay. This is a historical hack, a cheap substitute for elements that would really have to be modelled in 3D, lamps in particular.

With relief this hack becomes a problem. Base texture and overlay both have a height now, and an overlay simply painted over a base texture with relief would follow all its bumps and dents, or sink into them.

So an overlay now sits on the highest point of its base texture; parts that are built flush into the wall, like fans, sit on its mean height instead. Base texture and overlay are treated as one surface, so a lamp standing out of the wall hides the wall next to it when you look at it from the side. And every texture can bring its own depth, which is stored in the file of its height map.

Displacement mapping is active with render quality set to medium or high and lighting quality set to high or ultra high. Textures without a height map remain flat.


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.