The TCP/IP Internet DOOM FAQ
From: asre@uiuc.edu (Scott Coleman)
Subject: () Playing Internet DOOM via TCP/IP (94/10/16)
Newsgroups: rec.games.computer.doom.announce,rec.games.computer.doom.help,rec.games.computer.doom.playing
Followup-To: poster
Organization: RGCD Support Team
Approved: doom@mantis.co.uk
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 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:
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 <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
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 <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
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 <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
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!
Comments
Post a Comment