new falling to your death: the canabalt...

30
Falling to your Death: The CANABALT Postmortem Eric Johnson Adam ‘Atomic’ Saltsman Semi Secret Software

Upload: others

Post on 16-Oct-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: New Falling to your Death: The CANABALT Postmortemtwvideo01.ubm-us.net/o1/vault/gdc10/slides/Johnson_Eric... · 2010. 3. 19. · Sales / Piracy ‣ Just over 115,000 units in 5 months

Falling to your Death: The CANABALT Postmortem

Eric JohnsonAdam ‘Atomic’ SaltsmanSemi Secret Software

Page 2: New Falling to your Death: The CANABALT Postmortemtwvideo01.ubm-us.net/o1/vault/gdc10/slides/Johnson_Eric... · 2010. 3. 19. · Sales / Piracy ‣ Just over 115,000 units in 5 months

Canabalt

‣ adamatomic.com/canabalt

‣ canabalt.com

Page 3: New Falling to your Death: The CANABALT Postmortemtwvideo01.ubm-us.net/o1/vault/gdc10/slides/Johnson_Eric... · 2010. 3. 19. · Sales / Piracy ‣ Just over 115,000 units in 5 months

Artwork Inspiration

Page 4: New Falling to your Death: The CANABALT Postmortemtwvideo01.ubm-us.net/o1/vault/gdc10/slides/Johnson_Eric... · 2010. 3. 19. · Sales / Piracy ‣ Just over 115,000 units in 5 months

Flashback: The Quest for Identity

Page 5: New Falling to your Death: The CANABALT Postmortemtwvideo01.ubm-us.net/o1/vault/gdc10/slides/Johnson_Eric... · 2010. 3. 19. · Sales / Piracy ‣ Just over 115,000 units in 5 months

Another World, Eric Chahi

Page 6: New Falling to your Death: The CANABALT Postmortemtwvideo01.ubm-us.net/o1/vault/gdc10/slides/Johnson_Eric... · 2010. 3. 19. · Sales / Piracy ‣ Just over 115,000 units in 5 months

Prince of Persia, Jordan Mechner

Page 7: New Falling to your Death: The CANABALT Postmortemtwvideo01.ubm-us.net/o1/vault/gdc10/slides/Johnson_Eric... · 2010. 3. 19. · Sales / Piracy ‣ Just over 115,000 units in 5 months

Blomkamp’s District 9

Page 8: New Falling to your Death: The CANABALT Postmortemtwvideo01.ubm-us.net/o1/vault/gdc10/slides/Johnson_Eric... · 2010. 3. 19. · Sales / Piracy ‣ Just over 115,000 units in 5 months

Viktor Antonov,Art Director, Half Life 2

Page 9: New Falling to your Death: The CANABALT Postmortemtwvideo01.ubm-us.net/o1/vault/gdc10/slides/Johnson_Eric... · 2010. 3. 19. · Sales / Piracy ‣ Just over 115,000 units in 5 months

Level Generation

Page 10: New Falling to your Death: The CANABALT Postmortemtwvideo01.ubm-us.net/o1/vault/gdc10/slides/Johnson_Eric... · 2010. 3. 19. · Sales / Piracy ‣ Just over 115,000 units in 5 months

Building Spacing

‣ Inspired by a traditional, “the farther you go, the harder it gets” formula

‣ evolved into a speed based formula

Page 11: New Falling to your Death: The CANABALT Postmortemtwvideo01.ubm-us.net/o1/vault/gdc10/slides/Johnson_Eric... · 2010. 3. 19. · Sales / Piracy ‣ Just over 115,000 units in 5 months

Buildings: “Lego Pieces”

Page 12: New Falling to your Death: The CANABALT Postmortemtwvideo01.ubm-us.net/o1/vault/gdc10/slides/Johnson_Eric... · 2010. 3. 19. · Sales / Piracy ‣ Just over 115,000 units in 5 months

Guerilla Marketing

Page 13: New Falling to your Death: The CANABALT Postmortemtwvideo01.ubm-us.net/o1/vault/gdc10/slides/Johnson_Eric... · 2010. 3. 19. · Sales / Piracy ‣ Just over 115,000 units in 5 months

