Transcript
Page 1: How to build a Top 10 game on Facebook

+ Scaling  Massive  Flash-­‐Projects  -­‐How  to  build  a  Top  10  game  on  

Facebook-­‐    

Philipp  Moeser  (Co-­‐Founder  &  CTO)  Ma8es  Groeger  (Senior  Engineer)  

Page 2: How to build a Top 10 game on Facebook

n  Teams  and  Tools  you  need  to  build  a  Top  Game  

2  

Teams  &  tools    you  need  to  build    

a  big  game  

Page 3: How to build a Top 10 game on Facebook

wooga  –  world  of  gaming  

3  

Key  stats  

6  games  on  Facebook,  39  million  acJve  users  

3rd  biggest  social  game  developer  worldwide  

70%  of  users  are  female  (age  20-­‐60)  

About  wooga  

Founded  January  2009  

Funding  of  $32m  

InternaJonal  team  of  100  from  over  20  countries  in  Berlin  

Philipp  Moeser  -­‐Co-­‐Founder  &  CTO-­‐  

Ma8es  Groeger  -­‐Senior  Engineer-­‐  

Page 4: How to build a Top 10 game on Facebook

4  

I.  Challenges  

II.  Our  philosophy  

III.  Environment  

IV.  Best  pracJce  examples  

V.  Summary  

Agenda  

Page 5: How to build a Top 10 game on Facebook

Agenda  

5  

I.  Challenges  

Page 6: How to build a Top 10 game on Facebook

§  Launched  February  2010  §  12th  Facebook  game  §  10  m  monthly  acJve  user  (MAU)  §  800  engineering  days  invested  

Page 7: How to build a Top 10 game on Facebook

§  Launched  May  2010  §  14th  biggest  Facebook  game  §  8,7  m  MAU  §  1200  engineering  days  invested  so  

far  

Page 8: How to build a Top 10 game on Facebook

§  Launched  August  2011  §  Top  10  fastest  growing  game  §  3  m  MAU  §  500  engineering  days  invested  so  far  

Page 9: How to build a Top 10 game on Facebook

How  do  games  differ  

n  Quick  prototyping  

9  

n  Features  get  killed  

n  High  complexity  

Page 10: How to build a Top 10 game on Facebook

Challenges  summary  

10  

n  Complex  

n  Large  

n  Moving  target  

Page 11: How to build a Top 10 game on Facebook

11  

Agenda  

I.  Challenges  

II.  Our  philosophy  

Page 12: How to build a Top 10 game on Facebook

12  

Agile!  

Page 13: How to build a Top 10 game on Facebook

13  

Why  agile?  

Page 14: How to build a Top 10 game on Facebook

14  

http

://10

year

sagi

le.o

rg/w

p-co

nten

t/upl

oads

/201

1/01

/bac

kgro

und.

jpg/

manifesto  for  agile  soJware  development  

Page 15: How to build a Top 10 game on Facebook

Our  philosophy:  agile  

n  Individuals  and  interacJons  over    processes  and  tools  

n  Working  socware  over    comprehensive  documentaJon  

n  Customer  collaboraJon  over    contract  negoJaJon  

n  Responding  to  changes  over    following  a  plan  

15  

Page 16: How to build a Top 10 game on Facebook

Our  philosophy:  agile  

n  Individuals  and  interacJons  over    processes  and  tools  

n  Working  socware  over    comprehensive  documentaJon  

n  Customer  collaboraJon  over    contract  negoJaJon  

n  Responding  to  changes  over    following  a  plan  

16  

Page 17: How to build a Top 10 game on Facebook

17  

talk  

Page 18: How to build a Top 10 game on Facebook

Our  philosophy:  agile  

18  

n  Individuals  and  interacJons  over    processes  and  tools  

n  Working  socware  over    comprehensive  documentaJon  

n  Customer  collaboraJon  over    contract  negoJaJon  

n  Responding  to  changes  over    following  a  plan  

Page 19: How to build a Top 10 game on Facebook

19  

prototypes  

Page 20: How to build a Top 10 game on Facebook

Our  philosophy:  agile  

20  

n  Individuals  and  interacJons  over    processes  and  tools  

n  Working  socware  over    comprehensive  documentaJon  

n  Customer  collaboraJon  over    contract  negoJaJon  

n  Responding  to  changes  over    following  a  plan  

Page 21: How to build a Top 10 game on Facebook

21  

collaborate  

http

://as

pekt

mag

azin

.wor

dpre

ss.c

om/2

011/

05/1

6/ho

nig-

im-d

reiv

ierte

ltakt

/

Page 22: How to build a Top 10 game on Facebook

Our  philosophy:  agile  

22  

n  Individuals  and  interacJons  over    processes  and  tools  

n  Working  socware  over    comprehensive  documentaJon  

n  Customer  collaboraJon  over    contract  negoJaJon  

n  Responding  to  changes  over    following  a  plan  

