how to build a top 10 game on facebook
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.TRANSCRIPT
+ 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
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