Doom in Mach

The shareware episode of Doom (1993), Knee-Deep in the Dead, rewritten from id Software's source in the Mach programming language. Play alone, or with up to three friends over the internet.

The first room of E1M1, seen through the marine's eyes, with the status bar below
Download
Windows 10 or 11, 64-bit, or Linux with Wine · 2.8 MB zip · nothing to install
SHA-256 742c1946828a9efb12fb42a653c3a8defa834fbb9b660104479453e440557d19

Playing

  1. Unzip the download anywhere. Keep doom.exe and DOOM1.WAD together.
  2. Double-click doom.exe.
  3. Windows may say Windows protected your PC, because the program is not signed. Click More info, then Run anyway. It asks once. If it asks whether to let the game use the network, allow it.

On Linux it runs through Wine: unzip, then in a terminal in that folder run ./doom.sh. If Wine is missing it says how to install it (sudo dnf install wine, sudo apt install wine, ...). Sound and music both work under Wine.

↑ ↓ or W Smove forward and back
← →turn
A Dstep sideways
Ctrl or Ffire
Space or Eopen doors, press switches
Shiftrun
1–7choose a weapon
Escthe menu

Playing online

Two to four players, anywhere, on Windows and Linux together. Everyone needs the same download: an older copy is turned away with “different version”, and the Play online screen shows a six-character this copy code to compare.

Co-op or deathmatch: Game: co-op plays the episode together. Set it to Game: deathmatch to fight each other instead: weapons and items come back, there are no monsters, and everyone's frags are on screen.

Want a fight right now? Find an open game, then Deathmatch with the bots: after fifteen seconds for anyone else to join, the league's bots take the other seats.

Nobody around? On the waiting screen the host can press Enter to start at once, with bots from the league in the empty seats. A game listed publicly starts by itself after two minutes.

Or play with whoever is around: set Listed publicly to yes before hosting, and the game shows under Find an open game for anyone with this download, who joins with Enter and no code. Left at no, only people you give the code to can join.

The game starts on E1M1 as soon as everyone is in. No router or firewall settings: the games meet through a small relay server on this site. Every player's game runs in lockstep, so a slow connection makes everyone wait for it; it plays best within a country. To leave: Esc, Options, End Game.

The announcer

In a deathmatch a voice calls the feats and the screen marks each its own way. Kills within three seconds of each other climb from Double kill through Multi and Ultra to Monster kill; every five kills without dying climb from Killing spree through Dominating, Unstoppable and Godlike to Rampage. The first kill of a level is First blood.

A team-mate's eyes

In co-op the bottom right corner of the screen shows what a team-mate sees. F12 moves it to the next team-mate, and after the last turns it off. Watching the bot leagues, 1 to 4 choose whose eyes fill the screen and L goes to the other league's match.

Teaching the bots

The first time you open Play online the game asks whether the bots may learn from you. If you say yes, then while you play online it sends the bot leagues what a bot standing where you stand would have sensed and what you did about it, about nine times a second: where the walls are, whether an enemy is in view, how you moved, whether you fired. No name, no chat, nothing from your computer. Five apprentice bots in each league learn from it. Say no and nothing is sent; change your mind any time under Options.

Updating

Once you have the game, it keeps itself current: Esc, Options, Update the game fetches the newest version, puts it in place and restarts. Players need the same version to play together.

The bot league

A hundred neural-network bots play deathmatches against each other on this server around the clock, each learning in its own way. See the standings.

What this is

A port of id Software's 1997 source release to Mach, with no C and no libraries beyond what Windows ships. The music comes from an emulation of the OPL2 FM chip on the AdLib and Sound Blaster cards DOS Doom played it on. The game reproduces the original's three demo recordings tic for tic, which is how it is known to behave like the original. The relay server and this page's web server, hedge, are written in Mach too.