Doom 1 & 2 in modern computers

How to play Doom 1 and Doom 2 to a modern pc?

You need three things:

1st – The WADs

Regardless of your operating system, you need a set of WADs. In summary, WAD stands for “Where is all the data” and is an acronym used by Id software for the extension of files containing the actual game data like sprites, maps, episode organization etc. If you don’t know what is a WAD you can read more at  wikipedia. The original WADs are not free, thus you either have to buy them (e.g. from steam) or download them typically illegally from peer to peer networks.

The original episodes are listed at doomwiki. Many episodes can be stored in single WAD. Additionally, there is a huge list of WADs made by other users available to download. The best of them are separately listed at doomworld where you can also find a complete (and huge) list.

2nd – The engine itself

After you have the WADs, you need to download an engine. There are numerous free engines so you may have to try some of them until you find the one you prefer.

3rd – The add-ons, aka mods (optional)

After you have the engine and the original WADs you can add more addons (mods) to change game play. Add-ons modify the game behavior. They mostly come in pk3 format.

One of the most well known mods is Brutal doom which adds extreme violence to the game. Although its very widespread, i don’t recommend it.

If you want to try a mod out, you don’t have to install it. It’s easier to just go to youtube and watch some videos to check if you like the game play.

How to run all of the above:

The steps are quite easy:

  1. You install the engine. Most engines have installers so there is nothing special to this procedure
  2. You Copy the WADs in the directory where you installed the engine
  3. If you have mods, drag and drop them to the executable of the engine.

Alternatively, instead of the 3rd step, you can manually edit the .ini files of the engine (usually located in the same directory) and define which mods you want to use. But this procedure depends on the engine.


For multiplayer experience check these out:

  1. Zandronum – active and opensource
  2. zdaemon – active
  3. Odamex – active and opensource

I don’t play Doom multiplayer so I can’t recommend any of these.

Single player

Single player engines may include a 3d renderer or not.

Without the 3d renderer the graphics are somewhat worse. If you want a “close as much as possible to the original” experience, including graphics, then you should prefer an engine without 3d rendering support.

With 3d renderers, the graphics seem better. This is the version i prefer. I recommend prboom+ for linux and gzdoom for windows .

Also, in my opinion, its better not to enable cheats or new features like free mouse aim as it ruins the experience (and makes the game much easier) since most of the maps where designed with that in mind.

Here is a tiny list of my recommended engines:

Port Name 3d renderer Linux Windows
prboom prboom no yes yes
prboom+ prboom+ yes yes yes
zdoom zdoom no yes yes
gzdoom gzdoom yes yes yes

What about Doom 3?

Doom 3 is a whole different story that i will explain in a separate note.


Frequently used Unicode math operators

This is a selection of the operators i use frequently while taking notes. You can find a detailed table on wikipedia.

You can find ways to type the symbols here and a complete PDF for math operators here

Predicate logic
existential quantification U+2203 U+2204
universal quantification U+2200
logical conjunction
logical disjunction

material implication

material equivalence U+21D4
 negation  U+00AC  ¬
provable from


proper subset U+2282


subset U+2286


element of U+2208


 empty set U+2205  ∅

cross product U+2a2f

Here are some Copy-Q tabs to use:

  1. With set operators here
  2. With logic operators here

Render 2d points with gnuplot to PNG

One of the easiest way to render some points with gnuplot is:

  1. write to file (eg points.txt) the points you want to render in simple text format, one line per point (x,y pairs, no tabs no commas etc)
  2. create a script with the code shown below (eg graph.gnuplot)
  3. run the script with gnuplot (eg gnuplot graph.gnuplot)
  4. Open the png file with a program of your choice.

point file sample:

10 10
20 20
30 30

script sample

set terminal png
set size ratio -1
set output "./graph.png"
plot \
"points1.txt" notitle with points pointsize 0.5 linecolor rgb "green",\
"points2.txt" notitle with points pointsize 0.5 linecolor rgb "yellow",\
"points3.txt" notitle with points pointsize 0.5 linecolor rgb "black"

execution example:

gnuplot graph.gnuplot

Terminal PNG not found in gnuplot

In some linux destributions, the default version of gnuplot does not always include PNG support.

Here it the easiest way to fix this:

  1. Download gnuplot from
  2. Untar to a directory of your choice
  3. Open terminal at that directory
  4. Run the following commands:
    1. sudo apt-get install libgd2-dev
    2. ./configure
    3. make
    4. make check
    5. sudo make install

That’s it.

You can find code examples for PNG terminal here:

You can read more gnuplot terminals here:

Configure Netbeans IDE for C/C++ (Windows)

Linux can compile C/C++ with Netbeans out of the box, as long as you have the compiler installed (like gcc and g++).

Usually the following commands are enough:

sudo apt-get install build-essential
sudo apt-get install valgrind

In Windows you have to do this manually:

  1. From
    1. Download mingw
    2. Install it to the suggested (default) directory. If you want to use a custom directory, make sure the selected path does not contain spaces or other special characters (like greek letters etc)
    3. From the Mingw Installation manager, click and install at least the following packages:
      1. mingw-developer-toolkit
      2. mingw32-base
      3. msys-base
      4. mingw32-gcc-g++
  2. Press winkey+pause to load Windows Settings Manager. At Advanced system settings →Advanced→environment variables:
    1. Add the following text at the end of the PATH environment variable (not user variable):
  1. At Netbeans→Tools→Plugins:
    1. check C/C++ feature and activate it
  2. Create a new C++ project and run it:
    1. From the “Resolve Missing native tools” just click “Restore defaults”. It should autodetect the settings. If it fails there is a sample configuration at the end of the post.
  3. Restart Netbeans
  4. Preferably, logout and login too.

If you have problem configuring Mingw, here is a sample of a handy configuration (mingw at default directory):


Personal portal to the Internet