Quasar
Moderator

Posts: 2133
Registered: 08-00 |
EE is now at the point where it needs some basic functionality in netcode so that when changes are made to support player classes, custom weapons, etc., those changes can be tested.
I started the process by adding in anarkavre's i_net.c module from WinMBF, which is a modification of earlier Chocolate Doom netcode. This is just a few calls to SDL_net which allow the high-level netcode to actually transmit and receive packets over UDP.
So far, the upper level netcode's behavior has confirmed every one of my fears: it is completely broken.
Problems found so far:
* If the "server" node (player 1) starts up first, all nodes will go into an infinite loop in D_ArbitrateNetStart
* If the "clients" are started first, the game will connect, run, and on the first gametic bombs out with "Tried to transmit to another node", due to "netgame" being set to false in G_DoNewGame
* If the netgame assignment in G_DoNewGame is removed, the game connects, runs, and then goes completely berserk. Player 2 has control of *both* nodes, and player 1 has no control at all. After walking around a bit using player 2, player 2's game commits an illegal operation, and player 1's game drops to console. If a new game is started from the console using player 1, the game is running at an unlatched framerate (~1000 FPS), the player shakes violently, there is no control, and consistency failure error messages begin appearing in the console.
In short, we've got a REALLY long way to go with this.
Update:
http://doomworld.com/eternity/engine/screenshots/ee_net_p1.png
http://doomworld.com/eternity/engine/screenshots/ee_net_p2.png
I have isolated the console from the netcode and have restored it to its state as of MBF, excepting some modifications which fraggle made in SMMU that stop the game from locking up if the key player drops. This has fixed most if not all of the problems, so EE currently has Doom's original netcode running over UDP ^_^
Last edited by Quasar on 10-16-07 at 03:49
|