How DreamStones works …
DreamStones uses Python, PyGame? for the client and TwistedMatrix? for the network.
All actions are client-driven - there is no “game clock”. (There isn’t any multithreading either)
Network commands are sent in text (“MOVE 6 N” means “player 6 moves to the north”, etc.), XML (XML-RPC ?) is being considered.
Most game data is encoded in XML.
(Hopefully this will be filled in / reorganized later on)
I will dump some of my analysis here:
Basically, you can have 5 kinds of network communication in the game (not all may be necessary):
Personally, I’m a great fan of reusing existing protocols, like Jabber for these kinds of things. I had some experience with Jabber before, and I think that its architecture is ideal for this use case.
Another option is to use http or ftp for the file download and upload, and some custom-made protocol for the interaction. This gives a benefit of all the http servers, proxies, caches, etc.
Yet another option is to use a custom protocol for everything.
I’m using a custom protocol right now, but something like Jabber would be neat too. I had researched Jabber a bit with that in mind, even :) – EmileKroeger