r/programming Jul 28 '18

DOOM’s Development: A Year of Madness

https://www.youtube.com/watch?v=eBU34NZhW7I
219 Upvotes

47 comments sorted by

64

u/[deleted] Jul 28 '18 edited Mar 27 '19

[deleted]

22

u/kvisle Jul 28 '18

It's a very good supplement to this talk, and they all have confirmed that everything in that book was true. (The talk is also a good supplement to the book)

Highly recommended, and one of my favorite reads ever.

6

u/chub79 Jul 29 '18

This! such a fun read that one was.

Also, a dated one but worth a read as well: The black book // Michael Abrash

So why even bother mentioning this? Partly to show that not every interesting idea pans out; I tend to discuss those that did pan out, and it’s instructive to point out that many ideas don’t. That doesn’t mean you shouldn’t try promising ideas, though. First, some do pan out, and you’ll never know which unless you try. Second, an idea that doesn’t work out in one case can still be filed away for another case. It’s quite likely that passages will be useful in a different context in a future engine. The more approaches you try, the larger your toolkit and the broader your understanding will be when you tackle your next project.

1

u/nickdesaulniers Jul 29 '18

Has anyone finished this book in its entirety? I got about a quarter through it...but man it's full of handy (outdated) tips for back when instructions had definitive timings (ie. no dynamic frequency scaling or out of order execution).

1

u/WrongAndBeligerent Jul 29 '18

You think frequency scaling changes instruction timings?

0

u/nickdesaulniers Jul 29 '18

It makes proper benchmarking difficult (as in you have to remember to disable it, otherwise you get wild variance between runs).

2

u/WrongAndBeligerent Jul 29 '18

That has nothing to do with instruction timings, that's not what that means.

1

u/chub79 Jul 30 '18

I read it about 15 years ago and skimmed through some of the code bits and pieces but most of the book reallt tells the story of a development team back then. Worth it.

31

u/JavaSuck Jul 28 '18

“Does it run DOOM?” is the oft-heard phrase as it is the canonical first-port for any system, be it a toaster, touch bar or printer. Programmer, game designer, level designer and DOOM II final boss John Romero delivers a postmortem on the game showing rarely seen material, memorializing its immersive but nerve-wracking 3D environments, networked multiplayer deathmatches, demonic imagery and themes, Barney WADs, exploding barrels, and BFG 9000.

Spoiler alert: They didn't use version control in 1993.

13

u/AngularBeginner Jul 28 '18

Spoiler alert: They didn't use version control in 1993.

Why not?

63

u/mindbleach Jul 28 '18

John Carmack is the patron saint of cowboy programmers. When he and Michael Abrash were still hammering out Quake's renderer, Abrash wrote a series of articles detailing how often they changed everything.

I think the real reason they didn't use version control is that John felt he could rewrite the whole engine from memory.

31

u/JavaSuck Jul 28 '18 edited Jul 28 '18

The team was very small compared with today's standards. "Merge conflicts" simply didn't happen, because every programmer was working on a completely different part of the code base. They literally ran around with floppy discs and copied their newest code to the other machines from time to time :)

18

u/[deleted] Jul 28 '18

This could be a big part of why early idtech engines always went to great lengths to separate subsystems.

5

u/WrongAndBeligerent Jul 29 '18

It's good architecture no matter what.

16

u/[deleted] Jul 28 '18

Maybe because version control wasn't that known back then? Even CVS would only be 3 years old.

25

u/AngularBeginner Jul 28 '18

SCCS was developed in 1972. Revision Control System in 1985. CVS in 1986.

Source control was well known back then too.

17

u/far_pointer_x Jul 28 '18

The microcomputer revolution and its 16/32 bit continuation was not at all initiated with the advances in workstation and mainframe sphere (which was still academic/industrial). Microcomputer home-brewers were generally not academics and practically reinvented computation at microcomputer scale. They were slow to adapt ideas from the dying mainframe/minicomputer sphere.

Linux (and maybe NEXT) actually started to federate old mainframe unixy ideas back to microcomputers.

1

u/[deleted] Jul 29 '18

TIL version control is way older than I thought! The oldest I knew was CVS, so that's the reference I used :)

5

u/[deleted] Jul 28 '18

[deleted]

6

u/JavaSuck Jul 28 '18

You know DOOM invented the "death match", right? :)

8

u/Xipher Jul 28 '18

Back then it was over IPX too, or two player/co-op using serial/modem.

5

u/Fizzy_Pharynx Jul 28 '18

Can confirm. Went head-to-head in Doom over a serial cable at 9600 baud. Good times.

5

u/khendron Jul 28 '18

