Multiplayer Games With D2X-XL

There is a lot of discussion going on in the Descent 1/2 multiplayer community about problems caused by D2X-XL. I finally had a chance to talk to some people who were concerned about these issues and explained them to me.

Turn speeds

One problem seemed to be turn rates in D2X-XL. People felt ships from players using D2X-XL could rotate around their axes too fast. I have looked into this, checked the code and compared to D2X-Rebirth, which many people prefer for multiplayer due to the issues they have with D2X-XL, and have made sure D2X-XL has the same turn speeds as D2X-Rebirth.

To measure turn speeds, I loaded up Descent 2: Counterstrike Level 1, turned the ship so it faced the round entrance door, and did 10 full 360 degree turns, counting up every time the reticle passed the door's center. The total time divided by 10 is a good enough approximation of the exact time consumed during the test. The result was that it takes ~2.6 secs for a full rotation around the X (left/right) and Z (bank) axes in D2X-Rebirth, and ~5.2 secs for the Z (up/down) axis. These are the exact values of D2X-XL now.

Cockpit view dependant ship position

Another issue was that the ship of a D2X-XL player doesn't seem to be rendered at its actual position for other players if that player was using the cockpit view, causing shots fired at him missing if they were placed close to where that player's ship's center was supposed to be.

Descent only transmits the ship's center position to other players in multiplayer games and simply uses a sphere around that position for hit detection. The only possible explanation for such a problem would be that changing the cockpit type (with the resulting changes to the field of view) was changing the ship position. This can be easily verified in a singleplayer game, so I whipped up the debugger and checked the ship position for the various cockpit types. I could not observe any changes here. Next step was to set up a multiplayer game with two players. To simplify things, I turned off ship wiggling and enabled shield rendering, which displays a sphere about the size of the hit sphere around player ships and flashes when the ship is hit. I had one ship fire at the periphery of the other ship, and toggled through the other player's cockpits. Again, I always hit the targetted ship regardless of the selected cockpit.

D2X-XL extensions

D2X-XL extensions are generally disabled if the game host is not using D2X-XL. If he does, certain 'gameplay critical' extensions can only be enabled if he allows it (i.e. has enabled them when launching the game). This way, a game host not using D2X-XL can be sure D2X-XL users do not have any advantages over other players in his game, and a game host using it has full control over all relevant settings in his game.

Speed hacks

D2X-XL allows to vastly increase ship reaction to mouse input. If these extensions are enabled, you can flip the ship around using the mouse within a split of a second, or you can double the Y axis turn speed (which by default is only half of of X and Z axis turn speeds). I have looked into the code here as well and made sure that these extensions cannot be enabled if the game host has disabled them or doesn't use D2X-XL at all.

Data File modifications

Another concern are data file modifications. To prevent cheating based on modifying ship properties stored in the Descent data files, D2X-XL has the ship data hard coded in the program and uses this hard coded data for multiplayer games. This means that D2X-XL users will have the default ship behaviour in multiplayer games no matter how their data files look like.

Frame rate dependencies

Certain mechanics of Descent 2 are depending on the frame rate a multiplayer game is running with. Certain weapons are particularly affected by this: The turn rate of homing missiles increases with higher frame rates, making them almost impossible to dodge, and the damage dealt out by the Omega Cannon is frame rate dependant too. D2X-XL limits the frame rate at which these are handled to 40 fps, thus evening the battle field for all players.

Network inconsistencies

When playing multiplayer games using UDP/IP, D2X-XL employs extra measures to suppress powerup spamming as well as permanent powerup loss due to faulty network conditions, going way beyond what other Descent versions can do. It is made sure that excess powerups are discarded as soon as possible, and powerups that have disappeared due to packet loss are restored when a powerup loss is detected.

All in all I believe these features can make D2X-XL the first choice for competitive multiplayer gaming.