Early Doom Stuff

Early Doom Stuff
Some old messages I found on floppy from the old MCI-WorldComm BBS where John Carmack and Michael Abrash hung around amongst others. I think I'm ok with posting this as it was a public system, but if John or Michael don't like it, let me know and I'll remove it. I have more but what I would do while logging in long distance, and at the time, great cost, was to cut and paste interesting things into a giant text file, so a lot of it is out of sorts.

*NOTE* the working title of DOOM - "It's Green and It's Pissed", also note, John spells out 3D as "three-D" lol.

I also have source for a demo Radial Voxel Editor that Carmack toyed with using for DOOM instead of sprites. (coming soon)

READ: Locate Message Reply Write Help Quit READ> Conf: programming/graphics Thu Jul 16, 1992 4:25am PDT From: jcarmack Message: 1024 To: billb Original: 1022 Subj: Re: Wolfenstein Replies: 1033

No I didn't write bilestoad, but all of us at id came from an apple II background, and the game is legendary for its audacity. We considered doing a wolfenstein style modernization, but it looks like our time is booked for quite a whil -- we are doing wolfenstein for the lynx and super nintendo, and planning our direct follow up. The working title is "It's Green and Pissed", but we probably can't get that on the super nintendo. I have improved the three-D routines by over 100% from wolf, and it will have arbitrarily angled walls, variable height walls, environment morphing (walls that slide around and change into different forms). I was rather looking forward to doing a full virtual reallity engine, but everyone is telling me that a second generation wolfenstein style game would be the best direction (and there are some technical problems with doing arbitrary texture mapping on the video game systems). John Carmack
READ: Locate Message Reply Write Help Quit READ> Conf: programming/graphics Tue Jul 21, 1992 8:05am PDT From: jcarmack Message: 1039 To: billb Original: 1033 Subj: Re: Wolfenstein Replies: 1043

It seems that the blood and guts game style has been incredibly popular. Our commander keen games were well received as family games, but we get lots of comments that wolf is a tension releiver for busy adults. The next game is not going to be cute. I have seen some of the demo games for VR studio, and it looks pretty well put together. The speed could be improved, but the fundamental limitation I see to its world model is that every vertex in a given area needs to be transformed and dealt with. You need to break a larger world up into small areas seperated by opaque doors, rather than having seamless transitions between areas. My early research went into adressing the problem of rendering an arbitrarily large world model within a finite time. My discoveries in that area are what is giving the next wolfenstein style game the major speed improvements. I have switched over to an object based (polygon) representation of the world that I map textures onto, rather than pixel based ray casting.

John Carmack
READ: Locate Message Reply Write Help Quit READ> Conf: programming/graphics Tue Jul 21, 1992 8:08am PDT From: jcarmack Message: 1040 To: mkal Original: 1034 Subj: Re: Wolfenstein Replies: 1041

Wolfenstein 3-D is a fast action 3-D texture mapped game for 286 or better computers with VGA. I am the technical director for ID software, and I wrote the game. You should be able to find an upload of the shareware game on any comercial on line service or large bulletin board. If not, I could upload it here, but its a bit big for 2400 baud download.

John Carmack
READ: Locate Message Reply Write Help Quit READ> Conf: programming/graphics Sun Jul 26, 1992 6:41pm PDT From: jcarmack Message: 1055 To: billb Original: 1043 Subj: Re: Wolfenstein Replies: 1075, 1076

Wolfenstein is done with a matrix, but the next game is done with arbitrary line segments. It is a LOT easier to do an open space game than an inside game. The hidden surface removal algorithm almost allways takes more time than the vertex transformations.

I was recently at the simulation facilities of Alaska Airlines looking at their flight simulators, and I learned a few interesting things. The engineers actually drew different versions of terrain features for different distances. This seemed patently rediculous to me. It took over one man year to enter one city area. If I were doing a flight sim, I would make a program to create less detailed versions of a given 3-D object by culling vertexes out of the object description when the length gets below a given size for the distance being represented, and for extreme distances taking out all interior edges to make the object a silhoette. Some of this could be done at run time, but making three or four representations ahead of time would be the speedy thing to do. When the object is transformed, take the Z coordinate and compare it to the distance values for each representation. The other thing that surprised me was that the simulator did not have a global hidden area removal algorithm. If the draftsman doesn't go to extra trouble, the objects are just drawn in their internal order, possible drawing a distant building over a nearer one. The operator has to manually place a plane of occlusion between any objects that might overwrite each other. The rendering engine takes the midpoint of each object and draws the one in the near area first. What a pain. The setup they were using was a silicon graphics indigo for map editing, and a room full of custom hardware for the rendering. The images were rendered on three monitors inside the cockpit at 640*480*24 bit color at 33 frames per second (weird). That is a lot of processing power. It texture mapped most surfaces on the fly. This was a low end simulator, so it could only do twilight and night scenes (it didn't model all the city buildings, it just sprayed a lot of light points around populated areas). It did cost ten or fifteen million dollars, though (including plane cockpits). If you want to do a really good open air game, I would suggest a hierchal object representation. Start with an area the size of your entire world (flight sims are easy because of the 2-D nature of the world), make avery coarse representation of your world, then subdivide it and specify a more detailed description. Continue subdividing and clarifying the image until you have an exact representation of your world. Even subdivision, like a quadtree, comes to mind first, but there may be benefits to unevent divisions. When you are rendering a view, the area where the camera is should be drawn with the greatest subdivision level. Cross into adjacent visable areas (this eliminates 3/4 of the world data set), using progressively coarser detail based on the total distance, until the most distant world blocks are several miles wide and very low detail. Fractalin terrains are perfect for this type of data organization, because the landscape is generated in a recursive detail manner anyway. Objects moving around the world will be in 1 - 4 areas, depending on their position. Use the object detail for the closest one. There are no quick fix answers to 3-D systems, because the structure of the data and the fundamental refresh type need to be matched to the problem at hand.

John Carmack

RadED - Video of Early voxel system evaluated for the original DOOM

I can't figure out how to vidcap off software that twiddle's ModeX(ah, the old days), so I had to tape with my cam, sorry for the crappy quality

I have Carmack's source that he posted some place.

update 2011.11.30 Dug out the source code. Of course you'll need to compile it...

recent note: this may not all be correct anymore...  Look in the source
if you are curious.

RADED basic operation:

RADED holofile

The holograms are composed of 64 platters of 64 radial sections with 32 evenly spaced divisions.

Right clicking in the circular edit area will draw with the current edit color. The projection will not be updated until the mouse button is released.

Left clicking in the edit area changes the edit color to the color clicked on.

Pressing 'S' saves the current hologram.

Pressing 'C' while the cursor is in the edit window will draw a circle with a radius out to the cursor. Everything inside is erased.

Clicking in the color palette area changes the current edit color.

Clicking in the area between views selects the platters to write through.The platter first clicked on is the one displayed, but you can drag the selected area so that it covers multiple platters. When multiple platters are selected, drawing is done in all the platters at once.

The left/right arrow keys rotate the image.

The 1/2 keys rotate the projection without redrawing the edit window until you release the key.

Clicking along the bottom of the screen rotate the image to a specific angle based on the x position of the click.

The up/down arrow keys move the platter selection range up and down.

download RADED.zip

art2bmp < previous
Scroll to top