The History of QuakeWorld

From QWiki

A Look back at the making of one of the most important advancements in multiplayer gaming.

Article written for GameSpy.com by John «JCal» Callaham

It was late in the summer of 1996. For gamers, especially first person shooter players, it was a both a happy and frustrating time. The original Quake shareware release from id Software had been available for several weeks via download and people who had ordered the full game directly from id were beginning to receive their copies in the mailboxes. Yet all was not completely well for gamers when they played either the shareware or the full version in multiplay deathmatch mode on the Internet. Complaints came from all corners, as modem users on a dial-up connection said the game was unplayable on the net. High latency, excessive packet loss, and other problems kept the vast majority of net players from getting the best gameplay experience in multiplay Quake.

The complaints had not gone unheeded by id, especially the company's lead programmer John Carmack. In his .plan file on Aug. 2, 1996, Carmack announced his new project to improve Internet play for Quake, a project that would eventually set the standards for net play gaming and opened the door to a whole new audience for first person shooters. The name of the project was equally ambitious in its terminology: QuakeWorld.

In his original .plan file announcement of QuakeWorld, Carmack admitted that when he developed the original net code for Quake he didn't have the best understanding of latencies for modem users on the net (due to his schedule involving the completion of id's latest game Quake 3: Arena, Carmack declined to be interviewed for this article). «While I can remember and justify all of my decisions about networking from DOOM through Quake, the bottom line is that I was working with the wrong basic assumptions for doing a good internet game,» Carmack wrote. «Unfortunately, 99 percent of the world gets on with a slip or ppp connection over a modem, often through a crappy overcrowded ISP. This gives 300+ ms latencies, minimum. Client. User's modem. ISP's modem. Server. ISP's modem. User's modem. Client. God, that sucks. Ok, I made a bad call. I have a T1 to my house, so I just wasn't familiar with PPP life.»

So Carmack wrote that he went back and scraped the entire net code and started again from scratch for QuakeWorld, which was developed strictly for Internet play. Carmack wrote that he would improve latency for modem users on the net for and also implement client side prediction in the QuakeWorld net code. «I am now allowing the client to guess at the results of the users movement until the authoritative response from the server comes through. This is a biiiig architectural change,» Carmack wrote.

The result: a game that, in theory, would allow a player, even with a 200 ms ping, to play competitively with a player with a 50 ms ping in Quake DM on the Internet. The QuakeWorld system was divided into a client package for the players and a separate server package for the machines that would be running the actual games. Another change in the net code for QuakeWorld was the use of a master server, located at id's offices in Mesquite, Texas. The idea was that whenever a QuakeWorld server started, its presence would be registered by the master server and logged. With the help of fellow id Software programers John Cash and Christian Antkow, Carmack began to develop the code for QuakeWorld.

He also decided to use a third party program as the QuakeWorld client: QuakeSpy. The server browser program was already becoming the de facto method of finding Quake servers on the net. So why did Carmack chose this as the QuakeWorld front end? According to Jack «morbid» Mathews, one of the original developers of QSpy, (which has now morphed into Gamespy 3D) the reason was simple: «Because John thought it was cool.» QuakeWorld was not just about better net play, however. Carmack wanted to also support the developing clan community that played Quake in teams, so he placed custom skin support for players into QuakeWorld. The new QuakeWorld code, however, took a bit longer to implement than first planned.

The first version of QuakeWorld was supposed to have been released on Sept. 19, 1996, to coincide with a QuakeWorld launch party in New York City. Although QuakeWorld itself was not released that day, the big party in Manhattan became legendary in the history of Quake as the first major gathering of players and id employees in a single location to play Quake (but that, as they say, is a story for another day). After months of private beta testing, the first version of the QuakeWorld server was released on Dec. 13 with the client package following a few days later on Dec. 17. The response was, for the most part, postitve from players and server operators.

«My first reaction was, «Wow.» I was just amazed at how well the prediction worked,» said Richard «^Drag0n^» Brewer, one of the beta testers for QuakeWorld, maintainer of the web site QuakeWorld Central, and writer of the online documentation for the end users of QuakeWorld. «You could actually move around intuitively, without having to accommodate for the latency between you and the server,» Brewer adds. One move in particular made both Brewer and Carmack take notice of what players could do in QuakeWorld: rocket jumping.

«One time that I remember being particularly impressed was when I was able to successfully use a rocketjump alias I wrote on the client, which was just something you couldn't really do in Normal Quake over the net,» Brewer said, «John said something like «That move is going to be particularly effective.» Looks like he was right. If memory serves there's a whole webpage dedicated to the art of rocketjumping.»

