data driven development the technology behind live-ops

38
Data Driven Development The Technology Behind Live-Ops

Upload: yvonne-umble

Post on 16-Dec-2015

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Data Driven Development The Technology Behind Live-Ops

Data Driven Development

The Technology Behind Live-Ops

Page 2: Data Driven Development The Technology Behind Live-Ops

About Me

Daniel MenardCo-founder and CEO

Page 3: Data Driven Development The Technology Behind Live-Ops
Page 4: Data Driven Development The Technology Behind Live-Ops

First Spin Out

Page 5: Data Driven Development The Technology Behind Live-Ops
Page 6: Data Driven Development The Technology Behind Live-Ops

Products

•Power Based

• Short Burst + Long Tail

•Qualitative

•Reviews

Services

• Stamina Based

• Survival + Build Up

•Quantitative

•React to Players

Products and Services

Page 7: Data Driven Development The Technology Behind Live-Ops

Commit Graphs

Game Launch

Page 8: Data Driven Development The Technology Behind Live-Ops

Commit GraphsGame

Launch

Page 9: Data Driven Development The Technology Behind Live-Ops

•Code Quality

•Analytics

•Ongoing Production

Effects on Tech

Page 10: Data Driven Development The Technology Behind Live-Ops

•Now a major concern

•Must be able to add and remove features easily

•Maintenance dwarfs production

Code Quality

Page 11: Data Driven Development The Technology Behind Live-Ops

•Key metrics and balancing

• Log everything

• Free solutions available

•Prioritize analysis capabilities

Analytics

Page 12: Data Driven Development The Technology Behind Live-Ops

•Real-Time Data

• Time Lagged Data

•No Data

•Wrong Data

Analytics

Page 13: Data Driven Development The Technology Behind Live-Ops

•Only require designers to add content• Good tools• Configuration data

•Changes informed by analytics

•Regular Patches• Regular QA• Submit to App Stores

Ongoing Production

Page 14: Data Driven Development The Technology Behind Live-Ops

Deliver

GatherAnalyse

Adjust

Tightening the Loop

7 day review

1-30 days

Page 15: Data Driven Development The Technology Behind Live-Ops

•Decouple data from logic code

•Create a data model for your game

•Game becomes it’s own “runtime” for your data

•Configuration files

Data Driven Development

Page 16: Data Driven Development The Technology Behind Live-Ops

•Data can be made accessible to all

•Better code

• Flat class hierarchy

•Objects become containers for data

Why should you care

Page 17: Data Driven Development The Technology Behind Live-Ops

Designer Data

LevelsBalance SettingsItem Definitions

Player Data

ProgressionInventoryAchievementsHigh Scores

Runtime Data

HealthScoreCombo Counter

Class Separation

Page 18: Data Driven Development The Technology Behind Live-Ops

Anti-Pattern: Configuration Classes

•Classes which extend and only override defaults

•Configuration should be moved to data class and injected

•Create new classes only when consuming different data

Page 19: Data Driven Development The Technology Behind Live-Ops

Data Model

Shop Item- Key- Name- Price- Icon- Requirements- Costs- Trigger- Effects

Shop Group- Key- Name- Items

Requirement- Text- LUA Function

Effect- Text- LUA Function

Trigger- Key

Cost- Text- LUA Function- Mutator

1

*

1

*

*

*

*

*

*

Page 20: Data Driven Development The Technology Behind Live-Ops

Spectrum

Virtual Machine

Scripted Bindings

Domain Specific

Language

Configuration Files

Entirely Hardcoded

Page 21: Data Driven Development The Technology Behind Live-Ops

Over-Engineering

•Be pragmatic

•Balance customizability with schedule

•Don’t reinvent the wheel, use scripting languages

Page 22: Data Driven Development The Technology Behind Live-Ops

•Pick one and stick with it• LUA, Javascript, Python, many available

•Make sure you can interop easily

•Use it as a configuration language too• JSON, Lua Pickle

Scripting Language

Page 23: Data Driven Development The Technology Behind Live-Ops

• Tolua++• Code generation from headers

•Create regular C++ class

•Make accessible to LUA

LUA Binding

Page 24: Data Driven Development The Technology Behind Live-Ops

enemiesData = CCDictionary:create()

