Updates

Not started yet!

Networking using Jingle ICE-UDP

Introduction

This proposal is to implement game networking over UDP in PySoy by using Jingle ICE-UDP [1]. Player actions and games states will be sent and received over this connection.

Implementation

Initialize the ICE-UDP connection via xmpp. Loudmouth for xmpp, since even though we are using udp for the game networking pysoy will always be an xmpp client. libnice or glib/gio have support for udp datagrams for actual data transfer.

Two options needed for networking: server and peer to peer. Server will need to handle requests and make sure all players have updated clients. Security? Anti-cheat measures will be needed too. That may be beyond the scope of this project for the summer.

Game state can be had from the soy import/export, but the tricky part will be figuring out which parts to send out since we don't want to send the entire game state each update.

Actions are emitted by a controller, so a hook will be needed on each controller.

How to update the game smoothly from the server?

Milestones

Start (May 24)

Be familiar with networking code, how UDP works (Research libnice and gio, possibly loudmouth). Have the general api laid out for how things are going to be accessed and how the networking code will interact.

Midterm Evaluation (July 12)

Networking code should be and place and two computers (or a computer and a server) should be able to connect and send basic commands back and forth. Hooks all in place for sending and receiving game data. A number of tests will be implemented to aid development and prevent future bugs.

Final Evaluation (August 16)

All necessary code completed. Start polishing code and completing documentation. More complex tests added. Very basic example game set up as a demo for network gaming.

Communication

I have a blog at  http://jon-neal.blogspot.com with which I will be posting updates about my progress several times a week. I am also active on the pysoy irc channel (irc.freenode.net#pysoy) and have been active in the pysoy community for several years, so I can communicate effectively with the other developers. I will also partake in discussions over the pysoy development mailing list.

References

[1] XEP-0176: Jingle ICE-UDP Transport Method