108
+ Scaling Massive FlashProjects How to build a Top 10 game on Facebook Philipp Moeser (CoFounder & CTO) Ma8es Groeger (Senior Engineer)

How to build a Top 10 game on Facebook

  • Upload
    wooga

  • View
    13.746

  • Download
    1

Embed Size (px)

DESCRIPTION

The talk provides two perspectives, an overall view from a CTO and also insights into how this philosophy is applied in the daily operations.Philipp Möser talks about his philosophy regarding the realization of huge software projects and he is excited to share his knowledge from many years of practical experience. Over the years Philipp has advised and coordinated many successful software projects and start ups. This is the first talk where he shares his opinion about how to successfully and efficiently build big software monsters from scratch.The second part shares some practical insights given by Mattes Groeger - a Flash Developer. He shows you how wooga makes sure to keep up development speed despite facing continuously changing requirements, new features and increasing complexity. By covering topics such as test-driven development and continuous integration, he shows you how to keep your code as agile as the process itself.

Citation preview

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