iDOOM version 1.0 Documentation This is the documentation for iDOOM, a TCP/IP network driver for id Software's DOOM. iDOOM allows up to 4 players to play DOOM over the Internet using the TCP/IP protocol suite. Acknowledgements The author of iDOOM wishes to acknowledge the contributions of the following people: id Software, certainly for making DOOM but also for being cool enough to release the source code to their network drivers; Jake Page, author of TCPSETUP, for blazing the trail and setting the example; Eric Engelke, author of the (free!) WATTCP TCP/IP kernel upon which iDOOM is based; Jay Cotton for his tireless efforts in testing faulty version after faulty version on his multimachine network; and, of course, everyone who has sent me ideas, encouragement, and criticisms. Thanks to all of you for helping to make iDOOM what it is today and what it will be tomorrow. Differences between iDOOM and TCPSETUP You may be familiar with another program called TCPSETUP. TCPSETUP was the first TCP/IP network driver released to the Internet DOOMing community. It worked well for 2-player games, but as the number of players involved in the game rises, so does the level of difficulty in establishing and maintaining a connection. The author has enjoyed many 4-player frag fests on the IPX network in his office, and was frustrated at being unable to experience 4-player games with his friends on the net. This was the impetus for the development of iDOOM. Since TCPSETUP is widely used, and many it's syntax, I have deliberately made iDOOM's command line options compatible with TCPSETUP's. For most people, iDOOM will be a simply drop-in replacement, requiring only that the word "tcpsetup" be replaced by "idoom" in batch and config files. Note that this does NOT mean that iDOOM and TCPSETUP are inter-operable - they do not work together. All nodes in the game must be running iDOOM or the necessary connections will not be established. System Requirements To use iDOOM, you must have the following: * A machine capable of running DOOM (of course). * A standard packet driver. Note that a packet driver is different than the drivers commonly used for network operating systems such as Novell. * A connection to the Internet. Note that a DIRECT connection is preferable to a SLIP or PPP connection. Although it is possible to play DOOM over a SLIP or PPP connection, due to DOOM's high response rate requirements the game will be slow (unacceptably slow in the opinion of the author). Installation and Setup This topic is divided into three sections. If you are installing iDOOM on a machine which has not had a TCP/IP network driver in the past, continue reading. If you are upgrading your machine from TCPSETUP to iDOOM, you can safely skip ahead to the section entitled "Upgrading from TCPSETUP 0.9B." Finally, if you plan to use iDOOM in conjunction with a frag server, also read the section on frag servers which follows later. First time installation To install iDOOM on a system where no previous TCP/IP network driver has been installed, perform the following steps: 1) Obtain and install the appropriate packet driver for your network card. Instructions for doing this are included with your card and/or with the packet driver. For information on how to obtain a packet driver, as well as additional help with troubleshooting your TCP/IP configuration, see the Internet DOOM FAQ which should be included with this iDOOM archive. 2) If you haven't already done so, unzip the iDOOM distribution archive into your DOOM directory. This will extract the iDOOM.EXE file, this document, and the other support files needed by the program. 3) Using your preferred ASCII text editor, modify the WATTCP.CFG file in your DOOM directory so that the my_ip, gateway, nameserver, and netmask entries are correct for your system. The resulting file will look something 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 changes and return to DOS. 4) iDOOM is now installed and ready for play. First, go find up to three of your most patient frag buddies. For this first attempt, it's best to try and find someone on your local network who's willing to put in a little frag time with you. Connections on your local net will be faster and less problematic, whereas if you attempt a long distance connection your first time out, you'll have a hard time discerning problems caused by distance from problems caused by an incorrect configuration. Decide amongst yourselves which machine will be machine #1, which will be #2, which will be #3, and so on, and exchange the IP addresses of your machines. Each machine's iDOOM command line follows the format iDOOM [game options] -net The IP addresses MUST appear in order, i.e. machine #1's IP address must appear FIRST in ALL command lines. Machine #2's IP address must appear SECOND, and so on. The final piece to the puzzle is that each machine leaves it's own IP address out of the list. The result is a set of command lines like the following: iDOOM [game options] -net 1 iDOOM [game options] -net 2 iDOOM [game options] -net 3 iDOOM [game options] -net 4 Note that machine1, machine2, machine3, and machine4 are the numeric IP addresses of each respective machine in the iDOOM session, and that the -net MUST appear at the END of the command line. Note also that the DOS command line for iDOOM can be rather long, especially with 3 and 4 player games. I recommend that you create a response file containing the game parameters of your choice and invoke iDOOM with iDOOM @response -net As an example, consider several computers which are part of a local area network in a computer lab. Thus, there are identical machines sitting side by side, with sequential IP addresses, i.e. 128.192.23.4, 128.192.23.5, and 128.192.23.6. After stepping through the basic configuration process outlined above on all test machines, my frag buddies and I are ready to begin. On my machine, which we decided will be machine #1, I type: iDOOM -deathmatch -net 1 128.192.23.6 128.192.23.4 The guy to my right, whose machine is #2 and whose IP address is 128.192.23.6, types: iDOOM -deathmatch -net 2 128.192.23.5 128.192.23.4 And finally the guy to my left (machine #3, IP address 128.192.23.4) types: iDOOM -deathmatch -net 3 128.192.23.5 128.192.23.6 After we all hit , our machines display several lines of "Checking to see if host 128.192.23.n is awake..." messages. Once all machines have connected, the message "Prepare to meet your DOOM!" is displayed, followed by the usual DOOM startup information. Shortly thereafter, the screen melts away and there we are, in E1M1, pistols at the ready! (I won that game, by the way. ;-) Upgrading from TCPSETUP version 0.9B Upgrading from TCPSETUP 0.9B is extremely easy. Simply unzip the iDOOM archive in your DOOM directory, BEING CAREFUL NOT TO OVERWRITE YOUR WATTCP.CFG FILE. Edit any batch files you may have which invoke TCPSETUP and replace each occurrence of "tcpsetup" with "iDOOM" - that's all there is to it! iDOOM is a drop-in replacement. Using iDOOM with a Frag Client/Server If you wish to use iDOOM in conjunction with a frag client/server, you'll also need to edit the client.cfg file in your DOOM directory and replace the command "tcpsetup" with "iDOOM" so that the proper network driver will be invoked. After this has been done, the frag client will operate as usual. Common Problems and Their Solutions Problem: The game is VERY SLOW. The speed of the game is all right most of the time, but there are periodic slowdowns and speed-ups. The game started off slow, and got slower and slower until finally it ground to a complete halt. Solution: All of the above problems are the result of a poor quality net connection. To borrow terminology from other Internet games, the two phenomena of interest are "lag" and "chew". Lag is the amount of time it takes for a packet sent my one machine to reach its destination. It's possible to get an idea of the lag time between machines using a program called PING, which send a packet out, waits for a reply, and measures the total time taken. Since the rate at which DOOM plays is dependent upon the rate at which the packets from other machines come in, if one or more machines involved in the game is on a slow portion of the net the game will slow down for everybody. This is why players who are connected to the Internet via SLIP, PPP, or 56kb connections are frustrating to play against. Chew can be thought of as "packet loss" - essentially the network chews up the packets and they disappear. Since the UDP protocol has no mechanism for ensuring that a given packet will reach its destination, packet loss is a definite possibility on busy networks. While DOOM can compensate for this by including "backup tics" (information for the current time period as well as previous time periods) in each game data packet, it takes time for the new packets to get through, resulting in "bursty" game play. Chew can also be estimated using the PING program, which usually reports a "% packet loss" statistic. In general, if PING reports that a machine has a long packet round trip time or a high percentage of lost packets, any DOOM games involving that machine and yours will suffer from speed problems. The worst part is there's nothing anyone can do about it, short of installing a direct fiber-based ATM backbone between your machine and his. About the best you can do is try again at another time and hope that the network between you is less busy then. Problem: DOOM runs for a little while, but then it crashes to DOS with an error message saying something about NUMTICS. Solution: This error seems to crop up frequently when players use the frag servers and/or slow network connections. At the time of this writing, the exact cause of this problem is unknown, and a solution has yet to be found. If this happens to you about all you can do is restart the game, perhaps with a smaller number of players. Problem: iDOOM returns to DOS saying NO PACKET DRIVER FOUND. Solution: Make sure that you have a packet driver installed and that it is being loaded correctly. Note that it is easy to mistake other types of drivers, such as those used in Novell networks, for packet drivers as they have similar or even identical names. When in doubt, download the Crynwr packet drivers and install the one for your card. Problem: iDOOM returns to DOS saying Error 0xAA accessing packet driver. Solution: Either something has clobbered your packet driver in memory or you are using a packet driver which does not identify itself as "class 1" (such as SLIP and PPP drivers). iDOOM requires a class 1 packet driver in order to function, a limitation of the WATTCP library upon which iDOOM is based. If you know that your packet driver is class 1 but you still get this message, try rebooting your machine to install a fresh copy of the packet driver. Problem: The packet driver is installed and appears to load correctly, but when iDOOM is run nothing happens. Solution: When installing the packet driver, make certain that the correct parameters are used on its command line. On some network interface cards, improper settings can still cause the packet driver to APPEAR to be loading correctly, only to have a failure occur when an actual communication attempt is made. Also, make sure that there is no other software loaded which is also trying to use the network card at the same time, such as a Novell network driver. The cleaner the boot, the better it is for DOOM. The ideal configuration would load only the packet driver and the mouse driver - no HIMEM, no EMM, no Novell drivers, no QEMM, no SMARTDRV, etc. DOOM doesn't need them, and they may cause conflicts. The author's system uses MS-DOS 6's built- in multiple configuration facility. This allows easy selection of either a normal configuration or a DOOM configuration at boot time. Command Line Switch Reference -net [ [ []]], where 1 <= n <= 4 and host1 - host4 are the names or IP addresses of the other machines in the game. This specifies which node your machine will be in the game, and must be unique (e.g. two machines in the same game cannot both specify net 2). In addition, the order of the host addresses must be consistent across all machines in the game. This number determines the color of your player's uniform, where net 1 is Green, net 2 is Indigo, net 3 is Brown, and net 4 is Red. Finally, -net, the node number, and the host addresses *must* appear at the END of the command line. Example: -net 3 129.202.14.71 128.177.2.66 -vector specifies the interrupt vector which DOOM should use to communicate with iDOOM. NOTE: This is NOT the same as the vector used by your packet driver! Specifying the same vector number for iDOOM and your packet driver will have unpredictable results. Normally, iDOOM will select an appropriate vector number automatically; you can use this option to override iDOOM's automatic choice if necessary. Specify the vector number in C-style HEX notation. Example: -vector 0x61. -port specifies the port number to be used for the game. The default setting is 5029, which is the same as the NeXT version of DOOM as well as TCPSETUP. NOTE: All players involved in the game must use the same port number. In most cases the default port will work fine; change it only if necessary to avoid conflicts with other network software. -debug This parameter causes some uninteresting debugging information to be printed on the screen.