Debugging QII
When Quake II was first released, it had several bugs; not true show stoppers, but serious bugs nonetheless. (There was some small controversy about whether id released the game about a month before Christmas just to cash in on sales even though it wasn’t quite ready for release, and they basically admitted that, but that’s hardly my point. I for one was glad to finally get the game into my hands.) Well, since I had Windows NT, and knew that I would be in the minority, I wrote John Carmack, the main programmer of Quake II, about a problem I was experiencing. I thought I would be helpful in reporting a bug that only showed itself in a small segment of their supported user base. After all, one the things I think is the most cool about Quake II (besides the fact that it’s a great game to play), was that it fully supported Windows NT (and Linux, and eventually SGI’s, Sun’s, etc.), and I figured that he would want to know about it. Here’s my letter:
From: David Krider [dunkirk@sprynet.com]
Sent: Sunday, December 28, 1997 6:45 PM
To: ‘johnc@idsoftware.com’; ‘bhook@idsoftware.com’; ‘xian@idsoftware.com’
Subject: I know you get hundreds, but would you please answer this quick one?I know you guys get hundreds on emails a day, but I want to ask a quick question. I really need an answer; I am going insane wondering about it.
I am having serious trouble with Quake 2 getting connected to a server. I have written several times, but I never get an answer, not even a “Yes” or “No” or “Leave us alone.” I have tried the Activision tech support, but that was a bloody waste of time. That guy was giving me 95 advice on NT.
Specifically, I can connect to a server, IF I first switch to 640. If I leave it at 320, I never connect, and will eventually crash Quake 2, which will make me have to reboot NT. (That ain’t right.) So, okay, I created a video-mode-toggling macro. However, when it goes to switch levels, even though I switch back to “hi” res, it won’t reconnect.
This is all over a modem, usually a 21 kbps connection. At work, over the T1, I have NO PROBLEMS. That’s my dilemma. If I pull the twisted pair and call my ISP with my work machine — the one with no problems — I get the same behavior as at home over the modem.
I have gotten errors to fill the screen if I wait long enough. They say WSAEsomethingNOBUF. I have had “Dr. Watson”‘s. I’ve had BSOD’s. Am I crazy? Is this a confirmed bug? Is there a proper workaround? Will it be fixed?
Please, please, please tell me what’s going on. I know you’re busy, but if this is actually a bug, something needs done. If it’s a problem on my end, please help me, because Activision came up woefully short. I love this game. Single player is AWESOME, but I really bought to FRAG SOMEBODY ONLINE. And I don’t want to have to go to work every time I want to do that. I know that NT users are probably in the vast minority, but I don’t think that they’re supposed to be hamstrung with only being able to use fast connections like I’m seeing. I must have something screwed up.
Please?
Thanks for listening,
dk
David Krider -> dunkirk@sprynet.com
Acts 17:28 For in Him we live, and move, and have our being.
To which I got this response:
From: John Carmack [johnc@idsoftware.com]
Sent: December 28, 1997 6:47 PM
To: David Krider
Subject: RE: I know you get hundreds, but would you please answer this quick one?Get the 3.08 patch and see if that helps.
I countered with:
From: David Krider [dunkirk@sprynet.com]
Sent: Sunday, December 28, 1997 6:58 PM
To: ‘John Carmack’
Subject: RE: I know you get hundreds, but would you please answer this quick one?Oh CRAP! I forgot to mention that that is what I have been running.
And thanks,
dk
Followed quickly by:
From: David Krider [dunkirk@sprynet.com]
Sent: Sunday, December 28, 1997 7:08 PM
To: ‘John Carmack’
Subject: RE: I know you get hundreds, but would you please answer this quick one?I am so nervous about getting an actual discussion going on this topic that I shot off a quick message, hoping that you would read it. I apologize for not taking the proper time the first time and making this longer than it needs to be. My second email can’t be left alone. I need to explain that I got the 3.06 update and tested it. Found the same problems. Waited for the next. Went straight to 3.08, tried connecting only to 3.08 servers, and still have had the same problems.
And thanks again,
dk
To which Mr. Carmack said these fateful words:
From: John Carmack [johnc@idsoftware.com]
Sent: Sunday, December 28, 1997 7:10 PM
To: David Krider
Subject: RE: I know you get hundreds, but would you please answer this quick one?If you have some time to spare now, I could try and debug the problem you
are having. Lots of modem players are having it, so it is fairly
important. I would probably need to send you a couple experimental
executables, and have you connect to a server running on my development
machine.Give me a call at [CENSORED] if you want to give it a try.
[CENSORED (Machine IP Address)]
John Carmack
So I called him. And made a gushing fool out of myself. It was pathetic. But, the good news is that he gave me an experimental quake2.exe to try out on his development server.
From: John Carmack [johnc@idsoftware.com]
Sent: Sunday, December 28, 1997 7:37 PM
To: David Krider
Subject: try this exeThis has a cou0ple changes for the packet flooding:
<<Attachment>>
So I did. But that one didn’t fix the problem. So he compiled a new one and sent that to me. That did the trick. John himself got curious about whether or not it had:
From: John Carmack [johnc@idsoftware.com]
Sent: Sunday, December 28, 1997 8:51 PM
To: David Krider
Subject: RE: I know you get hundreds, but would you please answer this quick one?Have you tried playing through a couple levels on a public server with the
new client yet? I think that the problems people had with level changes
are the same problems as getting connected, but I’m not positive.John Carmack
And I replied:
From: David Krider [dunkirk@sprynet.com]
Sent: Monday, December 29, 1997 1:02 AM
To: ‘John Carmack’
Subject: RE: I know you get hundreds, but would you please answer this quick one?Have I tried? That’s all I’ve done since you sent it. <bg>
Sorry, I should have realized that you would have liked some more immediate feedback. I only had one hitch, and I think the server just plain quit or got taken off-line. I obviously don’t know the particulars like you do, but I do think that connecting and switching were the same problem in that they both exhibited the same kinds of hangs. However, switching and joining seem to be completely repaired with the debug you sent me. I probably connected 3 or 4 times and switched levels 15 or 20. I was usually the first to third person that got dumped onto the level. (That’s a big advantage, you know? Hmm. Anyway.) Which seemed kind of odd since my ping hung around the mid-200′s over the modem. But I don’t know if that’s good or bad, because this is the first time I’ve gotten a non-T1 connection with it. (Or any other multiplayer game.)
Thank you very much for taking the time to help me. It was very cool to be included in the process. (I guess my 15 minutes of fame just came and went.) Sorry for being so awestruck on the phone. It’s just that I know only about enough C and assembly to be dangerous, and I am understandably impressed by your incredible depth of knowledge and skill.
I also want to thank you for a very impressive game which, agreeing with Mr. Hook, has incredible replay value. I do pretty well on the public servers, but I guess I gotta learn how to rocket jump now. It’s just that it seems so counterintuitive. Why’d you reduce the damage from your own explosions? They shouldn’t care. I figured it was just a by-product of the way Quake was set up, but was it intentional to allow you to do a “rocket jump” per se?
dk
But I never got an answer to my last question.
On another occasion, I was having trouble with my sound, so I wrote Activision support. They gave me advice for Windows 95. I lost my temper and copied John on the response, deriding the poor support person, who probably gets a hundred Windows 95 questions a day, and made his assumption understandably. In addition, my question was a stupid one (there are stupid questions, aren’t there?), and I showed my rear as someone who supposedly knows something about NT. But John, again, took the time to write me back, and calmly and gently reminded me that my assumptions were wrong, and that the problem could not have been the one I suspected. Now that was cool. As someone who probably is one of the most talented and prestigious programmers in the world, he didn’t respond to my arrogance with anything but professionalism. I wish that I could embody such a treatment of others.