際際滷

際際滷Share a Scribd company logo
Infinity Blade 2 ClashMob:
 Hacking the Social Graph

           Joe Graf

            MIGS
       November 14, 2012
About This Talk
 Introduction


 ClashMob social impact


 How ClashMob works
About Me
 Worked at Epic Games over 9 years




 Primarily focused on online features for our games and
  engine

 Sr. Online Architect at Epic
MIGS 2012 - ClashMobs
About Infinity Blade 2
 Franchise introduced in December 2010
 Franchise has grossed > $30 million


 Infinity Blade 2
   15 Perfect Scores
   More than 20 Game of the Year Awards


 Simply put, you need this game --G4TV.com
 An iOS Masterpiece --Touch Arcade
About ClashMob
 Large scale challenge requiring thousands to complete


 Everyone that participates receives the reward


 Bonuses given for social elements
   Friends that play the game too
   Like-ing a ClashMob post on the Infinity Blade page
   Retweeting a ClashMob tweet


 In Infinity Blade 2, comprised of mini-games
Goals for ClashMob
 Increase our player retention
   Give them a reason to come back again and again


 Increase reach, awareness, and virality


 Use social interactions to participate
   Retweeting a ClashMob tweet
   Like-ing the ClashMob post on the brand page
   Recording your participation as a comment
ClashMob Social Impact
 Measuring success
   How many people used the feature?
   How many used the social aspects?
   Did the social interactions help?
Infinity Blade and Infinity Blade 2 DAU

                        ClashMob launches




                                            IB2 DAU
                                            IB1 DAU
   Month
21Launch
3 Months
4 Months
5 Months
6 Months
  Months
ClashMob Social Interactions

14%


12%


10%


 8%


 6%


 4%


 2%


 0%
      Like   Comment   Retweet
Facebook Edge Rank
 Determines whether a post appears in a users feed
   Only 16% brand page posts are actually seen


 Based upon 3 criteria
   Affinity score: how interactive the fan has been with past content
   Weight: based upon the type of interaction
   share > comment > like
   Time decay: how long ago the post occurred


 ClashMob interactions increase edge rank and therefor increase
  reach
Facebook Engagement Index (FEI)
 Uses the talking about counts as a percentage of
  total likes for the page


 Measures how engaged your customers are with
  your brand on Facebook


 Engagement increases the number of impressions
ClashMob Effect on FEI
60.00%



50.00%



40.00%


                                                                                  Daily FEI
30.00%                                                                            Weekly FEI
                                                                                  28 Day FEI

20.00%



10.00%



 0.00%
         41038     41042     41046     41050     41054     41058     41062
    41036     41040     41044     41048     41052     41056     41060     41064
7 Day FEI on June 7, 2012

35.00%


30.00%


25.00%


20.00%
                                                                                                  FEI
15.00%


10.00%


 5.00%


 0.00%
         Infinity Blade   Halo   Call of Duty Angry Birds   Apple   Microsoft   Google   Jaguar
Brand Page Reach  Pre ClashMob



     Ad campaign

                   ClashMob launches
Brand Page Reach  Post ClashMob
Impressions for Non-App Users
    Click to edit Master text styles
      Second level
      Third level
         Fourth level
             Fifth level
ClashMob Affect on Twitter
Klouts Analysis of High Klout Scores
ClashMob Communication Paths

                     Google App
                       Engine


            HTTPS
ClashMob Communication Paths

                     Google App
                       Engine
Server to Facebook Integration
Brand Page Post Setup
1. Create a Facebook App that does the posting
2. Create a brand page for your product
3. Login as an administrator of the brand page
4. Grant the app permission to post as you
      https://www.facebook.com/dialog/oauth?client_id=<app id>&
           scope=publish_stream,offline_access,read_stream,manage_pages&
           response_type=token




Example response
    https://www.facebook.com/#access_token=AAABmbm...MUZD&expires_in=0
Facebook Brand Page Post
1. Query for accounts using our stored access
   token to get the access token for the page


2. Post to brand page using returned access token


3. Periodically, read likes and comment counts to
   update global participation state
Facebook Brand Page Post
1. Query accounts

     https://graph.facebook.com/me/accounts?access_token=<stored token>

Example JSON results

     {
         "data": [
          {
            "name": "Infinity Blade",
            "access_token": " redacted ",
            "category": "App page",
            "id": "163584600328189",
            "perms": [ "ADMINISTER",  "BASIC_ADMIN" ]
          },
          {
            "name": "Infinity Blade II",
            "access_token": " redacted ",
            "category": "Application",
            "id": "300673636660678"
          } ],
     }
Facebook Brand Page Post
2. Post to brand page
  https://graph.facebook.com/<page id>/feed?method=post&
      access_token=<page token>&
      message=<message text>




Example JSON results
  { "id": "163584600328189_462261520460494" }
