Search the FAQ Archives

faqs.org - Internet FAQ Archives

DOOM on the Internet via TCP/IP . (95/01/11)

Archive-name: games/doom/howto-tcp
Rec-games-computer-doom-announce-archive-name: howto-tcp
Posting-Frequency: monthly

                  The TCP/IP Internet DOOM FAQ
                by Scott Coleman (asre@uiuc.edu)
             and Jay Cotton (jay@calc.vet.uga.edu)
                        updated 1/11/95


        id Software's DOOM, DOOM II, and Heretic truly are
   the Killer Apps of the MS-DOS world. The popularity of
   these games is so immense, it has been estimated that
   DOOM is installed on more PCs than OS/2 and Windows NT
   combined. So many copies of these games have been sold
   that the idGuys can commute to work in Ferarris. Interest
   in these games has been so great that they have been
   hacked, reverse-engineered, dissected, and enhanced more
   than any other games in PC history. And now, as more and
   more people become hooked into the Internet, DOOM-engine
   games are rapidly becoming the Killer Apps of the 'net,
   as well. Although the remainder of this document will
   refer exclusively to DOOM, the procedures outlined here
   will work equally well for either DOOM II or Heretic, as

        DOOM, as released by id, only supports IPX network
   or modem/direct serial link play; TCP/IP networks are not
   supported. As a result, the DOOM documentation doesn't
   include any information about DOOMing across the
   Internet, and obviously DOOMers can't call id for help.
   As a result, the following question is asked at least
   once per week in the DOOM newsgroups: "How do I play DOOM
   over the Internet?" In the pages that follow, we will
   attempt to answer the most frequently asked questions
   about Internet DOOM, including what you need, how to set
   it up, and how to find new fragbait - er, I mean,

        DOOM across the Internet is made possible by a
   freeware program called iFrag. iFrag (formerly called
   iDOOM) uses the UDP protocol (part of the TCP/IP protocol
   suite) to send DOOM game information between multiple
   machines on the Internet. By some strange coincidence,
   the authors of this document are also the creators of
   iFrag, and we have used the program to play Internet DOOM
   sessions with opponents from as far away as Estonia. In
   writing this FAQ, we hope that sharing some of our
   experience will make it easier for you to get connected
   in your own Internet DOOM sessions. NOTE: This tutorial
   will refer specifically to games of DOOM played over the
   Internet via a DIRECT CONNECTION, i.e. no modems are
   involved anywhere in the link. Note that IHHD, SLIP and
   PPP connections all involve modems at some point.
   Although it is possible to connect two DOOM machines
   together across the Internet using a modem link, the
   resulting game will be slow, ranging from the unplayable
   (e.g. a 14.4Kbps PPP connection) to the marginally
   playable (e.g. a 28.8Kbps modem running a Compressed SLIP
   driver). Since these sorts of connections are of only
   marginal utility, this document will focus only on direct
   net connections.
                        The Frag Tracker

        The Frag Tracker is a major new enhancement to the
   Internet DOOMing experience. Based on the premise that
   the ability to play DOOM over the 'net isn't much good
   unless you have other people with whom to play, the Frag
   Tracker serves as a virtual meeting place for Internet
   DOOMers. Frag Tracker support is built right into iFrag -
   its use is completely transparent. People looking for
   games run iFrag in client mode, which automatically
   queries the Frag Tracker for a listing of registered
   games. The type of game (DOOM, DOOM II, or Heretic), the
   names of the players, the game parameters (episode, map,
   skill level, etc.), and other information is displayed on
   the iFrag screen. The player picks a game from this list
   and she is instantly connected to that game. If there are
   no games waiting, or the existing games aren't
   sufficiently interesting, a player can register a new
   iFrag game on the Frag Tracker which others can then

                        Getting Prepared

        Q1: I want to play DOOM over the Internet using
   iFrag. What hardware do I need?

        To successfully play DOOM across the Internet, you
   will need the following hardware:

        * A machine capable of playing DOOM (D'OHH!)

        old NIC, mind you - your NIC must be supported by a
        packet driver if you wish to use it to play Internet
        DOOM. Usually this means that your NIC must be an
        ethernet card, although iFrag has been successfully
        played over token ring. We will assume that your PC
        is already equipped with a suitable NIC, although it
        may currently be in use for some other non-TCP/IP
        function (such as a node on a Novell network). As
        long as your NIC is supported by a standard packet
        driver (see below), your machine can be readily
        converted into an iFrag "playstation."

        * A direct connection to the Internet. As noted
        earlier, if there is a modem somewhere in the link
        between your PC and your opponent's PC, this FAQ is
        not for you. Although it is possible to play
        Internet DOOM over a modem link (either by dialing
        up to a UNIX machine and using IHHD or via
        SLIP/PPP), such connection methods are beyond the
        scope of this document.

   I need?

        In addition to the hardware requirements, some
   software is also required to round out your the package.
   Before you can play, you'll need to pick up the

	* The latest version of DOOM.  At the time of this
        writing, the latest version of DOOM is 1.666, DOOM
        II is 1.7a, and Heretic is 1.0. It's always best to
        use the latest version of each game because that is
        what the majority of other iFragers will be using,
        and different versions of each game cannot be used
        in the same network game. Additionally, DOOM
        versions 1.1 and below are incapable of using iFrag.

        * A packet driver written specifically for your NIC.
        The Packet Driver is a standardized interface that
        lets iFrag (and therefore DOOM) "talk" to your NIC.

        * iFrag, the TCP/IP network driver for DOOM.

        * Some basic network diagnostic tools, such as a
        PING or TRACEROUTE program. These are not absolutely
        necessary, but can definitely be useful for
        debugging and testing your setup.

   Where can I get it?

        * To obtain iFrag: Log on to mrcnext.cso.uiuc.edu
        via anonymous ftp. Change to directory /asre.
        Download the file IFrag20.ZIP. This is version 2.0
        of iFrag, the latest as of this writing.

        * Many ethernet cards come with the appropriate
        packet drivers on a utilities diskette packaged with
        the card. If your card does not come with a packet
        driver, there is an excellent collection of freely
        available packet drivers called the Crynwr (nee
        Clarkson) Packet Driver collection. You can obtain
        it via anonymous ftp from oak.oakland.edu. Change to
        the /pub/msdos/pktdrvr subdirectory and download
        PKTD11.ZIP and PKTD11C.ZIP. You need not download
        the files PKTD11A.ZIP and PKTD11B.ZIP; these contain
        source code and example programs for the packet
        drivers - while interesting (especially to
        programmer types), you won't need these in order to
        play iFrag.

        * If you need basic network diagnostic utilities,
        the WATTCP applications are freely available and
        include a PING program. To get them, anonymous ftp
        to dorm.rutgers.edu, change to the
        /pub/msdos/wattcp/ subdirectory, and download the
        file APPS.ZIP.

   it up?

        Setting your computer up to use the TCP/IP protocol
   suite via a packet driver is very straightforward. As an
   illustration, I'll be taking you through the steps
   necessary to set up a PC with an SMC ethernet card and
   the IP address You'll of course need to
   substitute your own specific information in place of the
   examples given here. All set? OK, let's get started.

   CONFIG.SYS and AUTOEXEC.BAT files to load as few drivers
   as possible. Some definite things to EXclude are memory
   managers (HIMEM, EMM386, QEMM, etc.) and network drivers
   (e.g. LSL, IPXODI). DOOM doesn't need the former, and the
   latter will probably conflict with the packet driver. We
   recommend that you prepare an alternate configuration
   (using the multiple configuration facility built into MS-
   DOS; see your DOS manual for details) specifically for
   Internet DOOM with a CONFIG.SYS portion containing only a
   FILES=20 line, and an AUTOEXEC.BAT portion containing
   only the line "prompt=$p$g". Be sure to include the line
   which loads your mouse driver (if you play DOOM using a

        Step 1: Set up the packet driver. If you do not
   already have a suitable packet driver installed on your
   machine, now is the time to install one. Start by
   determining your ethernet card's IRQ setting, it's base
   I/O port setting, and it's memory address setting (if
   any). You should be able to determine this by looking at
   the card itself and consulting the user manual. You'll
   need some if not all of this information, depending upon
   which packet driver you use and/or type of hardware you
   have (for example, some IBM computers with the
   MicroChannel bus can determine the settings on the card
   automatically without you having to supply them on the
   packet driver command line). Unzip the appropriate driver
   from Crynwr Packet Driver collection archive. In our
   example, the packet driver is called SMC_WD.COM. By
   looking at the jumpers on the card and consulting the
   is at segment d800h. For this example, I have chosen to
   use interrupt 60h for the packet driver. Packet drivers
   typically operate on an interrupt in the range of 60h to
   80h inclusive; since nothing else in my sample system
   happens to be using the first available interrupt (INT
   60h), I chose that. Thus, to load my packet driver, I use
   the command line

        SMC_WD 0x60 0x7 0x300 0xd800

   where 0x60 is the packet driver interrupt, 0x7 is the IRQ
   setting on the card, 0x300 is the I/O port base address,
   and 0xd800 is the memory base address (NOTE: all numbers
   are in C-style HEX notation). Don't worry if you don't
   understand what all this stuff means - as long as you use
   the correct numbers, your packet driver should work.
   NOTE: If your PC is currently part of a Novell network
   (e.g. Netware, Netware Lite, Personal Netware) the
   parameters you need can be found in a file called
   NET.CFG, usually located in your \NOVELL, \NWLITE or
   \NWCLIENT subdirectories (along with all the other
   drivers needed by Novell). Add the proper command line to
   the AUTOEXEC.BAT for your iFrag configuration so that the
   packet driver will be loaded automatically whenever you
   boot using the iFrag partition.

        When successfully loaded, the packet driver should
   give a sign on message and report the ethernet address of
   your NIC when you load it. Chances are that if your NIC
   has been functioning properly for other tasks (e.g. as a
   node on a Novell network) then you'll have no problems
   here. If not, or if there are any error or warning
   messages, something is wrong. One possibility is that one
   of the settings on your NIC is in conflict with those of
   another expansion card in your system. No two cards can
   have the same IRQ, I/O port, or memory address settings,
   nor can the memory areas of two cards overlap. Whatever
   the cause, you'll need to find and correct the problem
   before continuing.

        Step 2: Set up a new directory where iFrag and all
   its configuration files will be kept. You can name this
   directory anything you like (I suggest c:\iFrag). UnZIP
   the idoom20.zip file into this new directory, and make it
   the default (chdir to it). We will refer to this
   directory as the "iFrag directory."

        Step 3: Set up your WATTCP.CFG file. Your WATTCP.CFG
   file contains important parameters used by the WATTCP
   TCP/IP kernel built into iFrag. These values MUST be
   entered correctly if you wish to make a connection with
   another DOOM PC. In preparation for this, you'll need
   several bits of information. Contact the network
   administrator for your site and find out the IP address
   for your machine, the IP address for your gateway or
   router, the IP address of at least one Domain Name Server
   local to your site, and your netmask value. The three IP
   addresses will each consist of four groups of digits
   separated by periods. In our example, the machine's IP
   address is, the gateway is, the
   netmask is, and the nameserver address is NOTE: it is important to use the numeric
   have other Internet programs currently installed on your
   machine, such as a Gopher client or the Trumpet
   newsreader, you can probably find the information you
   need in the configuration files used for those programs.
   If the application is based on the Waterloo TCP package,
   it will have it's own WATTCP.CFG, in which case you can
   simply copy it over to your iFrag directory. When you
   have collected all this information, use your favorite
   ASCII text editor to edit the WATTCP.CFG file in your
   iFrag directory. Edit or add the lines beginning with
   my_ip=, gateway=, nameserver=, and netmask=. On our
   example machine, the WATTCP.CFG file looks like this:


        Save the changed file and exit back to DOS.

        Some sites run what is called a BOOTP server. If
   yours is such a site, you can put "BOOTP" on the "my_ip="
   line and leave the other lines out. iFrag can contact the
   BOOTP server and determine all the settings it needs to
   communicate with other machines on the Internet. If your
   site is not running a BOOTP server, then your task is a
   little more difficult (but not impossible!)

        If you know your machine's IP address, but you can't
   determine the other values, you can often get away with
   some educated guesswork. For instance, the gateway for a
   subnet usually has an IP address ending in .1, as is the
   case with our example. Thus, if your IP address is
   xxx.yyy.zzz.www, try setting your gateway's IP address to
   xxx.yyy.zzz.1. As for the subnet mask, a common value for
   this parameter is In some cases, the
   gateway value can be something like xxx.yyy.1.1 with a
   corresponding netmask value of - if one
   doesn't work, it can't hurt to try the other. Finally, if
   you don't know your nameserver's IP address, you can
   probably get by without it for the purposes of DOOM
   playing. Since you'll be specifying IP addresses for all
   of your opponents' machines, a nameserver lookup won't be
   necessary to resolve their addresses.

        Step 4: Test your TCP/IP setup. Reboot your machine
   and select your new iFrag configuration. Next, use your
   network diagnostic programs to test the connection. For
   example, if you are using the WATTCP application suite
   mentioned earlier, unzip the TCPINFO and PING programs
   from the WATTCP apps archive into your iFrag directory.
   At the DOS prompt, type:


   and press the <Enter> key. If your WATTCP.CFG values are
   set up correctly, and if your packet driver and net
   connection are functional, you'll see a couple of screens
   of information about your system, including your ethernet
   address and the parameters you specified in the
   WATTCP.CFG file.

        If everything looks OK, the next step is to use the
   PING program to attempt to establish contact with your
   subnet gateway. At the DOS prompt, type

        PING <yourgateway's.numeric.ip.address>

   and press the <Enter> key. After a brief delay, you
   should see a message telling you that the host is
   responding, as well as the round trip time for PING's
   test packets. If you see the "Timeout" error message,
   then something is wrong with your setup; if your PC is
   unable to reach your gateway, it will be unable to reach
   the rest of the Internet as well, since all network
   packets which are sent to nodes outside of your local
   area network must pass through your gateway. For our
   sample system, we would type:


   If your gateway PING was successful, try PINGing your
   Domain Name Server (at the IP address you specified in
   WATTCP.CFG) as well as some well-known site on the
   internet (e.g. the Frag Tracker, which is at IP address These will test your machine's ability
   to connect with other machines outside of your subnet as
   well as those outside of your site. All of these PINGs
   should result in a "host responding" message with a round
   trip time. If any of these attempts fails, recheck your
   entries in WATTCP.CFG and/or get some help from your
   network administrator. Examples for our test system:



        Step 5: Set up your iFrag.CFG. Again using your
   preferred ASCII text editor, modify the iFrag.CFG file in
   your iFrag directory so that all entries are correct for
   your system. You will need to specify the paths to your
   game and patch WAD directories, your chosen nickname (the
   name by which other iFrag players will know you), the
   number of lines you want on your video display (25 or
   50), whether or not you want stealth (no sound) mode,
   etc. As an example, let's suppose Joe Ayedume has chosen
   the nickname FragLord, and that he has installed DOOM,
   DOOM II, and Heretic into their standard directories on
   his hard disk. The iFrag.CFG file for Joe's system will
   look something like this:

   ; Sample iFrag Configuration File

   ; stealth

        Edit your iFrag.CFG file to reflect your nickname as
   well as the locations of your games and PWADs. If you
   don't have one of the games installed, just leave the
   corresponding entries blank. Save the changed file back
   to disk.

             Put Me in, Coach - I'm Ready to Play!

        All right! iFrag is now installed and ready for
   fragging! Now all I need are some more players to sink my
   rockets into. From my iFrag directory, I start iFrag by


   and pressing the <ENTER> key. The iFrag client-mode
   screen comes up, and iFrag contacts the Internet Frag
   Tracker to see which games are waiting for players at the
   moment. Once iFrag has successfully contacted the Frag
   Tracker and downloaded the list of available games, a
   pop-up dialog box appears on the screen. Using the PgUp
   and PgDn keys, I can view a summary of each available
   game. This game summary includes the type of game (DOOM,
   DOOM II, or Heretic), the nicknames of all the players
   currently in the game, a brief description/comment, as
   well as the current game settings (skill, episode, map,
   etc.). I notice that my friend (who is known only as
   "ArchVile") is currently hosting a game of Heretic. Since
   it's been a while since I have turned him into a chicken,
   I press the <ENTER> key to select his game. iFrag
   immediately contacts ArchVile's machine and I join the

        ArchVile is running iFrag in server mode. This makes
   ArchVile the coordinator for this particular game - he is
   the "boss," and gets to decide which game will be played
   (DOOM, DOOM II, or Heretic as in this case) as well as
   which parameters to set (such as episode, map, skill
   level, which PWADs to use, and so forth). ArchVile also
   decides who may be allowed to join the game and when the
   game will begin. Although the other players in the game
   may voice their opinions, only the server has the ability
   to actually make changes to the game settings. In a sense
   it's just like watching TV - although there may be four
   people watching, only one person can have the remote

        Now that I have successfully joined a game, the
   iFrag chat mode screen appears. This screen is divided
   into several sections: the credits, the output window,
   screen is the name of the program, its version number,
   and the copyright notice. The large area beginning with
   the second screen line is the output window. Here is
   where iFrag will display all status messages as well as
   the chat text entered by the other players. Below the
   output window is the status bar, where the current game
   settings are displayed. Below the status bar is the input
   line where all the text I type on my keyboard will
   appear. Finally, the bottom line of the screen lists
   significant contributors to iFrag. During this phase of
   the game setup, all players who have connected thus far
   can type messages to each other using iFrag's built-in
   chat facility. To send a message to the other players in
   the game, I simply type a message on the keyboard. My
   keystrokes appear in the input line at the bottom of the
   screen, and when I press <ENTER>, the text will be echoed
   to the screens of all players (along with my nickname to
   indicate that I sent the message). The server itself will
   also send messages. Messages from the server will begin
   with three asterisks ("***") to distinguish them from
   messages typed by other players.

        In addition to sending text messages, iFrag's chat
   facility also understands several commands, each
   beginning with a slash '/' character. Some examples of
   iFrag chat mode commands are /who, /quit, and /help.

        When my iFrag client connects to the iFrag server,
   it automatically receives the game parameters which will
   be used during this session. These game settings are
   displayed on the status bar in an abbreviated form to
   ensure that they will all fit within the available space.

        The server announces my arrival, and ArchVile greets
   me by typing "re" (short for "re Hi," i.e. "Hi again"). I
   reply with a "re" of my own. Gazing down at my status
   bar, I notice that he has selected E1M8 as the default
   episode and map for our game. I remind him that we've
   been playing that one a lot lately, and suggest that we
   play something else. "How about hl9.wad?" he asks,
   referring to the PWAD (user-written level) which is a
   Heretic DEATHMATCH level based on the famous DOOM
   "Ledges" PWAD. I agree, and he issues the commands and
   "/map 1" and "/pwads hl9.wad" to incorporate the new
   level. Our status lines are immediately updated to
   reflect these changes.

        Once all players have joined the game and all
   parameters have been set, ArchVile presses the F10 key.
   The iFrag server signals the clients that the game is
   beginning, the chat facility is shut down, and iFrag sets
   up the connections which will be used for the actual
   game. Once these network links are established between
   all the machines, the message "Prepare to meet your
   DOOM!" is displayed, and iFrag launches the appropriate
   game. We see the usual Heretic startup information, and
   then there we are, in HL9.WAD, crystal wands charged and

        After dining heartily on Chicken Flambe' (courtesy
   of a Morph Ovum, a Phoenix Rod, and a Tome of Power), I
   decide to fire up my own game with a little scenario I
   call "Carnage-DOOM." From the DOS prompt, I type

   iFrag -server

   and press <ENTER>. Since I like this particular scenario
   quite a bit, I created a standard DOOM response file
   called "carnage.rsp" containing the parameters -doom2, -
   warp 1, -deathmatch, -nomonsters, and -skill 5. I use
   iFrag's /load command to load the response file by typing
   /load carnage.rsp, and my status bar is updated with the
   new settings. After a few moments, NoOne, Caitiff, and
   FragMastr join my game. After exchanging a few
   jocularities, I confirm that everyone is ready to begin
   and then I press the F10 key. DOOM II loads, and I grab
   the rocket launcher for the first of many fabulously fun

        That's all there is to it! Gone are the days of long
   command lines with 4 IP addresses and tons of other
   parameters, setting up games via email, and other
   frustrations. Now getting into a game of Internet DOOM is
   as easy as getting fragged with a BFG-9000!

                   Oh Oh - It's Not Working!

             OK, so you've done everything, just like I've
   shown you, but you're still having problems. The
   following are some suggestions to try in case of trouble.

   (Black Screen of Death).
        Q: My machine displays "sending network start info"
   or "listening for network start info" and then locks up.

        A: This problem can have several causes. Perhaps one
   of the other players' machines is slower than the others,
   or has a fragmented disk and takes a longer time to load
   DOOM at startup. Or perhaps some packets were lost -
   iFrag uses UDP (User Datagram Protocol) packets to
   exchange game information between all machines in the
   game. UDP packets are not guaranteed to reach their
   destination, and there is no mechanism for the sender to
   even be informed that what it sent never made to the
   destination machine. iFrag is designed to compensate for
   these lost packets to the extent possible, and
   occasionally this detection and correction takes a few
   extra seconds. You should always wait for at least 30 -
   45 seconds for the other DOOM engines to sync up before
   you abort the setup.

         Pointers and Tips for More Fragging Enjoyment

        We'd like to leave you with a few experiences and
   opinions about Internet deathmatches.

        First, try not to use the "pause" key. Do NOT use
   the pause key just so you can type a message. DO use the
   pause key if you have to answer the phone; either find a
   hiding place to hole up, or if you are fragged, just stay
   dead (don't hit the spacebar) until your call is
   completed. It's inconsiderate to make everyone else wait
   on you. Do NOT release the pause after someone else
   pauses.  It's hard to yell at someone over an IP
   connection. It's really annoying to play against people
   who like to pause just when they're about to be shot.

        Second, DO type messages. A pause at the beginning
   of the game is OK just to see if the other player is
   there.  If you notice a sudden increase in game speed,
   another player may have aborted or crashed. You might end
   up playing by yourself if you are not alert... If you can
   monitor network traffic (I have a repeater nearby that
   gets very busy when I play), notice the difference
   between the amount of traffic when connected and

        Third, Be patient. It sometimes takes 30-60 seconds
   for the connection to complete. The first phase, finding
   a node, should be immediate. As mentioned above, if you
   cannot find a node, something is wrong. The second phase,
   looking/sending network start info, may take 30 seconds,
   longer if one of the players has a slow or fragmented
   hard disk (this is the phase where DOOM loads the info it
   needs to play from the WAD file(s)).  The third phase,
   sometimes a blank screen just before the game loads, may
   take another 15-30 seconds.  After finding a node, please
   don't abort until you have waiting a sufficient time for
   a connect. Also, if your connection doesn't work the
   first time, try again immediately! If it failed on your
   end, chances are it failed on the other end, also, and
   your partner will be back in iFrag trying to connect and
   wondering where you are.

        Forth, Internet games will self abort sometimes with
   errors. Don't panic, just restart iFrag. Sometimes one of
   the computers will lock up - again, just restart. If you
   get tired of restarting (this doesn't happen much), just
   walk away! It's just a game!

        Last, hope for a fast connection. This isn't always
   a problem, but when the connection is slow, the game
   sucks! There's nothing you can do about it. Sometimes the
   game will speed up and slow down throughout the match.
   Such is the Internet. Re-connection will not help. Every
   packet that is sent back and forth picks a new path;
   sometimes it's a fast path, and sometimes not.

                        A Final Thought

        Fragging your friends across the Internet with DOOM,
   DOOM II, and Heretic can be VERY addictive. Have fun, but
   don't lose your "real" life just to play a game!

User Contributions:



[ Usenet FAQs | Web FAQs | Documents | RFC Index ]

Send corrections/additions to the FAQ Maintainer:
asre@uiuc.edu (Scott Coleman)

Last Update March 27 2014 @ 02:11 PM