-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
The DOOM sources as originally released on December 23, 1997
- Loading branch information
Travis Bradshaw
committed
Jan 31, 2012
0 parents
commit 4eb368a
Showing
149 changed files
with
59,219 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,78 @@ | ||
|
||
Here it is, at long last. The DOOM source code is released for your | ||
non-profit use. You still need real DOOM data to work with this code. | ||
If you don't actually own a real copy of one of the DOOMs, you should | ||
still be able to find them at software stores. | ||
This comment has been minimized.
Sorry, something went wrong.
This comment has been minimized.
Sorry, something went wrong. |
||
|
||
Many thanks to Bernd Kreimeier for taking the time to clean up the | ||
project and make sure that it actually works. Projects tends to rot if | ||
you leave it alone for a few years, and it takes effort for someone to | ||
deal with it again. | ||
|
||
The bad news: this code only compiles and runs on linux. We couldn't | ||
release the dos code because of a copyrighted sound library we used | ||
(wow, was that a mistake -- I write my own sound code now), and I | ||
honestly don't even know what happened to the port that microsoft did | ||
to windows. | ||
|
||
Still, the code is quite portable, and it should be straightforward to | ||
bring it up on just about any platform. | ||
|
||
I wrote this code a long, long time ago, and there are plenty of things | ||
that seem downright silly in retrospect (using polar coordinates for | ||
clipping comes to mind), but overall it should still be a usefull base | ||
to experiment and build on. | ||
|
||
The basic rendering concept -- horizontal and vertical lines of constant | ||
Z with fixed light shading per band was dead-on, but the implementation | ||
could be improved dramatically from the original code if it were | ||
revisited. The way the rendering proceded from walls to floors to | ||
sprites could be collapsed into a single front-to-back walk of the bsp | ||
tree to collect information, then draw all the contents of a subsector | ||
on the way back up the tree. It requires treating floors and ceilings | ||
as polygons, rather than just the gaps between walls, and it requires | ||
clipping sprite billboards into subsector fragments, but it would be | ||
The Right Thing. | ||
|
||
The movement and line of sight checking against the lines is one of the | ||
bigger misses that I look back on. It is messy code that had some | ||
failure cases, and there was a vastly simpler (and faster) solution | ||
sitting in front of my face. I used the BSP tree for rendering things, | ||
but I didn't realize at the time that it could also be used for | ||
environment testing. Replacing the line of sight test with a bsp line | ||
clip would be pretty easy. Sweeping volumes for movement gets a bit | ||
tougher, and touches on many of the challenges faced in quake / quake2 | ||
with edge bevels on polyhedrons. | ||
|
||
Some project ideas: | ||
|
||
Port it to your favorite operating system. | ||
|
||
Add some rendering features -- transparency, look up / down, slopes, | ||
etc. | ||
|
||
Add some game features -- weapons, jumping, ducking, flying, etc. | ||
|
||
Create a packet server based internet game. | ||
|
||
Create a client / server based internet game. | ||
|
||
Do a 3D accelerated version. On modern hardware (fast pentium + 3DFX) | ||
you probably wouldn't even need to be clever -- you could just draw the | ||
entire level and get reasonable speed. With a touch of effort, it should | ||
easily lock at 60 fps (well, there are some issues with DOOM's 35 hz | ||
timebase...). The biggest issues would probably be the non-power of two | ||
texture sizes and the walls composed of multiple textures. | ||
|
||
|
||
I don't have a real good guess at how many people are going to be | ||
playing with this, but if significant projects are undertaken, it would | ||
be cool to see a level of community cooperation. I know that most early | ||
projects are going to be rough hacks done in isolation, but I would be | ||
very pleased to see a coordinated 'net release of an improved, backwards | ||
compatable version of DOOM on multiple platforms next year. | ||
|
||
Have fun. | ||
|
||
John Carmack | ||
12-23-97 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,109 @@ | ||
/ChangeLog/1.14/Mon Feb 3 22:45:08 1997// | ||
/DOOMLIC.TXT/1.3/Sun Jan 26 07:44:56 1997// | ||
/FILES/1.1/Sun Jan 19 17:22:41 1997// | ||
/FILES2/1.1/Sun Jan 19 17:22:42 1997// | ||
/Makefile/1.6/Mon Feb 3 22:45:08 1997// | ||
/am_data.h/1.2/Tue Jan 21 18:59:56 1997// | ||
/am_map.c/1.4/Mon Feb 3 21:24:33 1997// | ||
/am_map.h/1.2/Tue Jan 21 18:59:56 1997// | ||
/d_englsh.h/1.1/Mon Feb 3 21:48:03 1997// | ||
/d_event.h/1.2/Mon Feb 3 22:01:47 1997// | ||
/d_french.h/1.3/Mon Feb 3 21:48:03 1997// | ||
/d_main.c/1.8/Mon Feb 3 22:45:09 1997// | ||
/d_net.c/1.3/Mon Feb 3 22:01:47 1997// | ||
/d_textur.h/1.1/Mon Feb 3 16:47:51 1997// | ||
/doomdata.h/1.5/Mon Feb 3 22:45:09 1997// | ||
/doomdef.h/1.9/Mon Feb 3 22:45:09 1997// | ||
/doomtype.h/1.2/Mon Feb 3 22:45:09 1997// | ||
/dstrings.h/1.4/Mon Feb 3 21:48:03 1997// | ||
/dutils.c/1.5/Mon Feb 3 17:11:23 1997// | ||
/dutils.h/1.4/Mon Feb 3 17:11:23 1997// | ||
/f_finale.c/1.5/Mon Feb 3 21:26:34 1997// | ||
/f_finale.h/1.1/Mon Feb 3 21:26:34 1997// | ||
/f_wipe.c/1.2/Mon Feb 3 22:45:09 1997// | ||
/f_wipe.h/1.1/Mon Feb 3 17:11:23 1997// | ||
/fpfunc.S/1.1/Sun Jan 19 17:22:43 1997// | ||
/g_game.c/1.8/Mon Feb 3 22:45:09 1997// | ||
/g_game.h/1.1/Mon Feb 3 21:34:47 1997// | ||
/hu_lib.c/1.3/Sun Jan 26 07:44:58 1997// | ||
/hu_lib.h/1.4/Mon Feb 3 16:47:52 1997// | ||
/hu_stuff.c/1.4/Mon Feb 3 16:47:52 1997// | ||
/hu_stuff.h/1.3/Sun Jan 26 07:44:58 1997// | ||
/i_dga.c/1.3/Sun Jan 26 07:44:58 1997// | ||
/i_ibm.c/1.3/Sun Jan 26 07:44:58 1997// | ||
/i_main.c/1.4/Mon Feb 3 22:45:10 1997// | ||
/i_pcnet.c/1.3/Sun Jan 26 07:44:59 1997// | ||
/i_sound.c/1.3/Sun Jan 26 07:44:59 1997// | ||
/i_sound.h/1.3/Sun Jan 26 07:44:59 1997// | ||
/i_svga.c/1.3/Sun Jan 26 07:44:59 1997// | ||
/i_unix.c/1.5/Mon Feb 3 22:45:10 1997// | ||
/i_x.c/1.6/Mon Feb 3 22:45:10 1997// | ||
/info.c/1.3/Sun Jan 26 07:45:00 1997// | ||
/info.h/1.3/Sun Jan 26 07:45:00 1997// | ||
/irix.c/1.3/Sun Jan 26 07:45:00 1997// | ||
/irix.h/1.3/Sun Jan 26 07:45:01 1997// | ||
/linux.c/1.3/Sun Jan 26 07:45:01 1997// | ||
/m_argv.c/1.1/Mon Feb 3 22:45:10 1997// | ||
/m_argv.h/1.1/Mon Feb 3 22:45:10 1997// | ||
/m_bbox.c/1.1/Mon Feb 3 22:45:10 1997// | ||
/m_bbox.h/1.1/Mon Feb 3 22:45:10 1997// | ||
/m_cheat.c/1.1/Mon Feb 3 21:24:34 1997// | ||
/m_cheat.h/1.1/Mon Feb 3 21:24:34 1997// | ||
/m_menu.c/1.7/Mon Feb 3 22:45:10 1997// | ||
/m_menu.h/1.1/Mon Feb 3 22:01:49 1997// | ||
/m_misc.c/1.6/Mon Feb 3 22:45:10 1997// | ||
/m_misc.h/1.1/Mon Feb 3 22:45:11 1997// | ||
/m_random.c/1.1/Mon Feb 3 22:45:11 1997// | ||
/m_random.h/1.1/Mon Feb 3 22:45:11 1997// | ||
/p_ceilng.c/1.4/Mon Feb 3 16:47:53 1997// | ||
/p_doors.c/1.4/Mon Feb 3 16:47:53 1997// | ||
/p_enemy.c/1.5/Mon Feb 3 22:45:11 1997// | ||
/p_floor.c/1.4/Mon Feb 3 16:47:54 1997// | ||
/p_inter.c/1.4/Mon Feb 3 22:45:11 1997// | ||
/p_lights.c/1.5/Mon Feb 3 22:45:11 1997// | ||
/p_local.h/1.3/Tue Jan 28 22:08:27 1997// | ||
/p_map.c/1.5/Mon Feb 3 22:45:11 1997// | ||
/p_maputl.c/1.5/Mon Feb 3 22:45:11 1997// | ||
/p_mobj.c/1.5/Mon Feb 3 22:45:12 1997// | ||
/p_plats.c/1.5/Mon Feb 3 22:45:12 1997// | ||
/p_pspr.c/1.5/Mon Feb 3 22:45:12 1997// | ||
/p_setup.c/1.5/Mon Feb 3 22:45:12 1997// | ||
/p_sight.c/1.3/Tue Jan 28 22:08:28 1997// | ||
/p_spec.c/1.6/Mon Feb 3 22:45:12 1997// | ||
/p_spec.h/1.3/Tue Jan 28 22:08:29 1997// | ||
/p_switch.c/1.3/Tue Jan 28 22:08:29 1997// | ||
/p_telept.c/1.3/Tue Jan 28 22:08:29 1997// | ||
/p_tick.c/1.4/Mon Feb 3 16:47:55 1997// | ||
/p_user.c/1.3/Tue Jan 28 22:08:29 1997// | ||
/r_bsp.c/1.4/Mon Feb 3 22:45:12 1997// | ||
/r_data.c/1.4/Mon Feb 3 16:47:55 1997// | ||
/r_draw.c/1.4/Mon Feb 3 16:47:55 1997// | ||
/r_local.h/1.4/Mon Feb 3 21:26:34 1997// | ||
/r_main.c/1.5/Mon Feb 3 22:45:12 1997// | ||
/r_plane.c/1.4/Mon Feb 3 16:47:55 1997// | ||
/r_segs.c/1.3/Wed Jan 29 20:10:19 1997// | ||
/r_things.c/1.5/Mon Feb 3 16:47:56 1997// | ||
/s_sound.c/1.6/Mon Feb 3 22:45:12 1997// | ||
/sounds.c/1.3/Wed Jan 29 22:40:44 1997// | ||
/sounds.h/1.3/Wed Jan 29 22:40:44 1997// | ||
/soundsrv.c/1.3/Wed Jan 29 22:40:44 1997// | ||
/soundsrv.h/1.3/Wed Jan 29 22:40:44 1997// | ||
/soundst.h/1.3/Wed Jan 29 22:40:45 1997// | ||
/st_lib.c/1.4/Mon Feb 3 16:47:56 1997// | ||
/st_lib.h/1.4/Mon Feb 3 16:47:56 1997// | ||
/st_stuff.c/1.6/Mon Feb 3 22:45:13 1997// | ||
/st_stuff.h/1.3/Thu Jan 30 19:54:22 1997// | ||
/sun.c/1.3/Thu Jan 30 19:54:22 1997// | ||
/tables.c/1.4/Mon Feb 3 16:47:57 1997// | ||
/tables.h/1.1/Mon Feb 3 16:47:57 1997// | ||
/tmap.S/1.1/Sun Jan 19 17:22:51 1997// | ||
/v_video.c/1.5/Mon Feb 3 22:45:13 1997// | ||
/v_video.h/1.2/Mon Feb 3 17:11:59 1997// | ||
/w_wad.c/1.5/Mon Feb 3 16:47:57 1997// | ||
/wadread.c/1.3/Thu Jan 30 19:54:23 1997// | ||
/wadread.h/1.3/Thu Jan 30 19:54:23 1997// | ||
/wi_data.h/1.3/Thu Jan 30 19:54:23 1997// | ||
/wi_stuff.c/1.7/Mon Feb 3 22:45:13 1997// | ||
/wi_stuff.h/1.4/Mon Feb 3 16:47:58 1997// | ||
/z_zone.c/1.4/Mon Feb 3 16:47:58 1997// | ||
/z_zone.h/1.1/Mon Feb 3 16:47:58 1997// |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
/info/cvsroot/id/id_doom |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
/info/cvsroot/ |
Oops, something went wrong.
3 comments
on commit 4eb368a
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
genial
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Came here after reading "Doom Guy"
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Came here after reading "Doom Guy"
I can recommend Masters of Doom as well, by David Kushner.
can I still be able to use the one on steam since they aren't in software stores