Free Flash Version

‣ Won’t that hurt sales?

‣ no Flash on iPhone

‣ try before you buy

‣ feel good about supporting indie developers

Page 14: New Falling to your Death: The CANABALT Postmortemtwvideo01.ubm-us.net/o1/vault/gdc10/slides/Johnson_Eric... · 2010. 3. 19. · Sales / Piracy ‣ Just over 115,000 units in 5 months

Aggregators

‣ stumbleupon.com ➞ adamatomic.com

‣ 190,000 hits

Page 15: New Falling to your Death: The CANABALT Postmortemtwvideo01.ubm-us.net/o1/vault/gdc10/slides/Johnson_Eric... · 2010. 3. 19. · Sales / Piracy ‣ Just over 115,000 units in 5 months

Twitter

‣ I ran 4089m before hitting a wall and tumbling to my death on my iPhone www.canabalt.com

‣ adamatomic.com 13,000 hits

‣ canabalt.com 41,000 hits

Page 16: New Falling to your Death: The CANABALT Postmortemtwvideo01.ubm-us.net/o1/vault/gdc10/slides/Johnson_Eric... · 2010. 3. 19. · Sales / Piracy ‣ Just over 115,000 units in 5 months

App Store Specifics

Page 17: New Falling to your Death: The CANABALT Postmortemtwvideo01.ubm-us.net/o1/vault/gdc10/slides/Johnson_Eric... · 2010. 3. 19. · Sales / Piracy ‣ Just over 115,000 units in 5 months

Sales / Piracy

‣ Just over 115,000 units in 5 months

‣ Estimated 20% piracy rate

Page 18: New Falling to your Death: The CANABALT Postmortemtwvideo01.ubm-us.net/o1/vault/gdc10/slides/Johnson_Eric... · 2010. 3. 19. · Sales / Piracy ‣ Just over 115,000 units in 5 months

$2.99 (Gasp)

‣ “Rarely do I feel ripped of in the app store”

‣ “It should be free, or no more than .99”

‣ “Worth every penny”

‣ “This game is a value at $3”

Page 19: New Falling to your Death: The CANABALT Postmortemtwvideo01.ubm-us.net/o1/vault/gdc10/slides/Johnson_Eric... · 2010. 3. 19. · Sales / Piracy ‣ Just over 115,000 units in 5 months

$2.99 (Gasp)

★★★★★★★★★★★★★★★

★★★★★★★★★★★★★★★

★★★★★★★★★★★★★★★

Canabalt A Top 10 0.99 Game A Top 10 Free Game

Page 20: New Falling to your Death: The CANABALT Postmortemtwvideo01.ubm-us.net/o1/vault/gdc10/slides/Johnson_Eric... · 2010. 3. 19. · Sales / Piracy ‣ Just over 115,000 units in 5 months

$2.99 (Gasp)

‣ generally must be a dollar to make it to top 10

‣ must be more than a dollar to sustain a company outside of the top 10

Page 21: New Falling to your Death: The CANABALT Postmortemtwvideo01.ubm-us.net/o1/vault/gdc10/slides/Johnson_Eric... · 2010. 3. 19. · Sales / Piracy ‣ Just over 115,000 units in 5 months

iPhone Port

Page 22: New Falling to your Death: The CANABALT Postmortemtwvideo01.ubm-us.net/o1/vault/gdc10/slides/Johnson_Eric... · 2010. 3. 19. · Sales / Piracy ‣ Just over 115,000 units in 5 months

Canabalt on the iPhone‣ Flash version of Canabalt built around flixel

‣ 2D game library for Flash

‣ iPhone port of Canabalt includes a quick port of the flixel library

‣ very quick and dirty, porting work for flixel and Canabalt completed in just under 2 weeks

‣ Objective-C only, no C++

‣ Objective-C can be a very productive language once you get the hang of it

Page 23: New Falling to your Death: The CANABALT Postmortemtwvideo01.ubm-us.net/o1/vault/gdc10/slides/Johnson_Eric... · 2010. 3. 19. · Sales / Piracy ‣ Just over 115,000 units in 5 months

Flixel‣ Rapid Game prototyping

