@database "Descent Documentation" @author "Christian Sauer" @(c) "Copyright ©1998 Christian Sauer" @$VER: Descent Documentation 0.05 (12-Feb-98) @node main "Welcome to Descent I V1.5 r0.05" Descent I V1.5 r0.05 Copyright © 1993-1998 Parallax Software Port by Christian 'Ville9' Sauer @{"Legal Stuff " link LEGAL}.....................Some words from Parallax @{"Requirements " link REQUIRED}.....................What you need to run Descent @{"Features " link FEATURES}.....................What you can do with it @{"Installation " link INSTALL}.....................How to install @{"Usage " link USAGE}.....................How to use it @{"History " link HISTORY}.....................What has changed @{"Future " link FUTURE}.....................What time will bring @{"Contact " link CONTACT}.....................About myself @endnode -------------------------------------------------------------------------------------- @node Legal "Some words from PARALLAX" 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: Included is almost all the source code to Descent 1, ver. 1.5. We removed all code to which we did not own the copyright. This mainly involved low- level sound and modem code. Kevin Bentley, maintainer of the Descent Developer Resources and author of Kahn, has agreed to support this code base through his website at www.ladder.org/ddr. If you have questions or comments about the code, please go there. Please do not contact Parallax Software, its employees or its affiliates. The following tools were used in the development of Descent: Watcom C/C++, version 9.5 Microsoft Macro Assembler, version 6.1x Opus Make, version 6.01 Have fun with the code! Parallax Software Corporation Jan. 12, 1998 Kevin Bentley's notes: As included in this zip file, the source should compile and run with the following: Watcom 10.6 Miscrosoft Macro Assembler 6.11 GNU (or compatible, such as Microsoft, or Borland) Make utility To build the executable, you should be able to just run maked1.bat. Descentr.exe should be built in the main subdirectory. When you unzip the archive, make sure you use the -d option to expand subdirectories, or it will not compile. The compiled code will run fine with no sound, and no serial port functionality (This means no VR equipment that uses serial interfaces, and no modem or serial play games.) If you port this to another platform, please drop me a note kevinb@stargatenetworks.com , I would be happy to post a copy of your port on the web site. *PLEASE* make an attempt to keep the existing code compilable (ie. use #IFDEFS)), so other people can benefit from your work. To build the editor, change the CCFLAGS variable in all the makefiles to "CCFLAGS = /dNETWORK /dEDITOR" and rebuild all files. You will need the files in editdata.zip (included in this archive) to run the editor. Also, I was only able to get the editor to run using the -nobm command line arguement. --- 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. @endnode @node REQUIRED "What you need to run Descent" You'll need the following to be able to start Descent: · currently a 68040/060 with FPU is required - this WILL change · a GfxBoard running CyberGraphics, this will change also · AmigaOS 3.1 (I nearly need every function of lowlevel.library and some other stuff, too) · asyncio.library V39+ (available on Aminet) · about 16MB RAM · Descent V1.5 REGISTERED ".pig" and ".hog" files That's it. @endnode @node FEATURES "What you can do with it" The current features include: · Fully multitasks · Basic Cybergraphics support · Keyboard support · Fast asynchronous loading · Debug support (only of interest when sending Bug-Reports) See also @{"Future" Link FUTURE} @endnode @node INSTALL "How to install and use" First, get a copy of Descent I V1.5 for the PC. The CD-ROM Bundle "DESCENT I and II - THE DEFINITIVE COLLECTION" is still available in computer game stores. Copy the descent drawer on Disc one onto your HD and install the DescentAmiga executable over it. That's all - fairly simple, isn't it? @endnode @node USAGE "How to use Descent" Descent can be started via Icon from Workbench or from Shell. Make sure, that the stack is set large enough, as I haven't compiled in any stack extension code. An amount of 300KB should be large enough (if the game crashes, try to increase the stack). There are no tooltypes yet and I haven't removed all the unnecessary Shell-Parameters, so don't get confused about the tons of options when typing 'descent -help'. When the game starts, it first initializes two debug windows, which are only of interest if someone wants to send me a unknown feature list (aka Bug-Report) :-). The Ingame-Options are described in the Descent-PC manual. One word about the used key mapping: F11 is mapped to the DEL key and F12 is HELP. That's because all Keypad keys are used by the game and I wanted to have F11/F12 near F10... I hope, you can live with it. And, of course, have fun with it! ;-) @endnode @node HISTORY "What has changed" I started on 30th January 1998 with porting directly the PC source, as I don't want to make a port of a port ... 0.00 - 0.05 12/02/98 · rewritten Makefiles for GNU make and changed directory structure a bit · replaced all DOS/conio stuff with dos.library function calls · moved x86-Assembly into C by peeking into the Mac-Source · named every unnamed struct/union · packed nearly every structure as this is the way Watcom C/C++ handles them per default · added TONS of byteswappes, inlined them and turned to assembly · removed byteswap of ID-Strings in IFF-loader code ;-) · ported error handling routines · ported debug mini-system (disabled the exec.library/Debug() call for Int3() in this release) · ported timer interrupt code via lowlevel.library/TimerInt · ported keyboard interrupt routines via lowlevel.library/KBInt · ported compressed file IO routines and changed some other places to use asyncio.library · quickported graphic setup code, it's nasty right now and I'm blitting directly into videomem · inlined fixmul(), fixdiv(), fixmuldiv() and sqrt() for better performance · replaced all rand()'s and RAND_MAX's with own routines returning short instead of int · cleaned up code a bit and added a few missing prototypes · a lot more changes in nearly every file, mainly cosmetic changes ... · made an icon and created this documentation @endnode @node FUTURE "What time will bring" · hunt down the memory leaks · remove the __attribute__((packed))s and better change the load code · joystick and mouse support · support for AGA/ECS · sound/music · networking and modem support · turn 3D engine back to assembly (m68k of course ;-)) · port the editor · make a version for PowerPC · many other things that might be implemented, like Descent in a WB-Window, Overlay, IGlasses!... Where's the source? you might ask. Well, I might include it in one of the following versions, as soon as it is in a bit better state (mainly remove all the terrible warnings when compiling and remove all the unused PC-stuff...). @endnode @node CONTACT "About myself" If you find any bugs (for sure ... :-)), have new ideas or something else, you can send an e-mail to sauer@informatik.uni-wuerzburg.de Sorry, no Web-Page yet. The newest version of Descent will always be on Aminet. @endnode