Commonwealth Network

Descent on the Net

Author: Charles Kendrick aka Myrkul (

You can also go to my homepage.

This is a detailed explanation of the behavior of Descent when played over the internet. In particular I'll cover the way Descent networking is implemented, and the effect of lag and loss on Descent game play.

This is a big document, and there are a few ways to go through it. Each question and answer is marked green, blue or red according to how difficult it is to understand. Here's what the colors mean:


Easy to understand, or at least, required reading to understand the basics. All the green questions are basically sequential are you should read them all to get a good understanding of Descent over networks.


Optional and somewhat more difficult to comprehend. Most people will be able to understand these with very little computer knowledge, typically because I have described or explained any terminology I use. These question/answer pairs are sometimes weaved into a sequence of green questions.


This might be very difficult to understand, or possibly I've just decided to use a lot of computer terms without defining them, because it would take too long to explain them. Some of these questions might gravitate to blue if I add more to them.


GREEN Why are YOU writing this?

Well I've played on Kali via both modem and direct connect, and I've played lots of games on a LAN. Also I'm a computer science major, have taken courses on networking, and know about the 'net, eg routers and such. Also I'm an extremely finicky player, and effects like lag and loss really bother me, and thus caught my interest. Also, as a Kali Descent addict, I wanted to know how to kill people despite lag and loss. So I ended up figuring all this stuff out, and I thought I'd broadcast it to the world...

Also, there are plenty of people on Kali with bad misconceptions about the role of lag, loss, modems and CPU speed in Kali Descent games. These people tend to get very angry or frustrated with other players, and blame anything that goes wrong on lag or some other supposed disadvantage. This document is also here to try to alleviate some of that.

GREEN So you're a CS major huh? Is this going to be techo-gibberish that'll go right over my head?

No, not at all. I'll barely even have to mention the word "router" to explain Descent's behavior. You'll need to have played Descent on Kali and experienced lag in order to understand me, however.


GREEN Ok, how does the game work in general on a network?

Gee, that was something of a manufactured question...

Several people are running Descent on their computers, and the copies of Descent communicate over the network through the use of "packets". Packets are basically small pieces of data just like what is used in an FTP session or any other network communication. In the case of Descent, each packet is some kind of game event, eg firing a shot or opening a door. When each player receives a packet telling what another player is doing, Descent then renders that action on the machine that receives the packet.

So for instance, ships move around because all players in the game send "position packets". If enough position packets are getting through between any two players, they appear to move relatively continuously to each other, because position packets are sent several times a second. If a lot of these position packets are being lost your opponent will appear to jump around.

GREEN How do you mean Descent "renders that action on the machine that receives the packet."?

What I mean is that for instance, the copy of Descent running on your machine receives a packet from another player that says "I just fired a fusion bolt". Your machine will then place the shot in the game in a certain orientation, heading in a certain direction. From then on, that fusion bolt will be rendered locally on your machine without any further information from the person who fired it, just like a shot from a robot in a single player game.

This has a few immediate consequences; for one, if your computer is a lot faster than another person's computer, so much faster that they fly significantly slower in a single player game, the same difference in speed will be present in a networked game. This difference in computer speed will also affect rate of fire of weapons and give a better framerate. Having a faster computer is generally an advantage, although it can impact certain playing styles more or less adversely than others.

GREEN Ok, basically that jibes with what I've seen.. maybe... but what makes you think it works that way?

For several reasons:

Missiles aren't lagged
When a player fires a missile at you, it doesn't freeze in mid-air, and it doesn't track to where you were a few seconds ago, even if the player who fired it is jumping all over the place. If the player who fired the missile was still sending packets controlling the behavior of the missile, it would be just as jumpy as that player, and just as lagged. This means your machine is controlling the missile, just like a missile fired in single player mode.

Shots all move at the correct speed relative to you
If every player kept controlling his shots after they were fired, you'd get shots moving at Pentium speed on a 486, and shots moving at 486 speed on Pentiums. When an opponent's game slows down because of a lot of activity on a slow machine, shots would suddenly grind nearly to a halt and hang there momentarily. Ever seen that?

Parallax wouldn't have written the game that way
Consider the number of packets required to send position updates every fraction of a second, to notify another player of a series of shots, to keep track of all items, breakable panels, and doors in the mine. Every player must be capable of sending this many packets, and receiving that many packets multiplied by the number of players in the game. Now imagine if, in addition to notifying another player of a shot, you also sent out position packets describing the path of that shot, as often as were required to make the movement continuous. Now imagine three players firing thirty shot plasma bursts. You get the picture.

In addition, there really is no reason for position updates to be sent for every shot. Most weapons move in a straight line at constant speed, and you wouldn't want to subject missiles to lag.


GREEN What is lag? I mean, officially.

Lag is latency. Latency is the amount of the time it takes for a packet to get from sender to receiver.

GREEN What is loss?

Loss is when a packet is "dropped" or lost somewhere between sender and receiver. Contrary to popular Kali belief, this is most often due to modems rather than any of the networking in between.

GREEN How does Kali Descent look when you have a direct connection (DC)?

Every player moves continuously and fires continuously, whether they are on a modem or not, no matter how many players are in the game. Ok, not everybody. Like about 85% of people. One simple reason why someone wouldn't move continuously for a DC is that their frame rate is very low. In this case they only send position updates as often as their position is updated (every time they see a frame), so you see a reflection of their frame rate. Other reasons are more complex, see the advanced section.

GREEN So basically, when you have DC, you can just kick everyone's ass without even trying, you sack of shit.

No, not at all. DC players experience all the same difficulties as modem players. We drill people into the wall with megas and bursts of plasma and they fly on without noticing.

GREEN WTF?? How can that be?

Having a direct connection just means that I can receive everything that everyone is sending, ie, all position updates and shots. We still can't do anything about all the packets that modem players drop, which is the primary reason for problems in the game.

GREEN But wait a minute.. if modem players are dropping all of the packets you send them... they're obviously out of bandwidth.. yet they send you everything they are doing just fine??

Precisely. Descent and/or your computer and/or the packet driver are in charge of how the modem's bandwidth gets used. Thus, anytime Descent wants to send a packet, it grabs control of the modem and does so almost instantly. The rest of the bandwidth gets used for receiving packets.

Thus, again contrary to popular Kali belief, everyone is sending the same amount of information out into the game. A DC player joining your game does not cause any more lag than just another modem player joining the game.

Problems occur when the number of players in the game gets large, and people's modems can not handle all the incoming packets. This is the primary reason for severe packet loss. Packets that come in when the modem is busy are generally lost. These packets are kept in a very small buffer in your Internet Service Provider's networking hardware, generally only large enough to hold a packet or two. Packets overwrite each other in this buffer until the modem becomes free to receive a packet. Then whichever packet is the most recent, ie overwrote all the earlier packets which were lost, gets sent.

Thus, when loss gets really bad, other players in the game begin to hop around because of lost position packets. They still might move somewhat continuously, as basically you get one packet out of every X packets, and it's the Xth packet every time, meaning that you get a relatively continuous stream of packets, just with larger gaps.

GREEN So how can I tell when things are getting really bad?

Given that the default position packet rate in D1 and D2 is 10 packets per second, if someone is moving discontinuously at all you are probably receiving only 2 or 3 of those ten.

Also, anytime players you are actually seeing the effects of loss on your machine, assuming all modems are of approximately even speed, any other modem players are dropping about as many packets. In practice the assumption that all modem players are getting the same bandwidth is a pretty bad assumption, since ISPs vary widely in their level of service. The key idea here is that if you can see the effects of loss, it's likely the game has become totally chaotic and unplayable for all involved.


GREEN People seem to jump around more if I start firing.

Your using more of your bandwidth for outgoing packets (eg shot packets), leaving less bandwidth to receive packets with, so you're dropping more packets.

GREEN Why do thousands of duplicate items begin to appear in the game?

When a player picks up an item, he sends out a packet that says he just picked it up. If you're on a modem you may drop that packet. Even if your on a DC, if two other players get the same item, they will both spew that item when they die.

Sometimes items can even duplicate in a pure DC or LAN game. This happens because there is still some small latency (say a tenth of a second) and two players go for the same item simultaneously. They then typically ram into each other and both get the item.

GREEN This guy keeps disconnecting and reconnecting.

A person disconnects when you haven't received any "I'm here" packets from him in a long time. If it's just one person, it might be on his end, see the discussion of outgoing packet problems. If everyone's disconnecting and reconnecting, you're in a game your modem can't handle.

GREEN Other players are talking to somebody who I saw disconnect, and sometimes they seem to be dogfighting ghosts. I thought they were crazy or stupid until I got a message that the disconnected guy killed one of them.

This is a common problem that even happens to DCs and among DCs sometimes. Basically, packet loss has caused your machine to decide that a certain player has disconnected, whereas other players who didn't drop the important packets still see that player. Then when one of those players is killed by the player you saw disconnect, he broadcasts a message "I got killed by X" and your computer blithely reports this to you, not realizing that it makes no sense.

These disconnects between two specific players can be one way or two way, ie it can be that two or more intersecting sets of players are playing, where some players can see everyone and others can't. Before you sell your modem, however, realize that this is a very rare phenomenom, unlikely to happen more than once to people in the same game.

While a lossy connection increases the chance that this phenomenom will occur, as I said it happens to DCs, and seems to be related to missing certain very specific packets rather than consistently receiving most of the packets. In other words, you could have a good connection and this could happen to you by dumb luck.

If it happens to you and you realize it, just exit and rejoin the game. The person who started the game will then resend you a list of all the players (although it is possible that his list will also be incorrect, it's unlikely).

GREEN Kali is full of cheaters. I fire multiple megas at some people, and huge bursts of plasma, and they don't even try to dodge, but they don't get hit.

First let me say that yes, there is a hacked copy of Descent out there that works on Kali. It gives the cheater 32000 shields, unlimited ammunition, and the ability to fire weird weapons, eg twin or quad megas, quad flares, even reactor balls.

However, this hack is extremely rarely used. Most people who don't have psychological problems just try it once and get bored of it, then go back to normal Descent.

Almost always if you're having trouble killing someone it's a matter of very high loss. They may be on a slow modem, or have a bad ISP. Another possibility is that the other player has seen you disconnect from the game, as in the previous example.

GREEN Fine, I'll take your word for it, but how could I tell if someone is actually cheating?

There are basically only three ways.

You actually score a hit with a mega, and they don't die.
By actually score a hit, I mean you hear the "grinding metal" noise that signifies a player actually taking damage. You have to be very careful about this criteria: if you or anyone else fires any other kind of weapon, or even could have been firing another weapon (and you dropped the packet), you can't use this criteria. It must be a direct hit with a mega, and no other possible source of damage. You may have noticed that a player taking damage from missile flash only (not a direct hit) will not make the "grinding metal" noise, so that will help you determine whether you got a direct hit.

They are using impossible weapons
This one is pretty obvious. If someone fires reactor balls or quad megas, they are using the hack.

They are using megas or some other weapon not found on the level, or on any of the previous levels
Make sure you know about every little nook and cranny of a level before you accuse someone of cheating on this basis. This is really only a reliable way to tell someone is cheating if you, for instance, get hit with a mega on First Strike level 1. And even then, it's not necessarily the person firing who's cheating. Another player who is the one actually cheating may have introduced megas to the level.

These criteria can be loosened slightly, if you are very very careful. For instance if you follow a player around for a long time and watch him take a clearly excessive and ridiculous amount of damage, you've probably got a case of cheating on your hands. Be wary, however, of the tendency to claim that a player who is doing a lot better than you are (or were, before they arrived) is cheating.

GREEN It seems like certain levels make for more lag than others. Also, sometimes lag will increase as a game goes on.

A lot of traffic goes back and forth describing the items in a level, and describing the opening of doors. If there are a lot of items on a level, or a lot of items end up duplicating, this adds to the traffic. Also, there is a popular level called "The Doors" which has a room full of, basically, doors. This causes a lot of loss, and typically people who try to join the game are told that they are missing packets.

Also, because of how Descent's rendering engine works, large levels take longer to render, decreasing your framerate. Occasionally a player will drop a packet because his computer can't deal with it in time, and a large level can add to that problem.

GREEN I killed someone, he spun around for a sec, and then he just disappeared without spewing anything.

GREEN I killed a guy and I wasn't given a kill. Sometimes though, other players know I got the kill.

GREEN A guy backed right through me and stuffed a mega up my ass.

GREEN I fired a mega at point blank and killed myself, but the other guy didn't die.

GREEN I got a message that "so and so killed himself". I turned around and there he was blowing up behind me! He never fired anything, WTF?

Ok basically you should be able to figure out the reasons for the above and most of the rest of the problems you might have. Basically someone has dropped a packet or isn't getting packets often enough.

RED I flew right through a wall and then my monitor blew up!!

RED Suddenly Satan appeared to me and asked me the size of my genitalia!!

RED I really SUCK!!

Sorry, can't help you there. Most likely unrelated to Descent networking. Check your hardware and your brain (if there's a distinction any more).


GREEN I have a DC and I'm getting slaughtered in netgames. Some people seem to never die. They tell me lag gets everyone. Do I just suck??

No. You don't at all.

All you modem players out there, let this come across loud and clear: a DC has no inherent advantage.

The fundamental thing you should understand is that a connection on a network is point-to-point. If I have a direct connection to the backbone of the 'net and you have a modem connection to it, my connection to you is via a modem. Any traffic moving between us is limited and affected by that. There is no "game" that a DC could have a better connection to: the game is created by the distributed packet-passing of all the computers participating.

The difference between a DC player and a modem player in a Descent netgame is that a DC player receives basically every packet because a DC has more bandwidth available. Lag (read: latency) is generally symmetric.

For instance: visualize a Total Chaos level 2 netgame full of modem players with one DC player. Players will gather in the central arena and use plasma guns like firehoses, with the occasional mega missile thrown in. If you are on a modem you are probably dropping at least half of it. If you are on a DC, you see every last plasma bolt, and you are right in the middle of it.

A DC does have the advantage that no matter how lagged a player is, he still moves continuously in the DC's view, which is good for aiming and leading, potentially giving the DC an advantage in making kills. However, the only games where this presents a significant advantage are games where everyone on a modem sees people jumping around. And when everyone is already jumping around for anyone on a modem, loss has become such a significant factor in the game that the DC player begins to have a disadvantage because he does not drop packets, and is therefore more vulnerable.

Furthermore, in any game which is moving relatively continuously for all players involved, modem players still experience significant loss. This is partly because packets arrive in bursts a lot of the time, and due to the way the 'net is set up, they may arrive at the data rate your ISP is working with, typically 1.5Mbps. Because your modem is going at a slower data rate, it cannot instantaneously retransmit all of those packets and some are lost.

This means that, in your typical game that has not totally fallen apart due to loss, the modem players have the same latency and can see the motion of other players about as smoothly or clearly as the DCs, but frequently, and entirely beneficially, drop packets that represent shots. Clearly, they are also more likely to drop spew packets (for instance) than DCs, but when a smart missile to the face is the packet dropped, it becomes clear where the advantage lies.

One of the more obvious results of "normal" loss is what happens when you are laying down a line of shots and a player tries to fly through it. Typically a modem player will sail through successfully, possibly taking a couple of hits. A DC will jerk to a halt in the middle of the stream, pinned by repeated hits, and usually get killed. In fact, a modem player once told me that this behavior difference is the primary way he knows when someone is a DC.

Advantages conferred by connection type are not an easy thing to judge. Given the right situation (though it may be contrived or unlikely) the advantage can go to either player, and it's is usually not clear (especially given that you are looking at only your screen) who may or may not have had an advantage at any given instant. The critical thing to remember when thinking about the effect of lag and loss is that information flowing in both directions is extremely important to both players. Each player receives the position of the enemy ships that he is trying to fire at right along with the shots they are firing at him, and loss or lag in either direction adversely affects both players, although possibly differently. The real reason to crave a DC is that you can play virtually lagless and lossless games with other DCs.

GREEN How does it affect the game if one machine is significantly faster than another?

Well, as long as there is lag and loss in the game, you almost might as well not worry about differences in computer speed unless you are on a 486/66 and are actually stressing your machine playing Descent.

The effect of differences in machine speed are most obvious in LAN or pure DC games where there is almost no lag or loss to blame anything on.

BLUE I play on a high speed LAN with guys from work. There's this one guy with a 486 and the rest of us have Pentiums. I've noticed that sometimes if he's moving across my screen and I'm trying to lead him, if I only wing him, like hit the tail end of his ship, he won't get hit.

Everything is moving at different speeds in each player's view of the game: ships, shots, and missiles. When you fire a shot and watch it complete it's path, you are not guaranteed that it will strike the same objects on another machine.

You might think that the situation of one player leading another player with shots would by symmetric, ie, both the shots and the speed of the evading ship are effected by the relativism, so leading shots still hit. This is not the case.

The player on the Pentium is getting position updates from the 486. He sees the actual speed of the player on the 486, the same speed the player on the 486 sees. However, he sees the speed of his shots as rendered on a Pentium, meaning they move faster than on the 486. Therefore, shots that would seem to hit the tail end of the 486 player's ship actually miss because the shots move slower on the 486 while the ship moves at the same speed that was seen by the shooter.

BLUE Ok, also, he says if he leads by a little too much and only hits my front end, sometimes that doesn't hit.

This is the same principle in reverse. The 486 player sees the actual speed of the Pentium's ship, but his shots move faster when rendered by the Pentium. Therefore they go in front of the Pentium player's ship.

GREEN Ok, last thing, sometimes we'll fire missiles at each other, and one of us will see the missile hit a wall, but the other guy actually got hit. Or also vice-versa.

Let me say first that it is a multiply tested and verified result that missiles track better on a faster machine. You can verify it for yourself by setting up fixed positions for shooter and dodger, and defining the keys that are held down to dodge. It's an obvious result - not even very close.

It also makes perfect sense in terms of game speed. Missile tracking in Descent is basically computational, and is done by modifying the direction and speed of the missile at discrete intervals. If the computer running the game is faster, these updates can happen more often, resulting in better missile tracking.

If you know about double-buffering, you will also understand that the tracking ability is most likely related to the framerate the player is currently getting.

Also, aside from missiles that just track better, the same thing that happens with leading shots can affect missile fire. A player on a pentium might see a missile get to a 486 player before he gets behind a wall, whereas the 486 player sees the missile hit the wall.

Or, stranger yet, the Pentium player may see that missile hit the wall while the 486 player actually got hit. This is because the Pentium player saw the missile track very agressively, swinging right into a wall, while on the 486, the missile took a smoother turn and then hit the player.

BLUE Ok, I can see how packet loss explains most of the things that happen... still, though, there are some players that act like they are as much as ten seconds behind the game. They fire at where I used to be, and if I fire a single mega at them and then wait long enough while they aren't moving, it will get them eventually.

Occasionally you will find a player like this, although this is somewhat difficult to distinguish from a player who is just losing a lot of packets. These players are usually having their incoming packets buffered by their ISP.

Your typical ISP will have a LAN (local area network) set up, using some 10Mbps network technology (10baseT, BNC, ..), and have a combination router/T1 device that is their connection to larger provider, and so on "up the chain". One or more machines on the ISPs LAN are then connected to sets of modems. These machines handle answering calls and allocating IPs and such, and have a way of splitting incoming traffic to go to the appropriate modem.

Because this machine (it can also be a dumber device) is on the ISPs 10Mbps LAN, any traffic arriving that is addressed to your machine's IP address is arriving at the data rate of 10Mbps. Since this is different from the data rate of your modem (28.8Kbps typically), there cannot be a 1 to 1 real-time transfer of data between the 10Mbps line and your modem, and there is a necessity for a buffer. Basically this is a small amount of memory that makes up for the difference in line speed by temporarily storing packets.

Since Descent is a real-time application a large buffer is mostly useless. If your modem can handle the current bandwidth requirements of the game, a small buffer might help you lose less packets, if, for instance, a few came in a burst. In this case you would be trading less lost packets for a temporary increase in latency, until your modem clears the buffer.

If your modem can not handle the current bandwidth of the game a buffer will only fill up and overflow; when it does overflow, the oldest packet will be discarded. This will result in an added artificial latency, the size of which will be equal to the size of the buffer divided by the speed of your modem (essentially the time needed to clear the buffer). The player will still receive only as many packets as they would get with a minimum buffer, and drop the rest. A buffer is basically the only thing that explains latencies over 2 full seconds (given a modem that is pulling 24Kilobits/s, this would require only about a 6Kilobyte buffer). Players who are having their incoming traffic buffered will react to events that are several seconds old, and anything you do might get to them several seconds late, or might just be lost.

The bad news is, a buffer is a perfectly good thing for your ISP to put in place for you. If you are FTPing a file for instance, a buffer will stop you from dropping packets, and because the machine sending the file will only send data as fast as you can acknowledge receiving it, you won't end up consistently overflowing the buffer. A buffer only becomes useless for a real-time application where the bandwidth required is consistently higher than you can receive, which is something you "shouldn't be doing anyway".

It's also very difficult to distinguish who's end the buffer is on. It could be on either, neither, or both ends, or even somewhere in between, and the only time you can tell if buffering is happening is when you are losing a lot of packets anyway. Basically the only way to tell for sure if there is buffering going on is to intentionally get into a game with too much traffic for your modem and ask a DC to test the latency to you, while you in the middle of a firefight, and are moving and firing yourself (so that you can be sure there is too much traffic for your modem). At this point it is almost easier to just read the section on getting a better connection.

RED You keep saying that all players move continuously for a DC but kinda not. And you keep saying latency is usually symmetric. What gives, why all the mysticism?

A lot of the time in a large game, a DC will see 3 or 4 players moving perfectly continously and one player jerking and jumping about. This is clearly not due to a problem local to that DC, at least in the sense that the problem is not happening anywhere in between the furthest point that all the packets the DC is receiving are travelling along (in my particular case, this would be the far end of Stanford's T3 connection to BBN Planet).

Other than the simple case of the jumpy player just having a really poor frame rate, the problem is basically packets being lost or otherwise screwed up somewhere between the outermost "local" point and the jumpy player.

Three major classes of problems are responsible about 90% of the time:

Outgoing Packet Queuing/Buffering

An outgoing buffer presents a serious problem for a Descent player. Here's a demo (882k) of a player who's outgoing traffic is being buffered. (BTW, suggestion to those intimidated by the demo's size: start DLing the demo, finish reading the FAQ then view the demo and delete it) Notice the way he will hang in one position and then slingshot over to another position, moving continuously, but much faster than is possible during normal flight. His outgoing traffic is being queued and delivered in bursts.

This behavior is most likely the result of both outgoing queuing and a rotational bandwidth allocation scheme, possibly a large token ring, although given the low frequency I would guess it was something more primitive, like modem banks taking turns.

Saturated (or malfunctioning) lines or nodes

Saturated lines are lines that are consistently being asked to carry more data than they can. In several places on the 'net, this is the norm. For instance there are a paltry number of 64Kbps lines running under the oceans connecting the continents (satellites help), and during peak hours (which may not coincide with US peak hours) these lines are 100% full, 100% of the time, for hours on end. Obviously traffic like that cannot simply be buffered infinitely, and the only remaining choice is to lose a certain percentage of the traffic at random until the lines can be upgraded or augmented.

Temporary problems can also result in temporarily saturated lines, in the US, or even in your own city or your ISP. A certain kind of temporary problem, colloquially referred to as a "netsplit", happens where a router or a larger chunk of the 'net goes dead (power outage, fried rodent, who knows..). Since routers work by continuosly updating each other on the "best routes" they know of, this can create temporary "black holes", where routers try to deliver to dead routers (until they figure out the routers are dead). This is what is usually responsible for games that split in half, leaving two intact games with disjoint sets of players.

Preferenced lines

Your modem and the preference it displays to outgoing traffic is what I mean by a preferenced line, that is, traffic in one direction (incoming) is lost so that traffic in the other direction (outgoing) won't be. Your modem may not be the only such line between you and another player. Most ISPs are just offering access to the net to everyday people with the usual client software, and the only servers in the ISP's subnet are news servers and the like meant for local use, plus possibly one small web server. If the vast majority of traffic was incoming the ISP might well set up some kind of preference system in order to handle it all, and might be dropping only outgoing packets, which the ISP might consider to be less important.


GREEN Does D2 behave differently from D1 on Kali?

To make a sweeping statement, no. The problems of lag and loss still exist, as they are a part of the internet and not anything that can really be programmed around. However, there are a few changes worth noting. First the simple ones.

Guided Missiles
Basically, these missiles are controlled by packets sent by the player who fired them. Their flight path is therefore subject to lag and loss. The best way to use these missiles under lag is to get them crudely oriented and then hit your missile fire key again, which releases the missile from your control. At this point guided missiles behave like normal homing missiles, and will be under the control of the remote machine.

Spawning/Duplication has been reduced
The phenomenon of duplicating items (aka spawning) has been reduced but not eliminated.

Capture the Flag Multiplayer Mode
I've personally seen some strange things happen in pure DC flag games, and as far as I know, it never caught on for the masses because of the yet stranger things that happen when you play flag on modems. I haven't played enough flag to really feel qualified to comment, but suffice to say I've seen games with multiple flags and games with no flags (might be wrong about second part).

Ping and Kick
In multiplayer games you can now type "PING:PLAYER" as a message (F8) to ping a player in the game without using flares. This can be particularly useful in detecting players whose pings soar when they are dogfighting (when a ping is generally untestable by flare test). Also, if you are the person who started the game, or you inherited game ownership from a person who disconnected, you can use "KICK:PLAYER" to boot a player out of the game. There's only one thing I have to say about that: there are very, very few times when KICK should be used and I personally have never had a sufficient reason to use it, to date.

New Multiplayer Cheats and Cheat Detection
There is at least one new cheat (hacked .exe) out there, and this one is much improved in terms of stealth. It gives the user unlimited energy, unlimited copies of any missile picked up, and an automatic energy->shield converter that is silent. This means that most of the ways of detecting cheats that I listed for D1 will not work for D2, at least for detecting this particular cheat.

This is actually a Kali95 hack on Descent. If you turn the "fastjoin" option on (reachable in Kali95 by File->Settings->Advanced) and then start (not join) a D2 (or D1) game, any player who subsequently joins your game will get the mine in the starting state, ie all weapons available and in their initial positions, no lights broken, etc. This will mean that less data will have to be sent when players join your games, making joins quicker and more likely to succeed, and it arguably helps gameplay by causing duplication of weapons so that "hording" is impossible. However, this has caused a new method of "cheating" to come into existence, namely, rejoining a game repeatedly in order to get all the starting items and therefore new copies of all the powerful single-use items (like invuls and shakers).

And now, the major change. The following is the unedited text of an email sent to me by Jason Leighton, one of Parallax' multiplayer programmers. He's responding to my asking Parallax to "bless" this FAQ as accurate information:

Hi Charles,

You asked if one of us would read the FAQ and give our blessing on
the information contained therein.  I've looked over it and it
appears that the FAQ contains very accurate information.

It would be great if you could cover the packets per second and short
packets features of Descent II and give tips on what the best
settings are for various line speeds.  For example, ANY game played
over KALI should have the Short Packets option turned on.  The
packets per second rate should be as follows:

Connect      PPS
--------    ------
ISDN/T1      7
28.8 Modem   5
14.4 Modem   3

This will help the game run a bit smoother.

Thanks for taking the time to write the FAQ.  It's a good resource
for Descent players!

Jason Leighton
Multiplayer Programmer
Parallax Software

Just to be excessively clear: yes that says that on Kali you should always turn short packets on. Short packets are nearly 3 times smaller than normal packets, due to some omitted, compressed and lower precision data. According to Mike Kulas of Parallax software, posting in

The information you lose is the low order bits on things like
orientation and position.  Since the amount of precision we use is a
big overkill, I don't think you'll notice the degradation.

Also, we do some obvious compression, like sending segment-relative
coordinates (rather than absolute) to save on data needs.

Also, in D2, velocity information for ships is sent right along with position information so that D2 can extrapolate a ship's flight path from the ship's last known position, thereby giving you position updates/changes that match your frame rate rather than the position packet rate. The "short packets" option appears to disable this extrapolation, either by omitting velocity information, or by using different or compressed velocity information that the extrapolation system isn't written to use. If you see a player suddenly begin to "coast" in a fixed direction and then disconnect, this means that the "short packets" option has not been turned on, as the "coasting" effect is the result of mindless extrapolation with no new position packets during the delay before your computer decides that the other player has officially disconnected. If you see this happen, you might want to tell whoever started the game (blue usually) that short packets should always be used on Kali, and/or refer him to this FAQ.

Second, the PPS (packets per second) rate being referred to is settable only by the person who starts the game, and can be set by selecting "more options" in the start game dialog. This value sets the number of position packets sent per second by each player who joins the game. It does not set the general amount of traffic the game uses, as clearly there is no way to reduce the traffic in a dogfight where packet=shot (although there may be a couple of other minor places where traffic could be reduced).

Both lowering the PPS value and the use of short packets are tradeoffs between smoothness of flight and loss and lag, and it is generally a win where bandwidth is scarce, since extra packets or extra information sent in order to provide smoothness will cause additional loss and lag, eliminating any otherwise beneficial effect.

As to the table, well, since the traffic of the game clearly increases with the number of players, those numbers should be taken as general guidelines. Let's assume those packet rates refer to average-sized Kali games of, say, 5 players. Then if you expect the player with the slowest connection in the game to be on a 28.8, you should set the packet rate to 5. If you set it higher to match the other players in the game, the 28.8 will most likely end up lagged, although the rest of the players will be fine.

For my own part, if I start a game that I expect will field several typical modem players, I set the PPS to 5, turn short packets on, and set the maximum players to 4. I also usually turn fastjoin on, because I outlaw several of the weapons ("more options"->"objects allowed") and I want copies of the weapons that are allowed to be readily available.


Lots of things. For starters, if you have a job or other source of money, look into ISDN and possibly cable modems. A good ISDN connection is about 5 times faster than a good 28.8 modem, and in CA the charges can be almost as small as the charges for a regular phone line if you don't use the line between 9-5pm weekdays. I've helped people get ISDN lines and seen the bills.

ISDN lines work just like normal phone lines: you "dial" (this is nearly instant) into a local number to connect to your ISP, who also has ISDN lines, and charges you monthly for usage. Pacific Bell offers Basic Rate Home ISDN (128Kbps) in California, and they are also an ISDN ISP. Here's a list of some other ISDN ISPs.

You've got to be very careful about the ISP you choose for ISDN. Many ISPs add ISDN service as an afterthought, and use ISDN "modems" in the same configuration as normal analog modems. I've seen people using ISDN lines that behaved (for Descent) about as well as people on T1s, and I've seen people whose ISDN lines behaved worse than some of the better modem connections.

As far as cable modems go, well that'll be available RSN (Real Soon Now). There may be a beta test going on you could participate in. To find out, try doing an Alta Vista search on "cable modems, [your state]". You have an excellent excuse as you will be testing "real-time application software". Write exactly that phrase on your beta test application.

So let's say you have no money. First of all maybe you can afford a US Robotics Courier modem or one with the same chipset. Try these guys and thank me later. USR Couriers connected to USR Couriers seem to get significantly better throughput through superior compression and noise correction. If you get quoted a data rate of 115200 aka 115KBaud, however, that is always bullshit. You won't ever see better than 40000 baud.

Even if you can get a USR Courier, you have to worry about the hardware that your Internet Service Provider has. You want to know:

1) What kind of modems do you have?

You want them to say USR Courier. This is only really important if you too have a USR Courier, or if they have super budget modems.

2) What kind of connection do you have to the 'net? How many "hops" is it to the nearest backbones?

You want them to have either a T1 or T3 connection to the net. T3 is the faster of the two (much faster). ISDN is generally unacceptable, although any connection speed will do if they have few enough users. Also be very aware that an ISP may be growing fast and may saturate their connection. A saturated connection leads to loss.

You want to hear that they are within 6 hops of the nearest backbone at least. 2 or 3 hops is very good.

3) Do you allow true PPP connections?

