LAN Trickery: An Interview with Scott Coleman and Jay Cotton, Creators of Kali – Part 1

Kali‘s ability to connect friends and complete strangers ushered in a wave of online gaming services that included Blizzard Entertainment’s I caught up with Scott Coleman and Jay Cotton to learn the origin of Kali, how the program works its magic, as well as iDOOM, Kali‘s predecessor.

Author’s note: This interview was originally published in Stay Awhile and Listen: Book I

My first experience with multiplayer gaming on the PC was a disaster. Over three hours, I struggled and failed to dial into a friend’s computer for a round of deathmatch in Doom II. From our separate zip codes, we followed the game’s command-line-driven instructions, crossed our fingers as our modems screeched at each other… and then dropped out, leaving us blinking at blank monitors instead of racing down corridors and firing rockets.

In 1995, programmer Scott Coleman and fellow Doom fanatic Jay Cotton solved my and legions of other PC gamers’ problems when they released Kali, a program that tricked computers into thinking they were plugged into a local network but instead whisked them into an Internet arena to face opponents from all around the world. Today, online gaming is considered a given on PCs and consoles alike. Back in the mid-90s, it was a novelty.

Kali‘s ability to connect friends and complete strangers ushered in a wave of online gaming services that included Blizzard Entertainment’s I caught up with Scott Coleman and Jay Cotton to learn the origin of Kali, how the program works its magic, as well as iDOOM, Kali‘s predecessor.


David Craddock: How did you discover games and programming?

Jay Cotton: For me, video gaming started with an ancient Pong game my great uncle had back in the 70s. I don’t recall which make it was (Magnavox or Atari), but I was instantly hooked and over the years, with very little access to any console gaming device, I realized the primary purpose of home PCs was gaming, even if many others justified their purchases for other reasons. The VIC-20 and Commodore 64 were amazing machines and exactly what I needed to start experimenting during college.

Arcade games, especially Pac-Man, inspired me to learn programming as a means to understanding how these games worked. I’ve never really written any games myself except for a text-graphics version of Pac-Man on an old Commodore Pet computer during high school (yes…that’s all we had to work with). Armed with the “peek” and “poke” commands, I soon learned how easy it was to crash a PC and also how to make it do more than just output text.

Scott Coleman: Like most kids, I was addicted to playing computer games, dating back to the Magnavox Odyssey video game that you hooked up to your TV. Once I learned programming in high school, I got a computer of my own (an Ohio Scientific Challenger 1P) and wrote my first game: the player would drive around in a little tank and attempt to shoot a buffalo, which would randomly appear and disappear on the screen. Later, I moved on to a TRS-80 and an Atari 400, which was an awesome game machine for its day.

During those days, I spent far more time playing games than writing them, however. While my interest in writing software was probably due in part to my interest in games, but there was more to it than that. Programming itself held (and continues to hold) its own fascination for me. It was only later, after Doom was released and I had been playing it a while, that I started writing game-related software again.


David Craddock: Before Kali, I discovered in my research that you first teamed up to write a program called iDOOM that allowed players to take Doom online. How did you discover Doom?

Jay Cotton: I discovered Doom as a result of a memo sent around by campus networking personnel at work [University of Georgia] regarding problems with Doom and its all-broadcast networking code. The entire UGA campus was “flat” (no sub-nets, and no internal routing or even switching) and just a few people playing Doom were bringing down the entire campus network. I was working at UGA’s vet school at the time doing some programming and network setup.

When I downloaded the game to investigate, I had found that the problem was already resolved. An update to the game fixed the code to use unicast IPX [network protocol that transmits data between computers connected to a network] instead of broadcast. However, it was too late. I was already setup to test it and managed to get “help” with my testing from co-workers. It was around this time we setup a packet sniffer, and I became fascinated by how the networking code worked and what exactly was changed to fix the problem.

Scott Coleman: I have always loved the idea of multi-player, multi-machine games, but they were a rarity when I was growing up. Those that did exist were usually turn-based games like Chess, not fast action “twitch” games. I had also played modem games like Knights of the Sky and Modem Wars, but these were limited by the bandwidth available on a modem and were not very engaging for me.

Then I read about Doom on USENET in the fall/winter of 1993, just before the first beta came out. Doom with its IPX network multi-player mode promised to be a quantum leap forward; I couldn’t wait to play it! I downloaded it and was fragging my office mates on the day of its release.

David Craddock: Can you share some anecdotes from your early days playing Doom?

Jay Cotton: I remember reading about “circle-strafing” and the need for a custom keyboard-mouse configuration. Re-learning the game using the mouse and keyboard was quite a challenge at the beginning, but paid off handsomely. Strafe-running and wall-running were tricks to outrun opponents. After playing against a keyboard-only opponent, and being accused of cheating many times, I always ended up teaching these techniques to other players, so they would provide a better challenge the next time we played.

It [multiplayer Doom sessions] was all LAN-playing at work initially. However, there weren’t many people willing to play and no one enthusiastic enough to provide any real competition.

