D2X-XL Worklog

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

Sound

OpenAL

Sound in D2X-XL used to be simple stereo: a sound was louder or quieter and came more from the left or more from the right, and that was all it could tell you.

Sound effects are now played with OpenAL, which places them in the space around your head, including above and below; you can hear where a robot is before you see it. Music is still played the old way.

Sound Travels Through The Mine

How loud a sound is depends on the way it has to take through the mine to reach you, not on the straight line through solid rock. A sound from a room you cannot look into reaches you from the door or opening it comes through.

Open doors and grates let sound pass. A closed door or a wall only lets a small part of it through, and what gets through sounds dull, because the highs are filtered out. Under water and in lava everything sounds muffled, and so it does a little in fog.

Reverb

Rooms now have reverberation: large caves ring for a long time, while narrow tunnels stay dry. For this the game has to know how big the room is you are in, and a Descent level doesn't tell. It is built from small segments, and a single segment says nothing about the room it is a part of.

So when a level is loaded for the first time, D2X-XL measures it. From the center of every segment it sends out a lot of rays, spread evenly in all directions. A ray travels on until it hits something a ship could not fly through, like rock, a closed door or a grate. The lengths of all these rays are then condensed into a single number, the room size of that segment.

This number is not the plain average of the lengths: a single ray escaping down a long tunnel would turn a narrow tube into a hall. What makes a room ring is its smallest way out and not its longest, so the short rays count most. A long, narrow corridor comes out small and stays dry; a wide cave comes out big and rings.

The graphics card measures the entire mine in one go, and the result is stored with the level's cache files, so this only happens once.

From Room Size To Reverb

To turn room sizes into reverberation, I measured a number of levels and took the widest caves I found in them as the yardstick: this is the largest room the reverb knows. A room of that size rings for the full length of the reverb tail. In smaller rooms the tail gets shorter in proportion to their size - half the size, half the tail - which is what the physics of reverberation says. In very small rooms the reverb fades out altogether. The pause before the first echo grows with the room as well.

While you fly from one room into another, the reverb glides from one to the other within a fraction of a second.

The Settings

The strength of the reverberation is set in the effect options, from off to maximum. In expert mode there is also a dialog with detailed settings. Whatever you change there, you hear at once.

  • Shortest tail: even small rooms ring at least this long.
  • Longest tail: how long the largest rooms ring.
  • Smallest room size: rooms smaller than this get less and less reverb. Raise it, and more corridors go dry.
  • Largest room size: rooms of this size and bigger ring for the longest tail. Lower it, and medium sized rooms already ring like caves.
  • Size exponent: bends the relation between room size and tail, making medium sized rooms drier or wetter.
  • High frequency decay: a low value gives a dark, dull tail, a high one keeps the highs in it.
  • Early reflections: how loud the first, distinct echoes off the walls are.
  • Late tail: how loud the diffuse wash behind them is.
  • Diffusion: a high value makes that wash smooth, a low one grainy.

The two room sizes are given in percent of the yardstick, the largest room the reverb knows.

Fully Automatic

All of this works fully automatically. There is no reverb data in a level and nothing a level author has to set up in the level editor, and the results are good and plausible.


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.