Basically you want to be absolutely sure you get a true PPP connection. TIA and Slirp are not the same thing as PPP. Neither is SLIP, but it's workable.

If you run into someone who can't answer these questions, go over his head. This is your money and your time. Especially go over the head of anyone who tells you, "I don't know, but it's good I'm sure."

There are lots of other factors important in picking a good ISP. I've only outlined the ones critical to getting a good Descent game. If you want to find a good ISP for Descent, one method is to ask the people with the lowest pings what ISP they are using.

Some problems you see are not your ISP's fault, they are misconfigurations that you can correct. There is an excellent site called "How to Improve Your Ping" that will help you improve your connection. This site really starts from scratch: making sure you have all the latest service packs and updates for Win95/NT, making sure your network settings are optimal, then guiding you through installing some third-party tweaks.


Well, basically, you can't. This is a pet peeve of mine. When you are playing with high loss and latencies as high as 1/2 second, you aren't really playing Descent. Reaction time doesn't count. Aim is skewed. Certain players are more easily hit than others.

When loss gets really bad, you're basically in your own little world. Any other players who aren't experiencing loss percieve you as blind and invulnerable.

In addition, if you play under severe lag you are most likely not improving very much, or even stunting your existing skills.

Hopefully instead of dealing with lag you will either get yourself a better connection or find a pool of good modem players to play small games with, and will restart the game occasionally to deal with duplicating items. But, on those occasions that you are basically forced to deal with lag, you can:

