
Descent Source Code - arayh
https://github.com/videogamepreservation/descent
======
aidos
Amazing! That README is great. Here’s a snippet

    
    
        Mike: Well, not really, unless they learn that they have to focus on designing a brilliant game, rather than writing brilliant code.
    
        Matt: Ah, that's a good thing.
    
        Mike: Yeah, I don't think I understood that until we started working on Descent.  At first all I cared about was writing technically good code.
    
        Matt: Then we ran out of money and all we cared about was finishing our game.
    
        Mike: Right.  Our code got ugly, but our game got done.
    
        Matt: Writing code is easy.  Finishing is hard.

~~~
Groxx

        Q: Is there any code you're particularly proud of?
        Matt: No.
        Mike: No.
        Matt: I'm most ashamed of the vector intersection code.
        Mike: Yeah, that's pretty bad.
        Matt: Mike's AI code is the worst I've ever seen.
        Mike: Only because you program with your eyes closed.
    

this is gold. I definitely have to explore this repo now.

------
kevin42
That brings me way back. I am the one who published the code after Mike Kulas
and Matt Toschlog reached out to me. The code was loaded with proprietary
libraries, and didn't build when I got it because a bunch of stuff had been
ripped out.

I was in Germany for work at the time and spent many evenings working on this
code, to clean it up and make it compile. I even got the level editor working.

In part because of this work, I ended up getting hired on the Descent 3 team.

There are several projects that stemmed from the original Descent source code,
this looks like the originally released code.

~~~
sjackso
Without exaggeration: Playing Descent 3 online was the most fun I have ever
had in front of a computer screen. Thanks for a great time. :-)

When I was doing computer graphics research in university, I always hid a
secret 6DOF flight mode into my 3D apps, with key controls corresponding to my
D3 config. It was the most comfortable way I knew to navigate around in a 3D
space.

------
lkbm
This is neat, but going up to the org:
[https://github.com/videogamepreservation](https://github.com/videogamepreservation)
\-- super-cool. There's so much there!

------
Terretta
Descent II felt made to be controlled with the SpaceOrb 360.

[https://en.m.wikipedia.org/wiki/SpaceOrb_360](https://en.m.wikipedia.org/wiki/SpaceOrb_360)

I’m shocked there’ve been no kickstarters to revive the perfect input device
for 3D games.

If you’re not familiar with this input device, this calls it the greatest game
controller of all time:

[https://www.hanselman.com/blog/TheBestControllerForFPSASpace...](https://www.hanselman.com/blog/TheBestControllerForFPSASpaceTecSpaceOrb360ControllerWorkingWithWindows7UsingArduinoAndOrbShield.aspx)

Also happens to be a pretty good hacker (maker) story.

------
Groxx
Also potentially relevant, archive.org has the game available to play in your
browser:
[https://archive.org/details/Descent_896](https://archive.org/details/Descent_896)

------
disease
I wonder how much easier it is nowdays to get a game like this up and running
with something like Unity. I only do hobbyist 2D game development, but every
time I read articles regarding 80s 2D gamedev I come across things like harsh
hardware limits and difficult optimization problems - it seems like developers
were forced to deal with a lot more complexity back then.

~~~
Const-me
> to get a game like this

With similar graphics quality it’s only moderately hard. I think I could re-
implement that graphic engine in Direct3D 11 within a week or so.

> developers were forced to deal with a lot more complexity back then.

I think modern games are way more complex. Even for graphics: visual quality
improved by a huge factor.

Descent authors had to implement these fixed-point math routines, modern games
don’t because already implemented in hardware, both CPU and GPU.

However, modern games do a lot more: complex shaders for stuff like skeletal
animation and environment mapping, deferred shading incl. ambient occlusion,
multiple render passes for stuff like transparency and volumetric lights,
multiple post-effect render passes for stuff like HDR and tone mapping…

Here’s an awesome article explaining how GTA5 does that:
[http://www.adriancourreges.com/blog/2015/11/02/gta-v-
graphic...](http://www.adriancourreges.com/blog/2015/11/02/gta-v-graphics-
study/) And that’s just graphics, other components like animations & particle
systems, AI, asset streaming, physics and gameplay are not much simpler in
modern games.

------
teilo
Thank you for posting this. This is an old classic that I entirely forgot
about. I played the hell out of this thing back in the day.

------
justin66
Didn't icculus distribute this years ago?

~~~
Pxtl
Yeah, the d2x-xl project has been around for a super long time.

------
Flenser
[https://www.dxx-rebirth.com/](https://www.dxx-rebirth.com/)

------
minitoar
Really though this said "Decent" and I was like FINALLY an attainable goal.

------
jordigh
Why forbid commercial use? Wouldn't the GPL be enough and keep the software
free?

~~~
TAForObvReasons
Wouldn't it be possible for a company to take the GPL'd software, change the
name, and sell it along with a non-GPL asset pack? In that case, the game
being open source is immaterial

~~~
saagarjha
I’m pretty sure that’s against the terms of the license.

~~~
fl0wenol
It'd be against the terms of the Descent source code license, but not the GPL.

~~~
pavlov
GPL states that a derivative work must remain under the same license. IANAL,
but I don’t see why an asset pack distributed together with the original game
would automatically evade that.

~~~
yorwba
The original game would remain under the same license, but you can distribute
any separate additions (i.e. no modifications of the source code) without
"infecting" them with GPL.

It's equivalent to selling an Android phone with proprietary apps
preinstalled.

~~~
jordigh
I don't think so. I think selling the game together with non-free assets
without which the game would be unplayable is a tighter combination than "mere
aggregation". It seems to me like that would be derived work.

