17
\$\begingroup\$

I'm wondering how people used to write DOS games (like Doom), I can't find much on this, but would love to learn more about the earlier days of game development.

What language was used predominantly?

I presume it was C. Or C++ already?

What IDEs (or editors/compilers) were popular?

Microsoft Visual C/C++ (or Microsoft C/C++ as I believe it used to be called) didn't exist back then AFAIK. So what did people use? edit and a command-line compiler from Intel or something?

What APIs where used?

What was common for 2D games? What about 3D games like Doom and Tomb Raider?

Anything else that's different from today?

I'd be happy to hear any other differences, like what image/audio formats were used.

\$\endgroup\$
3
  • \$\begingroup\$ I'm fairly sure your intended to do some research for this class assignment. Perhaps gdcvault.com/play/1014627/Classic-Game-Postmortem can give you a start. \$\endgroup\$ Commented Aug 12, 2012 at 7:58
  • \$\begingroup\$ It's not an assignment, I'm way out of school/college. I did google around for a while but couldn't find much. \$\endgroup\$ Commented Aug 12, 2012 at 8:01
  • \$\begingroup\$ I recall reading a note from one of the ID guys about Watcom C++. Borland was always pretty popular because their compilers were freaking FAST. (I used to rebuild three or four times in a row because I wasn't convinced that anything had actually happened.) \$\endgroup\$ Commented Aug 14, 2012 at 23:40

2 Answers 2

20
\$\begingroup\$

Language: C was predominant, but C++ was around and used.

Dev tools: Development environments included those from Borland and Watcom (almost unheard of today) among others. Both Borland and Watcom had their own compilers and their own IDEs. Borland was by far the most popular in general, though Watcom had a reputation for producing faster compiled programs, iirc.

APIs: Few APIs existed or were used. Video programming often consisted of directly writing pixels to the VGA framebuffer. Even 3D game were software rasterized. The Miles sound API was used for audio, which included drivers internally as the OS didn't have it's own audio framework or drivers. Keyboard and mouse input were generally read straight from the system. There were a couple popular memory extenders for 32-bit mode which were very popular and necessary towards the end of DOS's reign. The hardware was simple, thankfully, but it was definitely a pain in the butt writing games that worked on a variety of hardware. Libraries to deal with all the simple low-level stuff (like SDL, SFML, GLFW, etc.) did not exist, and porting was a huge amount of the work in releasing a game due to all the different platforms and hardware popular at the time (though its getting equally bad these days, what with all the consoles, handhelds, and mobile devices, plus Windows and the fringe desktop OSes like OSX and Linux).

On a side note to the previous point, Doom was not 3D the way we know it today. That is, it imposed huge limitations on 3D environments due to its highly specialized software rasterization algorithm, and characters and items were all jut sprites.

File Formats: Asset formats were just as proprietary to the engine then as they are now. I vaguely recall Bink being around back then for video (which was very rare, generally only in opening and closing sequences), and I think Creative had some specialized sound formats. I'm unsure what source or intermediary formats were popular for sound or video back then, but TGA was pretty popular for images.

\$\endgroup\$
6
  • 1
    \$\begingroup\$ The ubiquitous middleware that many licensed for audio was Miles, which provided driver abstraction for many devices. If you didn't use Miles, you probably just supported Adlib or SoundBlaster compatibles. For enabling VESA support on legacy cards, some games used UniVBE. \$\endgroup\$ Commented Aug 12, 2012 at 8:45
  • \$\begingroup\$ That's right! Good memory! :) \$\endgroup\$ Commented Aug 12, 2012 at 9:25
  • \$\begingroup\$ I may be wrong, but I believe the reference you're trying to make was for Watcom, not Watson. They made an excellent C compiler and a lightweight SQL server called Watcom SQL, a predecessor of SQLite, that I liked very much. \$\endgroup\$ Commented Aug 12, 2012 at 13:29
  • \$\begingroup\$ Indeed, you are correct. My memory is definitely getting more jumbled in my old age. \$\endgroup\$ Commented Aug 12, 2012 at 16:37
  • \$\begingroup\$ ASM was likely more common than now. You needed to squeeze extra performance and the compiler optimizers weren't as good as they are now. That is, majority still in C but the engines likely had ASM pieces. \$\endgroup\$ Commented Aug 12, 2012 at 20:43
4
\$\begingroup\$

As a completion to Sean's post, since you mentioned Doom: there is a nice blog by Fabien Sanglard, who made a review on the part of code used for making Doom (the one from 1993). The review is here: http://fabiensanglard.net/doomIphone/doomClassicRenderer.php

PS: The blog has a lot of Doom/Quake-related code reviews, and it's a nice read for a game developer to see how others designed a game from ground up

\$\endgroup\$

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.