Skip to main content

Astral Networking

Astral networking is a high level multiplayer programming library. It can use PodSixNet or Mastermind for messaging. It's focus is on solid multiplayer algorithms to help set up realtime multiplayer games without any fuss.


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.*

"Sockets? Ehhhhh"

*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!

http://www.pygame.org/project-Astral+Networking-1605-2838.html

Links

Home Page
http://code.google.com/p/astralnetworking/

Releases

Astral Networking 0.0 — 8 Aug, 2010

Pygame.org account Comments

  • newtonis 2014-12-25 15:24:19

    Cool, I'll test it in the future. It works with UDP, TCP or both?

  • Ollie 2016-08-09 07:41:54

    I don't think you will get your answer.

    patrick mullen 2017-03-31 19:12:36.296671

    Yeah I haven't worked on this (or in pygame) for a long time. If I recall, (and reading the above description) I did not explicitly choose udp or tcp, instead intending to write more of a game logic layer that could use whatever message passing interface you wanted to plug in. I think I was using one that was UDP. (You don't want to write high-speed multiplayer applications in TCP) Project is currently abandoned.