SlideShare a Scribd company logo
1 of 40
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 user’s 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
Klout’s 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 post’s 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=<user’s 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=<user’s 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


• We’ve seen that ClashMob has increased our player
  retention

• We’ve seen that ClashMob has extended our reach
  yielding impressions outside of our core community

• We’ve talked about how to integrate social
  networks into the game client

• We’ve 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

Similar to Infinity Blade 2: Hacking the Social Graph

Bigpoint white-label
Bigpoint white-labelBigpoint white-label
Bigpoint white-label
Blue_Meanie
 
Seo beginners-slide-show
Seo beginners-slide-showSeo beginners-slide-show
Seo beginners-slide-show
Krunal Doshi
 
Php day 2011 - Interactive-with-facebook
Php day 2011 - Interactive-with-facebookPhp day 2011 - Interactive-with-facebook
Php day 2011 - Interactive-with-facebook
Quang Anh Le
 

Similar to Infinity Blade 2: Hacking the Social Graph (20)

Gopher Taiwan Gathering #16: Build a smart bot via Golang
Gopher Taiwan Gathering #16:  Build a smart bot via GolangGopher Taiwan Gathering #16:  Build a smart bot via Golang
Gopher Taiwan Gathering #16: Build a smart bot via Golang
 
Designing for Social Media
Designing for Social MediaDesigning for Social Media
Designing for Social Media
 
App Katalog EN 12/2019
App Katalog EN 12/2019App Katalog EN 12/2019
App Katalog EN 12/2019
 
Teams Automation with Graph API
Teams Automation with Graph APITeams Automation with Graph API
Teams Automation with Graph API
 
Harnessing the Power of Google Tag Manager
Harnessing the Power of Google Tag ManagerHarnessing the Power of Google Tag Manager
Harnessing the Power of Google Tag Manager
 
Designing for the Social Web: Integrating Social Media into Web Design
Designing for the Social Web: Integrating Social Media into Web DesignDesigning for the Social Web: Integrating Social Media into Web Design
Designing for the Social Web: Integrating Social Media into Web Design
 
Seo beginners
Seo beginners Seo beginners
Seo beginners
 
Modern Web 2016: Using Golang to build a smart IM Bot
Modern Web 2016: Using Golang to build a smart IM Bot Modern Web 2016: Using Golang to build a smart IM Bot
Modern Web 2016: Using Golang to build a smart IM Bot
 
Sps mad2019 es el momento, empieza a desarrollar para microsoft teams
Sps mad2019   es el momento, empieza a desarrollar para microsoft teams Sps mad2019   es el momento, empieza a desarrollar para microsoft teams
Sps mad2019 es el momento, empieza a desarrollar para microsoft teams
 
Bigpoint white-label
Bigpoint white-labelBigpoint white-label
Bigpoint white-label
 
Gamification
GamificationGamification
Gamification
 
Twitch + Games
Twitch + GamesTwitch + Games
Twitch + Games
 
Leveraging Rails to Build Facebook Apps
Leveraging Rails to Build Facebook AppsLeveraging Rails to Build Facebook Apps
Leveraging Rails to Build Facebook Apps
 
Seo beginners-slide-show
Seo beginners-slide-showSeo beginners-slide-show
Seo beginners-slide-show
 
Seo beginners-slide-show
Seo beginners-slide-showSeo beginners-slide-show
Seo beginners-slide-show
 
SEO: search Engine Optimization
SEO: search Engine OptimizationSEO: search Engine Optimization
SEO: search Engine Optimization
 
GameZBoost White Label Gaming Platform
GameZBoost White Label Gaming PlatformGameZBoost White Label Gaming Platform
GameZBoost White Label Gaming Platform
 
Interactive with-facebook
Interactive with-facebookInteractive with-facebook
Interactive with-facebook
 
Php day 2011 - Interactive-with-facebook
Php day 2011 - Interactive-with-facebookPhp day 2011 - Interactive-with-facebook
Php day 2011 - Interactive-with-facebook
 
PlayFab ugc gdc
PlayFab ugc gdcPlayFab ugc gdc
PlayFab ugc gdc
 

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 user’s 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. Klout’s 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 post’s 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=<user’s 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=<user’s 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 • We’ve seen that ClashMob has increased our player retention • We’ve seen that ClashMob has extended our reach yielding impressions outside of our core community • We’ve talked about how to integrate social networks into the game client • We’ve 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