Patrick Hook, another beta tester for QuakeWorld and former maintainer of QuakeWorld.net, also was impressed with how QuakeWorld worked compared to regular Net Quake. «I was fairly impressed,» Hook said, «It did show me that the limitations of slower connections could be somewhat overcome. At the same time I could tell that a great deal of work would be required to make it truly solid.» (Both Hook and Mathews currently work for Ritual Entertainment as a level designer and programmer, respectively.) Carmack and the team at id continued to add new features to QuakeWorld over the next few versions of the client and server package. Some of these feature included increasing the player limit from 16 to 32 players, adding GLQuake support, and introducing QPlug, a browser plug in that allowed a QuakeSpy-like interface to be placed on web pages and seen through Netscape Navigator and Internet Explorer.

Around May of 1997, Carmack decided to devote most of his energies to Quake 2, and needed someone else to continue the maintenance and the upgrade of the program. In fact he found two people to handle that job, Mathews and Dave «Zoid» Kirsch. Zoid is perhaps best known for developing ThreeWave Capture the Flag for Quake in 1996, the basis and main influence for practically every single CTF mod for Quake games. He developed the official CTF mod for Quake II, and is doing so again for Quake III: Arena. «From the work I did in building ThreeWave Capture the Flag, I got involved more in the QuakeWorld development and was on the beta testing team,» Zoid said.

«We were encountering some overhead problems with the QuakeWorld masters when doing user look ups, so I offered to rewrite some of the database handling in the master to speed it up. This is where I was introduced to John Carmack via email and worked with him on the QuakeWorld development over the next few months. CTF was the major test modification for QuakeWorld and I worked in keeping it up to date with the QuakeWorld releases,» Zoid continued. «Around January 12, 1997 I took over maintenance on the Linux Quake ports since Dave Taylor was no longer working on them since he was busy with his company, Crack.Com. As QuakeWorld development continued, John had me handle the Linux versions of QuakeWorld.»

«Finally on May 22nd, 1997 John got more into Quake2 development and handed off the maintenance and upgrades of QuakeWorld to myself and Jack «morbid» Mathews.» Zoid and Mathews released several more versions of QuakeWorld over the next year or so. Bug fixes and improvements in the code were put in place, with the last «official» release of QuakeWorld, version 2.3, released on Aug. 27, 1998 Zoid released a «test version» of QuakeWorld, 2.33-0005, on Dec. 22, 1998. Even though he said in his announcement of the release that a 2.4 version would be coming soon afterwards, the «test version» was the last released to the general public.

«It was a test to address a couple bugs. It was only a minor update,» Zoid said, «I got busy with other projects after that and there wasn't a demand for updates so I stopped development.» So is QuakeWorld development finished? Maybe not quite yet, according to Zoid. «Version 2.30 was supposed to be the last. I may do another release since some issues have appeared recently,» he said. Zoid is also not neglecting other operating systems for future QuakeWorld releases. «I am planning to do revisions to the Linux versions since OpenGL under Linux has started to become a much more supported platform and the old clients need rebuilt for the new X11 OpenGL implementations.»

Even though other games such as Quake 2, Half-Life and Unreal have been released in the past few years, QuakeWorld is still immensely popular all over the world, with hundreds of servers and thousands of players logging on and playing «old school» Quake. Carmack's networking code had no small part in helping to create a true community of Quake players, according to the people involved in the testing and development of the program.. «The skin support was one,» said Mathews, «The other was how much more playable QuakeWorld was for so many more people people and how well supported QuakeWorld was (and still is to a small extent). Some people may complain that NetQuake was much better than QuakeWorld, but in reality, QuakeWorld enabled many more people to enjoy gaming online than NetQuake ever did.»

Brewer echoes Mathews' statements. «QuakeWorld's new feature set made all the difference in the formation of online clans,» he said. «It made the game playable for those people that had modem connections, and helped shave away the advantage that players on high-bandwidth connections had over them.» Brewer handled the custom skin database for the first year of QuakeWorld's development and saw the amount of effort Quake players put into their custom skins. «I don't think anyone really expected the influx of clan skins we had - if memory serves, it went out with the skins of the major clans at the time: RevCo, Dark Requiem, 311, etc., and a few extras that (id Software artist) Adrian (Carmack) came up with.»

«The day of release, we got slammed. I remember at one time we were getting something like 100 submissions per hour at Qwcentral over on Stomped. I think we had over 5000 usable skin submissions by the time things started to calm down three months later. I had to upgrade my hard drive just to hold them all, and was spending the majority of my spare time ferreting through them to make sure they worked with the game. They're still trickling in, even today. I probably should put together a «commemorative» pack of skins at some point here.»

Part 3 of the article is missing.