Page 23: How to build a Top 10 game on Facebook

23  

Collaborate.

http

://w

ww

.fina

ncia

lmel

tdow

n.co

m/th

e_so

lutio

n.ht

ml

best  soluPon  

Page 24: How to build a Top 10 game on Facebook

24  

Why  agile?  

Page 25: How to build a Top 10 game on Facebook

Philosophy  summary      

n  Internal  communicaJon  (instead  of  processes)  

n  Protoyping  &  iteraJng  

n  External  communicaJon  (instead  of  contracts)  

n  Flexibility  

25  

Page 26: How to build a Top 10 game on Facebook

26  

Agenda  

I.  Challenges  

II.  Our  philosophy  

III.  Environment  

Page 27: How to build a Top 10 game on Facebook

27  

Independence  

Page 28: How to build a Top 10 game on Facebook

28  

no  frameworks  

Page 29: How to build a Top 10 game on Facebook

29  

no  processes  

Page 30: How to build a Top 10 game on Facebook

30  

no  manager  

Page 31: How to build a Top 10 game on Facebook

31  

Responsibility  

Page 32: How to build a Top 10 game on Facebook

few  roles  

32  

Page 33: How to build a Top 10 game on Facebook

small  team  

33  

Page 34: How to build a Top 10 game on Facebook

34  

CommunicaPon  

Page 35: How to build a Top 10 game on Facebook

one  room    

35  

one  room  

Page 36: How to build a Top 10 game on Facebook

n  Independence  

n  Responsibility  

n  CommunicaJon  

36  

Team  summary      

Page 37: How to build a Top 10 game on Facebook

37  

I.  Challenges  

II.  Our  philosophy  

III.  Environment  

IV. Best  pracJce  examples  

Agenda  

Page 38: How to build a Top 10 game on Facebook

38  

And  now...  

Page 39: How to build a Top 10 game on Facebook

39  

hands  on  

Page 40: How to build a Top 10 game on Facebook

40  

Agile  rocks  

Page 41: How to build a Top 10 game on Facebook

41  

danger  

Page 42: How to build a Top 10 game on Facebook

42  

http

://w

ww

.lebe

nsm

ittel

foto

s.co

m/2

008/

07/2

0/sp

aghe

tti-u

nd-p

esto

/

Page 43: How to build a Top 10 game on Facebook

43  

Page 44: How to build a Top 10 game on Facebook

Examples  

n  Unit  tesJng  

n  Service  layer  

n  ConJnuous  integraJon  

44  

Page 45: How to build a Top 10 game on Facebook

Examples  

n  Unit  tesJng  

n  Service  layer  

n  ConJnuous  integraJon  

45  

Page 46: How to build a Top 10 game on Facebook

What  is  unit  tesJng?  

46  

A  B  

C  

Page 47: How to build a Top 10 game on Facebook

One  test  per  class  

47  

A  B  

C  

T   T   T  

Page 48: How to build a Top 10 game on Facebook

48  

change  of  perspecPve  

Page 49: How to build a Top 10 game on Facebook

49   http

://ch

eejy

g.de

vian

tart.

com

/art/

Hor

tPar

k-R

ecyc

ling-

bin-

1746

3971

0

encapsulaPon  

Page 50: How to build a Top 10 game on Facebook

50   http

://ch

eejy

g.de

vian

tart.

com

/art/

Hor

tPar

k-R

ecyc

ling-

bin-

1746

3971

0

encapsulation

safety  net  

Page 51: How to build a Top 10 game on Facebook

51   http

://ch

eejy

g.de

vian

tart.

com

/art/

Hor

tPar

k-R

ecyc

ling-

bin-

1746

3971

0

encapsulation

safety net

acts  as  documentaPon  

Page 52: How to build a Top 10 game on Facebook

52  

Page 53: How to build a Top 10 game on Facebook

53  

Page 54: How to build a Top 10 game on Facebook

54  

Page 55: How to build a Top 10 game on Facebook

55  

Page 56: How to build a Top 10 game on Facebook

56  

       

Page 57: How to build a Top 10 game on Facebook

57  

       

Page 58: How to build a Top 10 game on Facebook

58  

       

Page 59: How to build a Top 10 game on Facebook

59  

Page 60: How to build a Top 10 game on Facebook

Mock  objects  

n  Simulated  objects  with  controlled  behaviour  

n  Same  interface  as  the  real  object  

n  SuggesJng:  Mockito  Flex  h8ps://bitbucket.org/loomis/mockito-­‐flex    

60  

Page 61: How to build a Top 10 game on Facebook

Example  

61  

A  B  

C  

Page 62: How to build a Top 10 game on Facebook

Dependency  

62  

A  B  

C  

T  

Page 63: How to build a Top 10 game on Facebook

Mock  dependency  

63  

A  B  

M  

T  

Page 64: How to build a Top 10 game on Facebook

64  

Page 65: How to build a Top 10 game on Facebook