Scott Coleman: I started out as a “keyboard” Doom player, using the arrow keys on the keyboard to turn left and right. One of the guys in my office was a big Wolfenstein 3D player, and he used a mouse to play; he encouraged me to play Doom using the mouse. That was a major turning point (pun intended) for me. I was a pretty good player before that, but once I got the hang of using the mouse, I became unbeatable. It got to the point where none of my office mates would play against me anymore. I was the biggest fish in my little office pond.

My favorite kind of map is one that is designed specifically for a fast-action deathmatch with continuous fragging. What might be interesting for a single-player game is probably the last thing you want for deathmatch. Who wants a huge, sprawling map where you spend 20 minutes just trying to find somebody to kill? You also want to situate the respawn points such that other players cannot simply camp out near the respawn points and wait for players to respawn; nothing sucks more to have a rocket explode in your face before you’ve even fully materialized.

And the exit switch should require cooperation from at least two players in order to activate, so that no one can accidentally end the level early. Once level- editing tools like DEU [Doom Editing Utility] became available, people came up with some really fantastic deathmatch WADs [maps]. A couple I particularly remember were called “NIN” and “Danzig.”

The office where I worked held an annual programming contest. My entry for 1994 was a deathmatch WAD laid out like my office area. I took photographs of the actual doors and walls and used them as wall textures; I recorded actual voices and sounds and used them as sound effects. The various monsters in the game became my co-workers. Although none of this was technically “programming,” I won the contest anyway.


David Craddock: What was your first experience playing Doom online?

Jay Cotton: There was a program called TCPSETUP written by Jake Page that replaced the original ipxsetup [program] from the game. Using this small program, and knowing the IP numbers of the other players, you could, theoretically, play Doom over the Internet. You had to find other players via IRC [Internet Relay Chat].

Scott Coleman: I started hanging out in the #doom channel on IRC. Some of the guys there were using a program called TCPSETUP to play Doom over the Internet, so I gave it a try. The program was a great idea, but the implementation lacked polish and stability. My first few attempts at using it were very frustrating, but I kept at it and eventually figured out ways to actually play a complete game every now and then.

David Craddock: Did you two meet through playing Doom, then?

Scott Coleman: I met Jay in the IRC #doom channel. He was another Doom addict like me, and he was the first person I’d ever met who could beat me consistently.

Jay Cotton: Scott Coleman was one of the other Doom players trying to setup and play games using TCPSETUP. We both experienced the same problems and frustrations.

David Craddock: As the author of TCPSETUP, was Jake Page involved in writing iDOOM?

Scott Coleman: Jake shared his source code for TCPSETUP with me. After using it awhile and identifying its limitations, I sent him a list of suggested improvements, but he never responded. So, using his source code as a guide, I wrote iDOOM. iDOOM was a ground-up, clean-sheet-of-paper design that incorporated all of the lessons we’d learned from our TCPSETUP experiences.

David Craddock: What areas of TCPSETUP did you feel needed improvement?

Scott Coleman: For one thing, it was extremely delicate. If your timing was even just a bit off during the initial synchronization phase, the game would bomb out before it even began. The command line required to run it was cumbersome, requiring you to determine and then type in by hand the IP addresses of up to three other players in a particular order; if one of the players in the game got the command line wrong, it wouldn’t work.

It also required an external communication mechanism, such as IRC, to find other players and coordinate the games. To say that TCPSETUP was not user-friendly is a gross understatement.


David Craddock: Was iDOOM meant to support games besides Doom? Could it?

Jay Cotton: We had no other plans for iDOOM other than to replace/enhance TCPSETUP and provide an easier means to play Doom. I just wanted to be able to turn on my PC at work and find an opponent easily and get started playing as quickly and painlessly as possible.

Scott Coleman: iDOOM uses the Doom network driver abstraction, so it can only work with games that use that mechanism. Doom, Doom II, and derivatives like Heretic and Hexen are the only games you can play using this type of driver. After the success of Doom, other multi-player LAN games, such as Descent, started to come out, and we wanted to play them over the Internet also. That’s why I started working on Kali.

David Craddock: What was the process of testing iDOOM?

Jay Cotton: I had two DOS computers at my desk, as well as a packet sniffer so I was able to test launches of the game and see where the communications broke down when things failed. However, most of the testing was more along the lines of “Hey guys! Who wants to help test the new iDOOM?” via IRC.

David Craddock: What was the most difficult feature to get working in iDOOM?

Scott Coleman: Getting the connectivity solid and stable took some doing, mostly because I knew nothing about network programming when I started and had to teach myself. Being able to see how TCPSETUP did it was a major kick-start.

Jay Cotton: Coordinating a launch was the most difficult aspect. Once iDOOM launched the game, you had to hope all of the other clients also launched successfully at the same time. If anything went wrong, the launching process would hang, and not knowing if this was caused by a slow computer or a failed launch would mean waiting a couple of minutes before quitting and trying again.


If you enjoy Episodic Content, please consider showing your support by becoming a patron or via a one-time donation through PayPal.





Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s