Skip to content

devint1/descent-win

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Legal Stuff:


THE COMPUTER CODE CONTAINED HEREIN IS THE SOLE PROPERTY OF PARALLAX
SOFTWARE CORPORATION ("PARALLAX").  PARALLAX, IN DISTRIBUTING THE CODE TO
END-USERS, AND SUBJECT TO ALL OF THE TERMS AND CONDITIONS HEREIN, GRANTS A
ROYALTY-FREE, PERPETUAL LICENSE TO SUCH END-USERS FOR USE BY SUCH END-USERS
IN USING, DISPLAYING,  AND CREATING DERIVATIVE WORKS THEREOF, SO LONG AS
SUCH USE, DISPLAY OR CREATION IS FOR NON-COMMERCIAL, ROYALTY OR REVENUE
FREE PURPOSES.  IN NO EVENT SHALL THE END-USER USE THE COMPUTER CODE
CONTAINED HEREIN FOR REVENUE-BEARING PURPOSES.  THE END-USER UNDERSTANDS
AND AGREES TO THE TERMS HEREIN AND ACCEPTS THE SAME BY USE OF THIS FILE.  
COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION.  ALL RIGHTS RESERVED.

We make no warranties as to the usability or correctness of this code.

About the Source Code:

This is a basic port of Descent to the Windows NT platform. The code in
this port is nearly identical to that of the DOS version (1.5), except
for the OS specific calls; these were ported to be compatible with
modern Windows systems. This means the game is still using the original
software renderer. I also added the ability to run the game in any
resolution. The default behavior is to run the game fullscreen using the
current screen resolution, but this can be changed by providing the
"-windowed", "-width", and/or "-height" command line arguments. 3D
rendering will be done in that resolution, while any 2D bitmaps are scaled
to fill the screen. Since the game was originally running at 320x200, this
means they can get quite blocky on today's screens! A fancier scaling
implementation could make it look prettier.

Building the code:

This code was tested using Visual Studio Community 2015, although I believe
it should work on Visual Studio 2013 as long as the platform toolset is
changed. Simply open "descent.sln" and build the code. Both Debug/Release
and Win32/x64 are working.

Bugs/issues/missing features:

Sometimes the heap gets corrupted in the game renderer; this will not cause
a crash but will cause alerts to appear in debug mode.

Demo recording/playback does not work properly.

Only keyboard and mouse are supported (no joysticks/controllers).

There may be other issues but these are the main ones I can think of.

---

Interview with Matt Toschlog and Mike Kulas regarding the release of the
Descent source code:

Q: Why are you releasing the source code?

Mike: The main reason is we figured a lot of people aspiring to work in the
game industry would like to see production "quality" code.  There are two
reasons for this.  One, you can learn a lot by looking at working code.
Two, people will see that you can write a decent game without writing
beautiful code.

Matt: That's a good thing?

Mike: Not really, except that it might make people think writing production
quality code isn't that hard.

Matt: That's a good thing?

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.

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.

Matt: I'm proud we managed to finish without going bankrupt.

Mike: Yeah, finishing is all.  Who said that?

Q: Seriously, what should people look at?

Matt: I really don't know.  It's not like there's a lot of reusable code in
there.  Some low level stuff could probably be used.  The vector-matrix
library is probably fairly instructive.

Mike: The AI is an example of how not to write an AI system.

Matt: You're doing it the same way in FreeSpace, right?

Mike: Yeah.

Matt: The texture mapper is worth looking at, not that you'll be needing a
software texture mapper much longer.

Q: You're including the editor, right?

Mike: Yeah, people will be able to use our editor.  On the whole, I doubt
it's any better than DMB2.  And it doesn't run under Windows.

Q: What enhancements do you hope to see people make?

Matt: If an aftermarket sprouts for it, we'd be very happy.  People ask for
lots of little features that we just don't have the time to add.

Mike: People could probably roll in some of the D2 multiplayer features
without too much difficulty.

Matt: I don't think we can guess what people will do.  We had no idea how
much would be done with third party levels.

Q: The license states that people can't use the code for commercial gain.
What if some kid develops something and wants to recoup some of the cost
through shareware?

Mike: We're not opposed to that in principle.  They need to get written
permission from us, though.  And, it would have to be after the thing is
done so we know what we're permitting to be commercialized, if you want to
call it that.

Q: Any plans to release the D2 source code?

Matt: No definite plans.  Though, I guess I don't see why all our source
code wouldn't eventually get released.

Mike: Me, too.  It loses commercial value in just a few years.  And,
releasing it brings us closer to our customers, which is a very good thing
to do.

Q: Any final comments?

Mike: Yeah, have fun with the code.

About

Bare-bones Windows port of the 1994 shooter "Descent"

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages