Astral Networking - 0.0
patrick mullen (saluk)
"Wow, this is a pretty fun little game I just built. Gosh, it would be great if I could add multiplayer. Let's see, how do I write a multiplayer game?"
*Goes and looks up some stuff.*
*Reads more, maybe finds something like Raknet*
"Ok, ok, I get how to send messages. Doesn't sound too hard."
*Starts trying to add multiplayer to game.*
"Wow. On second thought, I think this game is just fine in single player. Just shoot me if I suggest multiplayer ever again. Unless it's a turn based game."
There exist many low-level networking tools. From sockets to twisted, to more recent pygame related projects like PodSixNet and Mastermind, to pyraknet or pyenet that I can't seem to build on windows, there is a type of low level networking for almost any purpose.
But there does not exist for python a sound library to aid in the creation of multiplayer games. There is a huge step from being able to send messages across the wire, to knowing what messages to send and which to keep a game in sync, with a minimum of lag or jerkiness.
Astral networking is meant to bridge the gap between sending messages and actual game logic. It uses PodSixNet for message passing, and later may be able to use some of the other options. It has a ways to go, but it has been implemented with many of the key algorithms used for this problem. Dead reckoning, interpolation, client prediction, and client prediction correction, clock sync, and others are needed for realtime games. Astral contains these algorithms in one form or another, and makes it pretty easy to use in an actual game.
It also has a chat log, because almost every networked game is going to need that! But where most networking projects start with the chat log, astral started with object positions and synchronization. I hope that this approach can eventually produce a really solid path for developers who decide to take their games online.
Only available as an hg repo at google code for the time being. When documentation is finished I'll put up a release. It currently comes with a test game that demonstrates all of the features currently available. I am open to any suggestions or comments you can make, or if anyone wants to help hack on it, that would be great too!
Pygame.org account Comments
If you wish to leave a comment with your pygame.org account, please sign in first.