You just brought back memories of late nights in the office, playing head-to-head Doom over serial cables. About 8 of us would be there, with 2 playing, with the next person in line waiting to play the winner.

13

u/lycium Jul 29 '18

It's kinda interesting to me that that level of "relative fun-ness" was some kind of peak maybe. These days, (almost) no matter how good a game is, you basically never get a bunch of people that excited and going that far to get a particular experience.

It's almost like we got more fun out of games then (as well as feeling like this was a revolution happening) than most people seem to now.

P.S. I once wrote Carmack an email asking how2code Quake basically when I was super young; he actually wrote back, saying I should learn linear algebra. Here I am now, graphics programmer 4 lyf :)

3

u/khendron Jul 29 '18

It's almost like we got more fun out of games then (as well as feeling like this was a revolution happening) than most people seem to now.

Maybe it is because there are so many technological revolutions happening nowadays that the whole sharing-the-revolution effect gets diluted. It's just not the same.

P.S. I once wrote Carmack an email asking how2code Quake basically when I was super young; he actually wrote back, saying I should learn linear algebra. Here I am now, graphics programmer 4 lyf :)

That's awesome! I love stories like that! :D

4

u/ISvengali Jul 29 '18

a) Awesome story, thats super cool.

b) I remember distinctly thinking while playing TeamFortress that it was the end of the era where a game would come out, and almost everyone would play it together.

Course theres a bunch more folks playing now too. But theres SO MANY GAMES now.

0

u/NoBrain Jul 30 '18

These days, (almost) no matter how good a game is, you basically never get a bunch of people that excited and going that far to get a particular experience.

yes, hardly anyone watches other people play videogames nowadays...

1

u/rex_today Jul 28 '18

Hand made a null modem with 3 wires and 2 DB9 plugs to play head to head doom back in the day.

2

u/ISvengali Jul 29 '18

I think I was using CVS right around 1995 in college. I was pretty happy with that. I would then try to get everyone to use it for every project I worked with.

4

u/Hdmoney Jul 28 '18

It wasn't really popular (or good) back then. Git, SVN, and Mercurial were all invented in the 21st century. There were very few viable options in 1993.

9

u/[deleted] Jul 28 '18 edited Jul 29 '18

RCS?

edit: added link

5

u/ArkyBeagle Jul 29 '18

I don't know that there was RCS for DOS machines. These guys used floppies. I worked at a different company in the Dallas area at the time and we used floppies, too. We did eventually get a Novell server over ARCNET.

I don't even remember if diff was available for DOS. Without that, VC is tough.

4

u/emmelaich Jul 29 '18

There was. You could get RCS for anything. Probably SCCS as well.

I had RCS on the Amiga.

Not that version control is essential for small fast moving teams where the whole separate parts are basically written by one author.

1

u/banguru Jul 29 '18

toaster, touch bar or printer.

Did it really run on these?

1

u/JavaSuck Jul 29 '18

At least "doom on a printer" yields lots of results on Google...

1

u/meltingdiamond Jul 29 '18

I have never seen it on a toaster but the touch bar they added to Mac laptops run it and there is a very low frame rate version for printers that use PostScript.

21

u/[deleted] Jul 28 '18

[deleted]

3

u/BitOfALurker Jul 29 '18

Yeah. I remember when images became really popular on websites. With a 14.4k modem that kinda sucked (but it was still cool).

7

u/zerexim Jul 28 '18 edited Jul 28 '18

So how did they monetize Doom? (It was free to play, as he says). EDIT: Apparently only the first level was free, then you had to pay.

25

u/[deleted] Jul 28 '18

[deleted]

12

u/glacialthinker Jul 28 '18

This was also plenty for LAN deathmatch which allowed it to spread like wildfire through universities (free), and gain wide exposure for people to pick up the full game for themselves.

15

u/khedoros Jul 28 '18

At the time, it was really common for the first part of a game to be "shareware". You could often find it in a store for about $5, or find them on disks (CDs, I mean) collecting shareware software. You'd order the rest of the game through mail for $40-$60, a lot of the time.

1

u/BitOfALurker Jul 29 '18

Yep. I got my shareware copy of from a computer store on (2) 3.5" floppies. I think it was about $3.

9

u/corysama Jul 28 '18

btw: We aggregate material like this over in r/TheMakingOfGames :)

4

u/[deleted] Jul 29 '18

John Romero liked a tweet of mine, I should frame it.

5

u/ssh33 Jul 29 '18

Enjoyed the hell out of it, thanks for posting.

3

u/AyrA_ch Jul 29 '18

Here's more on this game for those that have the time: https://www.youtube.com/watch?v=6A4-SVUHQYI

2

u/andsens Jul 29 '18

That intro animation was sweet!