Facebook Brand Page Post
3. Monitor post activity
            https://graph.facebook.com/163584600328189_462261520460494


Example JSON results
{
    "id": "163584600328189_462261520460494",
    "message": "ClashMob: Destroy 27K Plated Sorok to win 10,000 Gold! Like this post to kill an extra Sorok!",
    "type": "status",
    "created_time": "2012-07-17T20:00:15+0000",
    "likes": {
     "data": [
       { "name": "Joe Graf", "id": "635667972" },
       { "name": "Chris Mielke", "id": "100000378321704" } ],
     "count": 5344 },
    "comments": { "count": 3600 }
}
Server to Twitter Integration


        Click to edit Master text styles
          Second level
          Third level
             Fourth level
                 Fifth level
Twitter Integration Setup
1. Sign into the account that will send Tweets


2. Create an application to send Tweets


3. Set the app permissions to read and write


4. Create an access token for the app
Twitter Integration Setup
 Click to edit Master text styles
   Second level
   Third level
      Fourth level
          Fifth level
Server to Twitter Integration
1. Tweet ClashMob information as the account
   owner


2. Periodically, read the Tweet to get retweet
   counts
ClashMob Server Twitter Integration

1. Post tweet to account feed
      https://api.twitter.com/1/statuses/update.json?
           include_entities=true&
           status=<OAuth encoded tweet>


Example JSON results
 { "id": 203261300,
 "name": "Infinity Blade",
 "followers_count": 31248,
 "created_at": "Fri Oct 15 22:05:09 +0000 2010",
 "verified": true,
 "statuses_count": 1054,
 "lang": "en",
 "status": {
  "created_at": "Wed Jul 18 16:00:50 +0000 2012",
  "id": 225621159272656900,
  "text": "ClashMob: Deal as much ...! Retweet to do 2,500 DAMAGE now! #infinityblade",
  "retweet_count": 953, } }
ClashMob Server Twitter Integration

2. Read a ClashMob tweet for retweet counts
         https://api.twitter.com/1/statuses/show.json?id=223172555035508740


Example JSON results
 { "created_at": "Wed Jul 11 21:50:58 +0000 2012",
   "id": 223172555035508740,
   "text": "ClashMob: Combine gems in the Gem Forge to create powerful, rare gems! #infinityblade",
   "source": "<a href="http://infinitybladegame.com/" rel="nofollow">Infinity Blade II</a>",
   "user": {
    "id": 203261300,
    "id_str": "203261300",
    "name": "Infinity Blade",
    "screen_name": "InfinityBlade",
    "followers_count": 31248,
    "listed_count": 463,
    "created_at": "Fri Oct 15 22:05:09 +0000 2010",
    "verified": true,
    "lang": "en", },
   "retweet_count": 984 }
ClashMob Communication Paths

                     Google App
                       Engine
ClashMob Step by Step

       Get ClashMob List      Google App
      Return visible events     Engine
ClashMob Step by Step
ClashMob Step by Step

         Get ClashMob List         Google App
        Return visible events        Engine

        Enroll in ClashMob

      Push Notification of Start
ClashMob Step by Step
ClashMob Step by Step

          Get ClashMob List           Google App
         Return visible events          Engine

         Enroll in ClashMob

       Push Notification of Start

       Send Player Contribution

        Return Global Progress

    Push Notification of Completion
ClashMob Step by Step
ClashMob Step by Step

          Get ClashMob List           Google App
         Return visible events          Engine

         Enroll in ClashMob

       Push Notification of Start

       Send Player Contribution

        Return Global Progress

    Push Notification of Completion

            Claim Reward
ClashMob Communication Paths

                     Google App
                       Engine
Facebook Like Support
Facebook Like Support
 To like a ClashMob post, the client issues a
  web request with the posts ID
   The ID is given to the client by our backend server
   We use HTTP GET with method=post override
   https://graph.facebook.com/163584600328189_462261520460494/likes?
        method=post&
        access_token=<users access token>
Twitter Retweet Support
ClashMob Twitter Retweet Support
 The Twitter API is RESTful so the game
  retweets a ClashMob tweet by POSTing to an
  URL with an ID
    https://api.twitter.com/1/statuses/retweet/225319026107228160.json
Facebook Comment Support
Facebook Comment Support
 Commenting is similar to creating a post, but
  to a specific post ID
    https://graph.facebook.com/163584600328189_462261520460494/comments?
         method=post&
         access_token=<users access token>&
         message=<URL encoded message>
My Mob
  Pulled from Facebook &
  Game Center on iOS
                           Bonuses for friends




                                Call to action
Gifting in My Mob
Summary
 Weve discussed what ClashMob is


 Weve seen that ClashMob has extended our brands reach
  yielding impressions outside of our core community


 Weve talked about how we integrate the game server with
  social networks


 Weve talked about how to integrate social networks into the
  game client