-- BOOMERdata = BoomerData:create("Boomer1")data:setWeaknessDamageType(DamageType_All)data:setEnemyType(EnemyType_Boomer)data:setImpactType(ImpactType_Explosion)data:setCanBeThrown(true)data:setIndependent(true)data:setSoundPrefix("Boomer")data:addAnimationFile("boomer_animations")data:addAnimationFile("boomer_explode")enemiesData:setObject(data, data:getKey():getCString())

Example

Page 25: Data Driven Development The Technology Behind Live-Ops

function parseNeighbourhood(neighbourhoodDefinition)local neighbourhood = NeighbourhoodData:create(neighbourhoodDefinition.key);

neighbourhood:setCollectionMapPosition(neighbourhoodDefinition.collectionMapPosition); neighbourhood:setCollectionTimeMs(neighbourhoodDefinition.collectionTimeMs); neighbourhood:setImagePath(neighbourhoodDefinition.imagePath); neighbourhood:setMapPosition(neighbourhoodDefinition.mapPosition); neighbourhood:setSoundKey(neighbourhoodDefinition.soundKey); neighbourhood:setZOrder(neighbourhoodDefinition.zOrder);

if neighbourhoodDefinition.coinReward ~= nil then neighbourhood:setCoinReward(neighbourhoodDefinition.coinReward); end

if neighbourhoodDefinition.toothReward ~= nil then neighbourhood:setToothReward(neighbourhoodDefinition.toothReward); end

return neighbourhood;end

local levels = CCArray:create();

local neighbourhoodDefinitions = loadFileSafe("Scripts/Data/neighbourhoods.lua", {ccc3=ccc3, ccp=ccp});for key, neighbourhoodDefinition in pairs(neighbourhoodDefinitions) do levels:addObject(parseNeighbourhood(neighbourhoodDefinition));end

Example

Page 26: Data Driven Development The Technology Behind Live-Ops

return{ { key="Neighbourhood1", collectionMapPosition=ccp(741, 1120), collectionTimeMs=(60 * 60 * 1000), imagePath="Images/UI/Map/map_redlight01.png", mapPosition=ccp(191, 795), soundKey="Env_RedLight", toothReward=1, zOrder=4 }, …}

Example

Page 27: Data Driven Development The Technology Behind Live-Ops

Player Data

•Player data depends on designer data

•Designer data is expected to change

• Isolate them from each other

•Database-style keys

Page 28: Data Driven Development The Technology Behind Live-Ops

•Necessary because Apple delivery is slow• 1-3 weeks spent in review• Android is much better

•Necessary to keep binary small• 50-100MB over-the-air limits• Universal apps

Downloader

Page 29: Data Driven Development The Technology Behind Live-Ops

•Restrictions on downloading executable code• No DLLs• Scripts a gray zone

•Bandwidth costs• No longer covered by the store

Considerations

Page 30: Data Driven Development The Technology Behind Live-Ops

•Ability to segment content by• Platform• Device capabilities• Test group

• Security

•Data Consistency

Requirements

Page 31: Data Driven Development The Technology Behind Live-Ops

• Simple HTTP Client

• JSON Manifest File

•Package files

•Cryptographic Signatures

Our implementation

Page 32: Data Driven Development The Technology Behind Live-Ops

{"manifest_version": 1,"name": "Big Action Mega Fight","version": "2","url": "http://update.dblstallion.com/bamf/manifest.php?{...}" "files": [

{"name": "patch1.dz","url": "

http://update.dblstallion.com/bamf/patch1.dz","signature":

"TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvb…"}

]}

Manifest File

Page 33: Data Driven Development The Technology Behind Live-Ops

• SHA-1 Hash, signed with private key

•Public key in game memory

• Ensures data consistency

• Ensures data is yours

Signatures

Page 34: Data Driven Development The Technology Behind Live-Ops

A/B Testing

1

2A 2B

3

50% 50%

Page 35: Data Driven Development The Technology Behind Live-Ops

•Always maintain a control group

•Can test multiple options (not just 2)

•Need a lot of time to determine winner

• Some groups will never merge back

A/B Testing

Page 36: Data Driven Development The Technology Behind Live-Ops

•Have a way to update someone’s save file

• Format may change

•Designer data may change

•Do not risk data loss• Unit Testing• QA

Save File Transformation

Page 38: Data Driven Development The Technology Behind Live-Ops

Thank You!

www.doublestalliongames.com

[email protected]@dblstallion