Infinity Blade 2 ClashMob: Hacking the Social Graph Joe Graf MIGS November 14, 2012
Jun 25, 2015
Infinity Blade 2 ClashMob: Hacking the Social Graph
Joe Graf
MIGSNovember 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
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 DAULa
unch
1 M
onth
2 M
onth
s
3 M
onth
s
4 M
onth
s
5 M
onth
s
6 M
onth
s
IB2 DAUPolynomial (IB2 DAU)IB1 DAUPolynomial (IB1 DAU)
ClashMob launches
ClashMob Social Interactions
Like Comment Retweet0%
2%
4%
6%
8%
10%
12%
14%
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
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
5/7/
12
5/9/
12
5/11
/12
5/13
/12
5/15
/12
5/17
/12
5/19
/12
5/21
/12
5/23
/12
5/25
/12
5/27
/12
5/29
/12
5/31
/12
6/2/
12
6/4/
120.00%
10.00%
20.00%
30.00%
40.00%
50.00%
60.00%
Daily FEIWeekly FEI28 Day FEI
7 Day FEI on June 7, 2012
Infinity Blade
Halo Call of Duty
Angry Birds
Apple Microsoft Google Jaguar0.00%
5.00%
10.00%
15.00%
20.00%
25.00%
30.00%
35.00%
Infinity BladeHaloCall of DutyAngry BirdsAppleMicrosoftGoogleJaguar
Brand Page Reach – Pre ClashMob
Ad campaign
ClashMob launches
Brand Page Reach – Post ClashMob
Impressions for Non-App Users
ClashMob Affect on Twitter
Klout’s Analysis of High Klout Scores
ClashMob Communication Paths
Google App Engine
Google App Engine
HTTPS
ClashMob Communication Paths
Google App Engine
Google App Engine
Server to Facebook Integration
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
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
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 Post1. Query accounts
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" } ], }
https://graph.facebook.com/me/accounts?access_token=<stored token>
Facebook Brand Page Post
2. Post to brand page
Example JSON results
https://graph.facebook.com/<page id>/feed?method=post&access_token=<page token>&message=<message text>
{ "id": "163584600328189_462261520460494" }
Facebook Brand Page Post
3. Monitor post activity
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 }}
https://graph.facebook.com/163584600328189_462261520460494
Server to Twitter Integration
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
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
Example JSON results
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
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 }
ClashMob Communication Paths
Google App Engine
Google App Engine
ClashMob Step by Step
Google App Engine
Google App Engine
Get ClashMob List
Return visible events
ClashMob Step by Step
ClashMob Step by Step
Google App Engine
Google App Engine
Get ClashMob List
Return visible events
Enroll in ClashMob
Push Notification of Start
ClashMob Step by Step
ClashMob Step by Step
Google App Engine
Google App Engine
Get ClashMob List
Return visible events
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
Google App Engine
Google App Engine
Get ClashMob List
Return visible events
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
Google App Engine
Facebook Like Support
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>
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=<user’s access token>&message=<URL encoded message>
My MobPulled from Facebook &Game Center on iOS
Call to action
Bonuses for friends
Gifting in My Mob
Summary
• We’ve discussed what ClashMob is
• We’ve seen that ClashMob has extended our brand’s reach yielding impressions outside of our core community
• We’ve talked about how we integrate the game server with social networks
• We’ve talked about how to integrate social networks into the game client
Joe GrafEpic Games, Inc.
Twitter: @EpicCogPatent pending:
61/618,053 & 61/618,024
Special thanks to:Donald & Geremy MustardChAIR EntertainmentWes HuntJosh MarkiewiczEric NewmanIan ThomasSam Zamani
Infinity Blade 2 ClashMob: Hacking the Social Graph