The TCP/IP Internet DOOM FAQ by Scott Coleman (asre@uiuc.edu) and Jay Cotton (jay@calc.vet.uga.edu) updated 1/11/95 Introduction 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 well. 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, opponents. 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 join. 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!) * A network interface card (NIC). And not just any 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. Q2: OK, I've got all the hardware. What software do 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 following: * 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. Q3: Hold on - I don't have some of this software! 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. Q4: OK, I've got everything, now what do I do to set 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 128.192.23.5. 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. Step 0: START WITH A CLEAN BOOT!!!!! Set up your 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 mouse). 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 manual, I determined that the card has been set to IRQ 7, Base I/O port address 300h, and the base memory address 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 128.192.23.5, the gateway is 128.192.23.1, the netmask is 255.255.255.0, and the nameserver address is 128.192.44.67. NOTE: it is important to use the numeric IP addresses, not the actual host names. NOTE: If you 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: my_ip=128.192.23.5 gateway=128.192.23.1 netmask=255.255.255.0 nameserver=128.192.44.67 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 255.255.255.0. In some cases, the gateway value can be something like xxx.yyy.1.1 with a corresponding netmask value of 255.255.0.0 - 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: TCPINFO and press thekey. 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 and press the 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: ping 128.192.23.1 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 128.174.134.150). 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: ping 128.192.44.67 and ping 128.174.134.150 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 nick=FragLord tracker=128.174.134.150,6666 doom=c:\doom doom2=c:\doom2 heretic=c:\heretic doompwads=c:\doom\wads doom2pwads=c:\doom2\wads hereticpwads=c:\heretic\wads videolines=50 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 typing iFrag and pressing the 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 key to select his game. iFrag immediately contacts ArchVile's machine and I join the game. 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 control. 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, the status bar, and the input line. At the top of the 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 , 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 ready! 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 . 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 frags. 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. Q: The music starts up fine, but all I see is a BSOD (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. Argh! 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 disconnected. 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!