Use the fusion cannon and lasers
Ever played "New Order"? It's not an accident they picked all the weapons with the lowest firing rates for that level. Getting every player using fusion will probably reduce the bandwidth required by about the equivalent of two players. Getting every player using lasers will probably reduce the bandwidth required by about the equivalent of one player. You modem players with Descent level editors, make yourself some custom, low loss levels, or versions of existing levels.

In addition, even if you are a DC playing a bunch of lossy, plasma spewing modem players, using fusion against them is still a worthwhile tactic. I do this often, and you better watch your back for Tika.

Anticipate by several seconds
If you realize a player is about to go through a door or opening, ignore the player and fire at the doorway. In general, lead by more than you have to to hit the player on your screen. This is extremely difficult and will degrade your skills for high-speed, lossless games.

Get a player moving directly into your guns
This can be done by catching someone in a limited space, or by tricking them into backing toward you. Basically the idea is that it's so difficult to get a feel for how much you need to lead a player by that it becomes almost as effective to try to use tricky flying maneuvers to force a lagged or lossy player into a stream of shots.

Use guided weapons
Basically this is the solution that "Mega-deth" games represent. If you fire a mega missile and the other player receives it it will begin tracking to them without any further difficulty, and lead to a one-shot kill. In fact, even if you fire as much as 90 degrees off it's likely that the missile will do your job for you. So when loss has made skill almost a non-factor in your games, maybe Mega-deth is the thing for you. "Total Chaos" also provides a plethora of mindless guided weaponry.

