際際滷

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


 Worked at Epic Games over 9 years




 Primarily focused on online features for our
  games and engine

 Sr. Online Architect at Epic




                                                 2
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




                                                3
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




                                                4
About ClashMob


 Large scale challenge requiring thousands to
  complete

 Everyone that participates receives the reward

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


 In Infinity Blade 2, comprised of mini-games



                                                             5
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




                                                       6
ClashMob




           7
ClashMob Social Rewards




                          8
ClashMob Social Rewards




                          9
ClashMob Social Participation




                                10
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



                                                             11
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




                                                       12
ClashMob Affect on FEI




                         13
FEI Comparison

          7 Day FEI on June 7, 2012




                                      14
Brand Page Reach  Pre ClashMob Launch




       Ad campaign

                        ClashMob launches




                                            15
Brand Page Reach  Post ClashMob Launch




                                          16
ClashMob Impressions for Non-App Users




                                         17
ClashMob Affect on Twitter




                             18
Klouts Analysis of High Klout Scores




                                        19
Infinity Blade and Infinity Blade 2 DAU




                                          20
ClashMob Communication Paths




                               Google App
                               Google App
                                 Engine
                                 Engine

                  HTTPS




                                            21
ClashMob Communication Paths




                               Google App
                               Google App
                                 Engine
                                 Engine




                                            22
ClashMob 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>




                                                                       23
ClashMob 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>




                                                                           24
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




                                                                         25
ClashMob Communication Paths




                               Google App
                                 Engine




                                            26
ClashMob Server Facebook Integration




                                       27
ClashMob Facebook 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




                                                                               28
ClashMob Server 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




                                                      29
ClashMob Server 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"
       } ],
  }



                                                                        30
ClashMob Server 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" }




                                                           31
ClashMob Server 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 }
}




                                                                                                                  32
ClashMob Server Twitter Integration




                                      33
ClashMob Server 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




                                                 34
ClashMob Server Twitter Integration Setup




                                            35
ClashMob Server Twitter Integration


1. Tweet ClashMob information as the account owner

2. Periodically, read the Tweet to get retweet counts




                                                        36
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, } }



                                                                                           37
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 }


                                                                                                      38
Summary


 Weve seen that ClashMob has increased our player
  retention

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

 Weve talked about how to integrate social
  networks into the game client

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




                                                       39
Questions?


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


                                                     40

More Related Content

Infinity Blade 2: Hacking the Social Graph

  • 1. Infinity Blade 2 ClashMob: Hacking the Social Graph Joe Graf
  • 2. About Me Worked at Epic Games over 9 years Primarily focused on online features for our games and engine Sr. Online Architect at Epic 2
  • 3. 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 3
  • 4. 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 4
  • 5. About ClashMob Large scale challenge requiring thousands to complete Everyone that participates receives the reward Bonuses given for social elements Friends that play Like-ing a ClashMob post on the Infinity Blade page Retweeting a ClashMob tweet In Infinity Blade 2, comprised of mini-games 5
  • 6. 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 6
  • 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 11
  • 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 12
  • 14. FEI Comparison 7 Day FEI on June 7, 2012 14
  • 15. Brand Page Reach Pre ClashMob Launch Ad campaign ClashMob launches 15
  • 16. Brand Page Reach Post ClashMob Launch 16
  • 17. ClashMob Impressions for Non-App Users 17
  • 18. ClashMob Affect on Twitter 18
  • 19. Klouts Analysis of High Klout Scores 19
  • 20. Infinity Blade and Infinity Blade 2 DAU 20
  • 21. ClashMob Communication Paths Google App Google App Engine Engine HTTPS 21
  • 22. ClashMob Communication Paths Google App Google App Engine Engine 22
  • 23. ClashMob 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> 23
  • 24. ClashMob 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> 24
  • 25. 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 25
  • 26. ClashMob Communication Paths Google App Engine 26
  • 27. ClashMob Server Facebook Integration 27
  • 28. ClashMob Facebook 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 28
  • 29. ClashMob Server 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 29
  • 30. ClashMob Server 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" } ], } 30
  • 31. ClashMob Server 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" } 31
  • 32. ClashMob Server 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 } } 32
  • 33. ClashMob Server Twitter Integration 33
  • 34. ClashMob Server 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 34
  • 35. ClashMob Server Twitter Integration Setup 35
  • 36. ClashMob Server Twitter Integration 1. Tweet ClashMob information as the account owner 2. Periodically, read the Tweet to get retweet counts 36
  • 37. 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, } } 37
  • 38. 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 } 38
  • 39. Summary Weve seen that ClashMob has increased our player retention Weve seen that ClashMob has extended our reach yielding impressions outside of our core community Weve talked about how to integrate social networks into the game client Weve talked about how we integrate the game server with social networks 39
  • 40. Questions? Special thanks to: Donald & Geremy Mustard Joe Graf ChAIR Entertainment Wes Hunt Epic Games, Inc. Josh Markiewicz Twitter: @EpicCog Eric Newman Patent pending: Ian Thomas 61/618,053 & 61/618,024 Sam Zamani 40