D2X-XL Worklog
Notes on features and problems from the development of D2X-XL, newest first.
Packet Loss Effects |
|
During testing, simx and I have found that you can multiply available powerups by exploiting packet loss and certain flaws in the network code of Descent 2. Basically, powerup multiplication can occur when some player doesn't receive a notification that some other player has picked up some powerup in the mine. As picking up powerups is handled locally, that player can now also pick up that powerup (let's say a Mega missile). Descent contains some code to fix such problems, but it only looks at powerups floating around in the level, not those being onboard ships. That means that in the extreme case, in a level initially containing one Mega, every player can end up having a Mega on board. Now if one player fires his Mega, it will respawn for each player. Descent will simply look at the max. permissible number of Megas floating in the level, disregarding those on onbard ships, and allow that Mega to spawn. The player with the cloned Mega can now pick it up, too, and so on. Descent will only (half way) fix this when more Megas are fired and hence respawn than are allowed in the level. Still, every player can end up with a Mega floating in his or her instance of the level. For UDP games, D2X-XL will therefore now regard the powerups onboard the local player's ship. Unfortunately, Descent never syncs players' ships' loadouts. Therefore I have added ship equipment sync'ing for UDP/IP games to D2X-XL, allowing each local instance of D2X-XL to determine the loadout of every connected player's ship. That means that D2X-XL will pretty quickly recover from any packet loss induced powerup multiplication (it won't remove anything from player ships, but will prevent respawning excess stuff once it is fired or dropped). As usual, this meant quite some messing around with the network code, so if you detect any irregularities here, particularly regarding powerup handling, please report it in a bug ticket on SF.net. |