‣ Strengths

‣ anyone can quickly and cheaply make games anywhere, just need Flash

‣ Weaknesses

‣ 3D, physics, and tweening all have to be done using external libraries

‣ current implementation limited to Flash

Page 24: New Falling to your Death: The CANABALT Postmortemtwvideo01.ubm-us.net/o1/vault/gdc10/slides/Johnson_Eric... · 2010. 3. 19. · Sales / Piracy ‣ Just over 115,000 units in 5 months

Optimizations

Page 25: New Falling to your Death: The CANABALT Postmortemtwvideo01.ubm-us.net/o1/vault/gdc10/slides/Johnson_Eric... · 2010. 3. 19. · Sales / Piracy ‣ Just over 115,000 units in 5 months

OpenGL Optimization‣ Transparent objects infrequent

‣ menu page only in Canabalt

‣ Dynamically check whether to enable Alpha blendingif (alpha != 1.0) { glEnableClientState(GL_COLOR_ARRAY); glColorPointer(4, GL_UNSIGNED_BYTE, 0, colors);}//glVertexPointer, glTexCoordPointer, glDrawArraysif (alpha != 1.0) glDisableClientState(GL_COLOR_ARRAY);

Page 26: New Falling to your Death: The CANABALT Postmortemtwvideo01.ubm-us.net/o1/vault/gdc10/slides/Johnson_Eric... · 2010. 3. 19. · Sales / Piracy ‣ Just over 115,000 units in 5 months

OpenGL Optimization‣ Interleaved vertices and texture coordinates,

GLshort instead of GLfloat

#define TEX_SCALE (512.0)#define SCALE_TEX(t) ((GLshort)((t)*TEX_SCALE))...glMatrixMode(GL_TEXTURE);glLoadIdentity();glScalef(1/TEX_SCALE, 1/TEX_SCALE, 1.0);...

vertsCoords[i] = SCALE_TEX(20.0);...glVertexPointer(2, GL_SHORT, sizeof(GLshort)*4, &(vertsCoords[0]));glTexCoordPointer(2, GL_SHORT, sizeof(GLshort)*4, &(vertsCoords[2]));

Page 27: New Falling to your Death: The CANABALT Postmortemtwvideo01.ubm-us.net/o1/vault/gdc10/slides/Johnson_Eric... · 2010. 3. 19. · Sales / Piracy ‣ Just over 115,000 units in 5 months

Memory Optimization‣ For a finite group of objects that are used over and

over again (e.g. doves)

‣ statically allocate pool of objects in memory

+ (void) initialize {doves = malloc(sizeof(Dove *) * doveCount);for (int i=0; i<doveCount; ++i)doves[i] = [[Dove alloc] init];

}

‣ override retain/release methods, create an allocator- (id) retain { rtnCnt++; return self; }- (oneway void) release { if (--rtnCnt == 0) freeDove(); }+ (id) dove { return nextAvailableDove(); }

Page 28: New Falling to your Death: The CANABALT Postmortemtwvideo01.ubm-us.net/o1/vault/gdc10/slides/Johnson_Eric... · 2010. 3. 19. · Sales / Piracy ‣ Just over 115,000 units in 5 months

Special Announcement

Page 29: New Falling to your Death: The CANABALT Postmortemtwvideo01.ubm-us.net/o1/vault/gdc10/slides/Johnson_Eric... · 2010. 3. 19. · Sales / Piracy ‣ Just over 115,000 units in 5 months

Flixel for iPhone‣ Public release of flixel for iPhone nearing completion

‣ Rudimentary Actionscript 3 to Objective-C translator, to accelerate iPhone ports of flixel games

‣ will not translate just any generic Actionscript 3 program

‣ does not yet produce 100% compilable code (but hopefully will soon)

‣ but it gets you maybe 90% of the way!

‣ Private beta release very soon, with a public release to follow

‣ email [email protected] to be notified

Page 30: New Falling to your Death: The CANABALT Postmortemtwvideo01.ubm-us.net/o1/vault/gdc10/slides/Johnson_Eric... · 2010. 3. 19. · Sales / Piracy ‣ Just over 115,000 units in 5 months

Questions?