Messed with this some more today. Like I was thinking a while back, it's straightforward to rip the environment geometry out of the original shareware version of descent and reformat it for this clone platform.

Here's level 1 in-editor:


And in-game:


I ripped the textures out of the game as well, but it's not clear how to redo the texture mapping in a way that's faithful to the original game. Apparently, the original descent performed bilinear UV mapping across quadrilaterals. I think that means that even when the surface is viewed perfectly normal-on with no perspective distortion it is not mapped affinely between screen and texture space. This code assumes that the mapping between polygon coordinates and texture coordinates is affine and I hesitate to change that on a whim. I suspect that Flash 10 makes the same assumption.

Another quirk with descent is that some of its polygons (quads) aren't even self-coplanar (and it's not a precision problem, they're not even close). That causes more visual artifacts, because you cannot reliably decide whether you're looking at the polygon from the front or the back. I guess one thing to do is split the quad into two triangles and push them through individually, but it isn't clear to me that such a splitting is always possible. At least, not without making a cell nonconvex, which is major failure time (TM). I have no idea how this idiosyncrasy is handled in the original game.

There's also a lot of places where they've made lots of slices in space. The atomic unit of a descent map is a warped cube, so there's lots of places where open volumes have been tesselated into cubes even though the volume is convex already. That isn't necessary in the flash clone, because it supports arbitrary convex regions already. Beyond being unnecessary, splitting a convex volume into subvolumes leaves lots of phantom ink lines hanging in the air, and causes a real performance suck as visibility is tracked through all these portals which are completely see-through already. It appears that descent avoids this perfomance penalty by aggregating cubes into "groups" which are guaranteed not to self-occlude (ie grouping the cubes back up into the convex volume that we started with). The flash clone doesn't do that grouping (why would it, right? the convex shape were trying to build up is already supported as an atomic unit), and I don't feel like coding that in just to avoid a limitation of the original game.

Given these problems, (and copyright issues) I don't plan to chase through Descent's data anymore. But it's still pretty cool that it worked at all.