Example  

65  

A  RewardAssigner  

IUser  Energy  

Controller  

T  

Page 66: How to build a Top 10 game on Facebook

66  

       

Page 67: How to build a Top 10 game on Facebook

67  

       

Page 68: How to build a Top 10 game on Facebook

68  

       

Page 69: How to build a Top 10 game on Facebook

69  

       

Page 70: How to build a Top 10 game on Facebook

70  

       

Page 71: How to build a Top 10 game on Facebook

Examples  

71  

n  Unit  tesJng  

n  Service  layer  

n  ConJnuous  integraJon  

Page 72: How to build a Top 10 game on Facebook

Client  communicaJon  

72  

Client  

Backend  JS   Facebook  

Page 73: How to build a Top 10 game on Facebook

Keep  your  client  independent  

73  

Client  

Backend  JS  

Service  Layer  

Facebook  

Page 74: How to build a Top 10 game on Facebook

Now  you  can  fake  everything  

74  

Client  

Fake  Backend  

Fake  JS  

Service  Layer  

Fake  Facebook  

Page 75: How to build a Top 10 game on Facebook

75  

Benefits?  

Page 76: How to build a Top 10 game on Facebook

76  

easier  to  test  

Page 77: How to build a Top 10 game on Facebook

77  

target new platforms

Page 78: How to build a Top 10 game on Facebook

78  

work  offline  

Page 79: How to build a Top 10 game on Facebook

79  

How  to  implement?  

Page 80: How to build a Top 10 game on Facebook

80  

Page 81: How to build a Top 10 game on Facebook

81  

decoraPon  

Page 82: How to build a Top 10 game on Facebook

82  

Page 83: How to build a Top 10 game on Facebook

83  

       

Page 84: How to build a Top 10 game on Facebook

84  

       

Page 85: How to build a Top 10 game on Facebook

85  

       

Page 86: How to build a Top 10 game on Facebook

86  

Compiler  Constants  

Page 87: How to build a Top 10 game on Facebook

87  

Compiler  Constants  

Page 88: How to build a Top 10 game on Facebook

88  

Compiler  Constants  

       

Page 89: How to build a Top 10 game on Facebook

89  

Compiler  Constants  

       

Page 90: How to build a Top 10 game on Facebook

90  

Compiler  Constants  

Page 91: How to build a Top 10 game on Facebook

91  

Always  build    two  versions???  

Page 92: How to build a Top 10 game on Facebook

Examples  

92  

n  Unit  tesJng  

n  Service  layer  

n  ConJnuous  integraJon  

Page 93: How to build a Top 10 game on Facebook

What  it  does  

n  ConJnuously  applies  quality  control  

n  Runs  on  a  server  

n  AutomaJcally  builds  and  deploys  

n  Jobs:  snapshot,  nightly,  release  

93  

Page 94: How to build a Top 10 game on Facebook

94  

Page 95: How to build a Top 10 game on Facebook

95  

       

Page 96: How to build a Top 10 game on Facebook

96  

       

Page 97: How to build a Top 10 game on Facebook

97  

       

Page 98: How to build a Top 10 game on Facebook

Test  coverage  

98  

Page 99: How to build a Top 10 game on Facebook

99  

Benefits?  

Page 100: How to build a Top 10 game on Facebook

100  

runnable  version  

Page 101: How to build a Top 10 game on Facebook

101  

runnable version

run  all  tests  

Page 102: How to build a Top 10 game on Facebook

102  

runs all tests

arPsts  see    their  changes  

Page 103: How to build a Top 10 game on Facebook

103  

runs all tests

perform  heavy  operaPons  

Page 104: How to build a Top 10 game on Facebook

Wrap-­‐up:  best  pracJce  

n  Special  requirements  for  code  

n  Keep  up  producJon  speed  

n  Keep  your  client  independent  

n  Automate  as  much  as  possible  

104  

Page 105: How to build a Top 10 game on Facebook

105  

I.  Challenges  

II.  Our  philosophy  

III.  Environment  

IV. Best  pracJce  examples  

V.  Summary  

Agenda  

Page 106: How to build a Top 10 game on Facebook

Internal communication (instead of processes) Protoyping & iterating External communication (instead of contracts) Flexibility

I.  Challenges  

IV.  Best  pracPce  examples        

III.  Environment!  

II.  Our  philosophy    

Unit testing | service layer | cont. integration

Independence | responsibility | communication

Internal communication | Protoyping & iterating | External communication | Flexibility

Large | complex | moving target

Page 107: How to build a Top 10 game on Facebook

107  wooga.com/jobs  

Page 108: How to build a Top 10 game on Facebook

108  

Thank  you!    

Philipp  Moeser  CO-­‐Founder  &  CTO  wooga  

 Ma^es  Groeger  

Senior  Engineer  at  wooga  @Ma8esGroeger  

 Twi^er:  @wooga  wooga.com/jobs