infinity blade 2: hacking the social graph
TRANSCRIPT
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
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
14
7 Day FEI on June 7, 2012
Brand Page Reach – Pre ClashMob Launch
15
Ad campaign
ClashMob launches
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
21
Google App Engine
Google App Engine
HTTPS
ClashMob Communication Paths
22
Google App Engine
Google App Engine
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
23
https://graph.facebook.com/163584600328189_462261520460494/likes?method=post&access_token=<user’s access token>
ClashMob Facebook “Comment” Support
• Commenting is similar to creating a post, but to a specific post ID
24
https://graph.facebook.com/163584600328189_462261520460494/comments?method=post&access_token=<user’s access token>&message=<URL encoded message>
ClashMob Twitter Retweet Support
• The Twitter API is RESTful so the game retweets a ClashMob tweet by POSTing to an URL with an ID
25
https://api.twitter.com/1/statuses/retweet/225319026107228160.json
ClashMob Communication Paths
26
Google App Engine
ClashMob Server Facebook Integration
27
ClashMob Facebook Brand Page Post Setup
1. Create a Facebook App that does the posting2. Create a brand page for your product3. Login as an administrator of the brand page4. Grant the app permission to post as you
Example response
28
https://www.facebook.com/dialog/oauth?client_id=<app id>&scope=publish_stream,offline_access,read_stream,manage_pages&response_type=token
https://www.facebook.com/#access_token=AAABmbm...MUZD&expires_in=0
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
Example JSON results
30
{ "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" } ], }
https://graph.facebook.com/me/accounts?access_token=<stored token>
ClashMob Server Facebook Brand Page Post
2. Post to brand page
Example JSON results
31
https://graph.facebook.com/<page id>/feed?method=post&access_token=<page token>&message=<message text>
{ "id": "163584600328189_462261520460494" }
ClashMob Server Facebook Brand Page Post
3. Monitor post activity
Example JSON results
32
{ "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 }}
https://graph.facebook.com/163584600328189_462261520460494
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
36
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
Example JSON results
37
https://api.twitter.com/1/statuses/update.json?include_entities=true&status=<OAuth encoded tweet>
{ "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
Example JSON results
38
https://api.twitter.com/1/statuses/show.json?id=223172555035508740
{ "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 }
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
Special thanks to:Donald & Geremy MustardChAIR EntertainmentWes HuntJosh MarkiewiczEric NewmanIan ThomasSam Zamani
Joe GrafEpic Games, Inc.
Twitter: @EpicCogPatent pending:
61/618,053 & 61/618,024
Questions?