Infinity Blade 2 ClashMob:
Hacking the Social Graph


Special thanks to:
Donald & Geremy Mustard                             Joe Graf
ChAIR Entertainment
Wes Hunt                               Epic Games, Inc.
Josh Markiewicz
                                    Twitter: @EpicCog
Eric Newman
Ian Thomas                Patent pending: 61/618,053 & 61/618,024
Sam Zamani

More Related Content

MIGS 2012 - ClashMobs

  • 1. Infinity Blade 2 ClashMob: Hacking the Social Graph Joe Graf MIGS November 14, 2012
  • 2. About This Talk Introduction ClashMob social impact How ClashMob works
  • 3. About Me Worked at Epic Games over 9 years Primarily focused on online features for our games and engine Sr. Online Architect at Epic
  • 5. About Infinity Blade 2 Franchise introduced in December 2010 Franchise has grossed > $30 million Infinity Blade 2 15 Perfect Scores More than 20 Game of the Year Awards Simply put, you need this game --G4TV.com An iOS Masterpiece --Touch Arcade
  • 6. About ClashMob Large scale challenge requiring thousands to complete Everyone that participates receives the reward Bonuses given for social elements Friends that play the game too Like-ing a ClashMob post on the Infinity Blade page Retweeting a ClashMob tweet In Infinity Blade 2, comprised of mini-games
  • 7. Goals for ClashMob Increase our player retention Give them a reason to come back again and again Increase reach, awareness, and virality Use social interactions to participate Retweeting a ClashMob tweet Like-ing the ClashMob post on the brand page Recording your participation as a comment
  • 8. ClashMob Social Impact Measuring success How many people used the feature? How many used the social aspects? Did the social interactions help?
  • 9. Infinity Blade and Infinity Blade 2 DAU ClashMob launches IB2 DAU IB1 DAU Month 21Launch 3 Months 4 Months 5 Months 6 Months Months
  • 10. ClashMob Social Interactions 14% 12% 10% 8% 6% 4% 2% 0% Like Comment Retweet
  • 11. Facebook Edge Rank Determines whether a post appears in a users feed Only 16% brand page posts are actually seen Based upon 3 criteria Affinity score: how interactive the fan has been with past content Weight: based upon the type of interaction share > comment > like Time decay: how long ago the post occurred ClashMob interactions increase edge rank and therefor increase reach
  • 12. Facebook Engagement Index (FEI) Uses the talking about counts as a percentage of total likes for the page Measures how engaged your customers are with your brand on Facebook Engagement increases the number of impressions
  • 13. ClashMob Effect on FEI 60.00% 50.00% 40.00% Daily FEI 30.00% Weekly FEI 28 Day FEI 20.00% 10.00% 0.00% 41038 41042 41046 41050 41054 41058 41062 41036 41040 41044 41048 41052 41056 41060 41064
  • 14. 7 Day FEI on June 7, 2012 35.00% 30.00% 25.00% 20.00% FEI 15.00% 10.00% 5.00% 0.00% Infinity Blade Halo Call of Duty Angry Birds Apple Microsoft Google Jaguar
  • 15. Brand Page Reach Pre ClashMob Ad campaign ClashMob launches
  • 16. Brand Page Reach Post ClashMob
  • 17. Impressions for Non-App Users Click to edit Master text styles Second level Third level Fourth level Fifth level
  • 19. Klouts Analysis of High Klout Scores
  • 20. ClashMob Communication Paths Google App Engine HTTPS
  • 21. ClashMob Communication Paths Google App Engine
  • 22. Server to Facebook Integration
  • 23. Brand Page Post Setup 1. Create a Facebook App that does the posting 2. Create a brand page for your product 3. Login as an administrator of the brand page 4. Grant the app permission to post as you https://www.facebook.com/dialog/oauth?client_id=<app id>& scope=publish_stream,offline_access,read_stream,manage_pages& response_type=token Example response https://www.facebook.com/#access_token=AAABmbm...MUZD&expires_in=0
  • 24. Facebook Brand Page Post 1. Query for accounts using our stored access token to get the access token for the page 2. Post to brand page using returned access token 3. Periodically, read likes and comment counts to update global participation state
  • 25. Facebook Brand Page Post 1. Query accounts https://graph.facebook.com/me/accounts?access_token=<stored token> Example JSON results { "data": [ { "name": "Infinity Blade", "access_token": " redacted ", "category": "App page", "id": "163584600328189", "perms": [ "ADMINISTER", "BASIC_ADMIN" ] }, { "name": "Infinity Blade II", "access_token": " redacted ", "category": "Application", "id": "300673636660678" } ], }
  • 26. Facebook Brand Page Post 2. Post to brand page https://graph.facebook.com/<page id>/feed?method=post& access_token=<page token>& message=<message text> Example JSON results { "id": "163584600328189_462261520460494" }
  • 27. Facebook Brand Page Post 3. Monitor post activity https://graph.facebook.com/163584600328189_462261520460494 Example JSON results { "id": "163584600328189_462261520460494", "message": "ClashMob: Destroy 27K Plated Sorok to win 10,000 Gold! Like this post to kill an extra Sorok!", "type": "status", "created_time": "2012-07-17T20:00:15+0000", "likes": { "data": [ { "name": "Joe Graf", "id": "635667972" }, { "name": "Chris Mielke", "id": "100000378321704" } ], "count": 5344 }, "comments": { "count": 3600 } }
  • 28. Server to Twitter Integration Click to edit Master text styles Second level Third level Fourth level Fifth level
  • 29. Twitter Integration Setup 1. Sign into the account that will send Tweets 2. Create an application to send Tweets 3. Set the app permissions to read and write 4. Create an access token for the app
  • 30. Twitter Integration Setup Click to edit Master text styles Second level Third level Fourth level Fifth level
  • 31. Server to Twitter Integration 1. Tweet ClashMob information as the account owner 2. Periodically, read the Tweet to get retweet counts
  • 32. ClashMob Server Twitter Integration 1. Post tweet to account feed https://api.twitter.com/1/statuses/update.json? include_entities=true& status=<OAuth encoded tweet> Example JSON results { "id": 203261300, "name": "Infinity Blade", "followers_count": 31248, "created_at": "Fri Oct 15 22:05:09 +0000 2010", "verified": true, "statuses_count": 1054, "lang": "en", "status": { "created_at": "Wed Jul 18 16:00:50 +0000 2012", "id": 225621159272656900, "text": "ClashMob: Deal as much ...! Retweet to do 2,500 DAMAGE now! #infinityblade", "retweet_count": 953, } }
  • 33. ClashMob Server Twitter Integration 2. Read a ClashMob tweet for retweet counts https://api.twitter.com/1/statuses/show.json?id=223172555035508740 Example JSON results { "created_at": "Wed Jul 11 21:50:58 +0000 2012", "id": 223172555035508740, "text": "ClashMob: Combine gems in the Gem Forge to create powerful, rare gems! #infinityblade", "source": "<a href="http://infinitybladegame.com/" rel="nofollow">Infinity Blade II</a>", "user": { "id": 203261300, "id_str": "203261300", "name": "Infinity Blade", "screen_name": "InfinityBlade", "followers_count": 31248, "listed_count": 463, "created_at": "Fri Oct 15 22:05:09 +0000 2010", "verified": true, "lang": "en", }, "retweet_count": 984 }
  • 34. ClashMob Communication Paths Google App Engine
  • 35. ClashMob Step by Step Get ClashMob List Google App Return visible events Engine
  • 37. ClashMob Step by Step Get ClashMob List Google App Return visible events Engine Enroll in ClashMob Push Notification of Start
  • 39. ClashMob Step by Step Get ClashMob List Google App Return visible events Engine Enroll in ClashMob Push Notification of Start Send Player Contribution Return Global Progress Push Notification of Completion
  • 41. ClashMob Step by Step Get ClashMob List Google App Return visible events Engine Enroll in ClashMob Push Notification of Start Send Player Contribution Return Global Progress Push Notification of Completion Claim Reward
  • 42. ClashMob Communication Paths Google App Engine
  • 44. Facebook Like Support To like a ClashMob post, the client issues a web request with the posts ID The ID is given to the client by our backend server We use HTTP GET with method=post override https://graph.facebook.com/163584600328189_462261520460494/likes? method=post& access_token=<users access token>
  • 46. ClashMob Twitter Retweet Support The Twitter API is RESTful so the game retweets a ClashMob tweet by POSTing to an URL with an ID https://api.twitter.com/1/statuses/retweet/225319026107228160.json
  • 48. Facebook Comment Support Commenting is similar to creating a post, but to a specific post ID https://graph.facebook.com/163584600328189_462261520460494/comments? method=post& access_token=<users access token>& message=<URL encoded message>
  • 49. My Mob Pulled from Facebook & Game Center on iOS Bonuses for friends Call to action
  • 51. Summary Weve discussed what ClashMob is Weve seen that ClashMob has extended our brands reach yielding impressions outside of our core community Weve talked about how we integrate the game server with social networks Weve talked about how to integrate social networks into the game client
  • 52. Infinity Blade 2 ClashMob: Hacking the Social Graph Special thanks to: Donald & Geremy Mustard Joe Graf ChAIR Entertainment Wes Hunt Epic Games, Inc. Josh Markiewicz Twitter: @EpicCog Eric Newman Ian Thomas Patent pending: 61/618,053 & 61/618,024 Sam Zamani