How to build a Top 10 game on Facebook

Preview:

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

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

Facebook-­‐    

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

n  Teams  and  Tools  you  need  to  build  a  Top  Game  

2  

Teams  &  tools    you  need  to  build    

a  big  game  

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-­‐  

4  

I.  Challenges  

II.  Our  philosophy  

III.  Environment  

IV.  Best  pracJce  examples  

V.  Summary  

Agenda  

Agenda  

5  

I.  Challenges  

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

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

far  

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

How  do  games  differ  

n  Quick  prototyping  

9  

n  Features  get  killed  

n  High  complexity  

Challenges  summary  

10  

n  Complex  

n  Large  

n  Moving  target  

11  

Agenda  

I.  Challenges  

II.  Our  philosophy  

12  

Agile!  

13  

Why  agile?  

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  

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  

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  

17  

talk  

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  

19  

prototypes  

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  

21  

collaborate  

http

://as

pekt

mag

azin

.wor

dpre

ss.c

om/2

011/

05/1

6/ho

nig-

im-d

reiv

ierte

ltakt

/

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  

23  

Collaborate.

http

://w

ww

.fina

ncia

lmel

tdow

n.co

m/th

e_so

lutio

n.ht

ml

best  soluPon  

24  

Why  agile?  

Philosophy  summary      

n  Internal  communicaJon  (instead  of  processes)  

n  Protoyping  &  iteraJng  

n  External  communicaJon  (instead  of  contracts)  

n  Flexibility  

25  

26  

Agenda  

I.  Challenges  

II.  Our  philosophy  

III.  Environment  

27  

Independence  

28  

no  frameworks  

29  

no  processes  

30  

no  manager  

31  

Responsibility  

few  roles  

32  

small  team  

33  

34  

CommunicaPon  

one  room    

35  

one  room  

n  Independence  

n  Responsibility  

n  CommunicaJon  

36  

Team  summary      

37  

I.  Challenges  

II.  Our  philosophy  

III.  Environment  

IV. Best  pracJce  examples  

Agenda  

38  

And  now...  

39  

hands  on  

40  

Agile  rocks  

41  

danger  

42  

http

://w

ww

.lebe

nsm

ittel

foto

s.co

m/2

008/

07/2

0/sp

aghe

tti-u

nd-p

esto

/

43  

Examples  

n  Unit  tesJng  

n  Service  layer  

n  ConJnuous  integraJon  

44  

Examples  

n  Unit  tesJng  

n  Service  layer  

n  ConJnuous  integraJon  

45  

What  is  unit  tesJng?  

46  

A  B  

C  

One  test  per  class  

47  

A  B  

C  

T   T   T  

48  

change  of  perspecPve  

49   http

://ch

eejy

g.de

vian

tart.

com

/art/

Hor

tPar

k-R

ecyc

ling-

bin-

1746

3971

0

encapsulaPon  

50   http

://ch

eejy

g.de

vian

tart.

com

/art/

Hor

tPar

k-R

ecyc

ling-

bin-

1746

3971

0

encapsulation

safety  net  

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  

52  

53  

54  

55  

56  

       

57  

       

58  

       

59  

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  

Example  

61  

A  B  

C  

Dependency  

62  

A  B  

C  

T  

Mock  dependency  

63  

A  B  

M  

T  

64  

Example  

65  

A  RewardAssigner  

IUser  Energy  

Controller  

T  

66  

       

67  

       

68  

       

69  

       

70  

       

Examples  

71  

n  Unit  tesJng  

n  Service  layer  

n  ConJnuous  integraJon  

Client  communicaJon  

72  

Client  

Backend  JS   Facebook  

Keep  your  client  independent  

73  

Client  

Backend  JS  

Service  Layer  

Facebook  

Now  you  can  fake  everything  

74  

Client  

Fake  Backend  

Fake  JS  

Service  Layer  

Fake  Facebook  

75  

Benefits?  

76  

easier  to  test  

77  

target new platforms

78  

work  offline  

79  

How  to  implement?  

80  

81  

decoraPon  

82  

83  

       

84  

       

85  

       

86  

Compiler  Constants  

87  

Compiler  Constants  

88  

Compiler  Constants  

       

89  

Compiler  Constants  

       

90  

Compiler  Constants  

91  

Always  build    two  versions???  

Examples  

92  

n  Unit  tesJng  

n  Service  layer  

n  ConJnuous  integraJon  

What  it  does  

n  ConJnuously  applies  quality  control  

n  Runs  on  a  server  

n  AutomaJcally  builds  and  deploys  

n  Jobs:  snapshot,  nightly,  release  

93  

94  

95  

       

96  

       

97  

       

Test  coverage  

98  

99  

Benefits?  

100  

runnable  version  

101  

runnable version

run  all  tests  

102  

runs all tests

arPsts  see    their  changes  

103  

runs all tests

perform  heavy  operaPons  

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  

105  

I.  Challenges  

II.  Our  philosophy  

III.  Environment  

IV. Best  pracJce  examples  

V.  Summary  

Agenda  

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

107  wooga.com/jobs  

108  

Thank  you!    

Philipp  Moeser  CO-­‐Founder  &  CTO  wooga  

 Ma^es  Groeger  

Senior  Engineer  at  wooga  @Ma8esGroeger  

 Twi^er:  @wooga  wooga.com/jobs