Changes between Version 3 and Version 4 of SummerOfCode/2011/MayankSingh/PidginPlugin_PSF

04/08/11 09:52:09 (5 years ago)



  • SummerOfCode/2011/MayankSingh/PidginPlugin_PSF

    v3 v4  
    10 The idea behind this project is to be able to play a PySoy game with your friend over a jabber/xmpp client, in this case pidgin. The API for this project will have to be such that the friend doesn't have to download the game to play it. 
     10This project aims to refine/extend the User Gaming extension to XMPP (XEP - 0196) and utilize it in a plugin for pidgin to handle game notifications with pysoy games as an example. The plugin will add the ability to launch games directly from the xmpp client as well as other features like listing currently running games and a possible multiplayer lounge using MUC (XEP - 0045). The XEP - 0196 is highly dependent on the Personal Eventing Protocol (XEP - 0163) and will act as a natural extension to that. 
    12 '''The basic working:'''[[BR]] 
    13 The planned implementation should work like this: 
     12'''Ideas for the XEP-0196:'''[[BR]] 
     14    * As is clear from the current deferred specification of the XEP - 0196, it is too specifc to Massively Multiplayer Online Games like World of Warcraft. 
     15    * The specification I plan to build aims to contain elements that are common to any type of game. 
     16    * A possible table defining child elements for the <game> element which propagates game notification: 
     18      ||Element||Description||Example||Datatype||Inclusion|| 
     19      ||name||The name of the game||Ping pong ||xs:string||REQUIRED|| 
     20      ||uri||URI to launch the game||!||xs:anyURI||OPTIONAL|| 
     21      ||description||Any other text to be broadcasted||Three slots left. Join||xs:string||OPTIONAL|| 
     22      ||web_resource||Some web link related to the game ||!||  xs:anyURI||OPTIONAL|| 
     23    * Transport mechanism could be quite similar to the current one. 
     24    * I will use the wiki (additional link) to describe more ideas regarding this. 
     27'''The plugin:'''[[BR]] 
     28The planned implementation for the plugin should work like this: 
    1530    * A pysoy client acting as a "game server" starts a game and it connects to the xmpp server to broadcast to all its subscribers that a game is being played in the form of status notifications. 
    1631    * People running pidgin clients see this on this person's status message, who launched the pysoy server. 
    1732    * They start a conversation with this fellow. 
    18     * If they have the correct plugin activated, they'll be able to find an option for launching the game windowed with pidgin/launch external libsoy client. 
    19     * This again results in the release of signals, the callbacks of which do the job of changing your status message. 
     33    * If they have the correct plugin activated, they'll be able to find an option for launching the game via an external client that can be determined by the mime type of the resource in the uri. 
     34    * The plugin's menu should have options to list all games being played by a user's friends, launch a multiplayer lounge(MUC) for a particular multiplayer game, etc. 
    2137'''The UI:'''[[BR]] 
    2945Addition of game elements to the conversation menu if the plugin is activated: 
    31 [[Image(]] 
    32 [[BR]] 
     48Plus other possible changes due to the features listed below. 
     50'''Game Launch:'''[[BR]] 
    34 '''Presence Notifications:'''[[BR]] 
     52The part of the pidgin plugin is only to provide the ability to launch the game being played by a member of a person's roster using possibly a URI provided by the xmpp data transmitted from the player's end. The part of broadcasting the game notification falls under the area of the libsoy's built-in xmpp client.[[BR]] 
     53'''Games Listing:'''[[BR]] 
    36 Instead of extending <presence> stanzas directly, I will make use of the Personal Eventing Protocol, or PEP, defined in XEP-0163, 
    37 which allows users to subscribe to the extra data they are interested in. 
    38 [[BR]][[BR]] 
    39 '''Launching of the game:'''[[BR]] 
     55The xmpp data being broadcast by the various friends on a person's roster can be collected and represented as submenu items to a menu item "List all games" or in a separate window allowing the user to select and join the game he wishes to play.[[BR]] 
    41 There are two options: run the game under pidgin and let it handle the streaming game data via Jingle ICE-UDP or use an external client for further communication and exchange regular xmpp data. 
     57'''Multiplayer Lounge:'''[[BR]] 
    43 The game can be launched by simply launching an external libsoy client which will handle the game networking part, but certain xmpp data will have to be passed to it for status updation and passing on of important information if someone else tries to launch the game on his side. 
    45 Other option may involve receiving data in the form of the Jingle ICE-UDP specification if an external libsoy client isn't launched and the soy client is embedded within a pidgin GtkWidget. 
    47 '''The Proof of Concept'''[[BR]] 
    48 I also plan to build a simple 3D boxer (street fighter, tekken types) game to be played over your XMPP network. The game can be made for more than 2 players. So, It'll be fun beating your friends' 3D avatars over a mob-fight on a xmpp network. 
     59Using the same xmpp data, we can create separate multiplayer lounges for players interested in the same game with a listing of currently ongoing games indicating which games are full and cannot be joined and which need more participants and can be joined. Also, I can provide an MUC facility for onlookers who haven't yet joined a game and are waiting for a game to start. The difference between this feature and the above feature is that the above feature lists all games, be it of any type. However, this feature aims to create separate lounges for different games.[[BR]][[BR]] 
    51 '''Start of Program (May 24)'''[[BR]] 
    52 Detail the preparation work you'd need to do before you can start working on code: 
    53     * Go through Genie language and maybe Orc and understand current codebase 
    54     * Convert plugins in simple C to Genie and see how it works out. 
    55     * Plan out usage of XEP - 0163 and of XEP -0176 if needed though it's the topic of another project. 
     62Start of Program (April 25 - May 24) 
     64    * (April 25 - April 28) - Get to know the mentor and read up some codebase. 
     65    * (April 29 - May 13) - College Exams!! 
     66    * (May 14 - May 20) - Make a rough draft of the refined XEP - 0196. 
     67    * (May 21 - May 24) - Refine XEP - 0196 more. 
    58 '''Midterm Evaluation (July 12)'''[[BR]] 
    59 List your proposed deliverables by the midterm evaluation: 
    60     * A working implementation were a computer acts as the server and hosts a sample pysoy game (maybe the or whatever is best) and the friend computer is able to see it from the other side on either another libsoy client or soy embedded in a pidgin widget. 
    61     * Proper status modifications when person starts a game or any other event that happens in-game. 
     69Till Midterm Evaluation (May 25 - July 12) 
     71    * (May 25 - June 1) - Complete refining XEP -0196 and prepare a draft ready to put up for vote. Document it. 
     72    * (June 2 - June 6) - Plan out detailed functioning of game launch, listing of games and multiplayer lounges and document them. 
     73    * (June 7 - June 15) - Prepare plugin skeleton and add ability to read game notification data. 
     74    * (June 16 - June 23) - Add option to launch game based on game notification data of a person right inside the conversation window. 
     75    * (June 24 - July 4) - Develop examples in pysoy to test out game launch. 
     76    * (June 5 - July 12) - Test out game launch and write unit tests. 
    64 '''Final Evaluation (Aug 16)'''[[BR]] 
    65 List your proposed deliverables by the end of the Summer: 
    66     * Completed plugin 
    67     * The Boxer/Fighter game to be played over XMPP 
    68     * Testing 
     78Till Final Evaluation (July 13 - Aug 16) 
     80    * (July 13 - July 19) - Implement Game listing feature and test it out. 
     81    * (July 20 - August 5) - Work on the possible multiplayer lounge. 
     82    * (August 6 - August 16) - Write any missing documentation and do final tests.