I'm happy to announce that I'm almost ready to write the network code for the game itself. All of this time/agony has been spent on the other major online stuff, the lobby and gamelobby system. If you've played Half-Life/Counterstrike, you already should have an idea of how this'll work:
-> The player hits "Play Online", and is connected to the master server. The master server holds a list of all games being hosted at the time, and sends this list to the player when a) he first connects or b) he requests it (via refresh).
-> In the lobby the player can chat with other players in the lobby (via TCP to the master server), or he can join/host a game.
-> If the player wants to join/host a game, he does so and is brought to another lobby, the game lobby, which each game being hosted has their own. They can chat in there (via UDP to the game host), and select a 'Ready' checkbox to indicate they want to join when the host launches the game.
-> And finally, when the host launches the game, all 'ready' players will join in, and the actual fun begins. :)
Right now I'm just about onto the last part. :P I just need to finish up some game listing maintenance, ensuring the player always gets a proper up-to-date listing of the games being played at the moment. Not to mention ping updating.
Phew, it's been a lot of work, and there's plenty more to come. I really hope that Magma Duel will get some players as a result of my efforts. It'll crush me when I complete all of this and nobody plays. :/