Real players might warm up in Mega-deth.


GREEN The extreme short range phenomenon

You'll only realize this is a separate phenomenon from loss if you've played on a LAN. Basically what happens is that a player will fire a shot at extreme short range, ie when two ships are actually colliding. This shot will never be received by the other player.

You might expect that, due to lag, the shot would simply hit the wall behind the player, or something similar. This phenomenon is usually noticed when a mega missile is the shot in question, and both ships are in a confined space where a mega would kill them both no matter what. The player firing will be killed by the mega missile, while the other player never saw it.

My current theory is that basically the position of the shot as rendered by the machine receiving the packet is inside that player's ship, and that Parallax, in an effort to prevent mystical events where a player dies without ever seeing a shot in the air, just intentionally has Descent throw that packet away.

This is the only thing I've been able to think of so far. Let me know if you have an alternate theory.

GREEN One day in a game I suddenly found this dormant ship lying around. I could drill it with weapons and actually knock it around, but it wouldn't move on it's own, and no one could kill it. My friends and I played hockey with it using megas.

This is some kind of Descent bug. Basically Descent loses contact with the person controlling a ship, and usually you will be told that that player has disconnected, but Descent leaves the ship in the game.

This is only likely to happen in very lossy games. Essentially think of it as a total breakdown in information about whether a player is in the game.

GREEN This FAQ is GREAT!! I totally understand this stuff now! What can I do?

Send donations, flowers, etc to...


Hey, this isn't entirely an altruistic act. As I said, I'm trying to edify the people who think they know something and don't, and I'm also trying to improve the lag and loss of the games I play in. Plus, imagine how much fun it will be to answer questions with: "See my FAQ, http...".

But seriously folks, what you can do for me is just point people to this FAQ, especially the kind of person who asks questions of the world at large. Hopefully if enough people read this FAQ we'll lower the ignorance level of the Kali crowd.

Cya all in Descent,


What site am I on??