Miniature/Wishlist/Real-time P2P Miniature
Contents |
Telepathy as a framework for network support in games
I described the usecase for realtime P2P in Miniature but tried to keep a general point of view. The intent is to not only have network play via Telepathy working for Miniature, but to make such a Telepathy for games framework available for other games, too (targeting the Maemo platform).
Session negotiation
How would two peers start a game of chess via network?
- P1 selects contact - Telepathy needs to know which contacts have Miniature installed?
- P2 receives an offer to play a game of chess and can accept/reject - Is this UI already part of Miniature?
- P2 rejects: P1 receives a message that 1) tells P1's list of Miniature contacts that P2 is not available for a certain amout of time, 2) cancels the P2P game dialog for P1.
- P2 accepts: P1 receives a message that P2 accepted and both advance to the next screen (for now, that's the chess board), and the actual game start is already handled by the XBoard protocol.
Protocol
It is safe to assume that each game has some own internal protocol to transfer game states. For chess engines, XBoard/WinBoard is the standard protocol. But we also need to be able to interface with FICS/ICS.
Interestingly enough, most chess bots that play on FICS probably don't implement the network protocol themselves but instead use XBoard. XBoard then interfaces with FICS for them.
FICS details (not strictly 2P2 related)
The various intro-* help pages for FICS seem to explain everything we'd need (basics, general, information, moving, playing, analysis, settings, talking).
Playing on FICS would happen via telnet (telnet freechess.org), perhaps Telepathy could also handle the connection management for that. This would reduce the risk to maintain two different code bases in Miniature (P2P, FICS) that eventually do the same. My hope is that Miniature only needs to know about XBoard whereas 2P2/FICS/ICS would all happen in the Telepathy component.
On a side note: It also seems to be common for network games to have those two protocols - one for finding games (a game servers browser of some sort, see [1]) and one for the actual game. The separation into two truly distinct protocols might rarely exist (again, see FICS).
Interop
With XBoard it would seem trivial to play chess across application boundaries.
Chat
FICS supports chat via its say/tell/kibitz commands. It probably makes more sense to use the exisiting chat capabilities from Telepathy (read: a second channel).
Observing
Observing games is an important aspect in social gaming. On FICS, observers are known as kibitz. Can that be done with Telepathy, too?
Status notification
Tell other users in my contacts list about my chess game.
Error recovery
When to abort a connection etc.