Becoming Indie

  • 796 views
Uploaded on

Noel Llopis - Becoming Indie. 360|iDev san Jose '09

Noel Llopis - Becoming Indie. 360|iDev san Jose '09

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
796
On Slideshare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
17
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Becoming Indie A Professional Game Developer Change To The iPhone Noel Llopis Snappy Touch http://snappytouch.com Tuesday, March 3, 2009
  • 2. Tuesday, March 3, 2009
  • 3. Tuesday, March 3, 2009
  • 4. Tuesday, March 3, 2009
  • 5. Team Sizes 300 225 150 75 0 1998 2000 2002 2004 2006 2008 Programmers Developers Tuesday, March 3, 2009
  • 6. Tuesday, March 3, 2009
  • 7. Tuesday, March 3, 2009
  • 8. Part I: What’s Inside? Tuesday, March 3, 2009
  • 9. Hardware Specs Tuesday, March 3, 2009
  • 10. Hardware Specs • CPU: 32-bit RISC ARM Tuesday, March 3, 2009
  • 11. Hardware Specs • CPU: 32-bit RISC ARM • Memory: 128 MB RAM Tuesday, March 3, 2009
  • 12. Hardware Specs • CPU: 32-bit RISC ARM • Memory: 128 MB RAM • Graphics: PowerVR MBX Lite Tuesday, March 3, 2009
  • 13. Hardware Specs • CPU: 32-bit RISC ARM • Memory: 128 MB RAM • Graphics: PowerVR MBX Lite • Extra features: Multi-touch screen, GPS, camera, accelerometer, WiFi, microphone. Tuesday, March 3, 2009
  • 14. Development Tools Tuesday, March 3, 2009
  • 15. Development Tools • XCode. Great IDE Tuesday, March 3, 2009
  • 16. Development Tools • XCode. Great IDE • Familiar tools: gcc, gdb Tuesday, March 3, 2009
  • 17. Development Tools • XCode. Great IDE • Familiar tools: gcc, gdb • Great performance and analysis tools: Instruments Tuesday, March 3, 2009
  • 18. Programming Language Most iPhone-related stuff in Objective C Tuesday, March 3, 2009
  • 19. Programming Language Most iPhone-related stuff in Objective C ... but you can write all C and C++ you want! Tuesday, March 3, 2009
  • 20. Programming language You can even write assembly if you want! void MyFunction() { // do some stuff int value = 57; asm volatile ( quot;mov %0, %0, ror #1quot; : quot;=rquot; (value) : quot;0quot; (value) ); } Tuesday, March 3, 2009
  • 21. Unit Testing Tuesday, March 3, 2009
  • 22. Unit Testing • Any C/C++ unit-testing framework Tuesday, March 3, 2009
  • 23. Unit Testing • Any C/C++ unit-testing framework • Biased towards UnitTest++ of course (http://unittest-cpp.sourceforge.net/) Tuesday, March 3, 2009
  • 24. Unit Testing • Any C/C++ unit-testing framework • Biased towards UnitTest++ of course (http://unittest-cpp.sourceforge.net/) • How to get it to run as a postbuild step? Tuesday, March 3, 2009
  • 25. Unit Testing • Any C/C++ unit-testing framework • Biased towards UnitTest++ of course (http://unittest-cpp.sourceforge.net/) • How to get it to run as a postbuild step? • Google toolbox for Mac (http:// code.google.com/p/google-toolbox-for-mac/ wiki/iPhoneUnitTesting) Tuesday, March 3, 2009
  • 26. Unit Testing Tuesday, March 3, 2009
  • 27. Unit Testing • Run script as part of build process. Tuesday, March 3, 2009
  • 28. Unit Testing • Run script as part of build process. • Build and you’re done. Tuesday, March 3, 2009
  • 29. Unit Testing • Run script as part of build process. • Build and you’re done. • Super fast in simulator. Tuesday, March 3, 2009
  • 30. Unit Testing Tuesday, March 3, 2009
  • 31. Unit Testing • Also frameworks for Objective C: OCUnit, SenTestingKit Tuesday, March 3, 2009
  • 32. Unit Testing • Also frameworks for Objective C: OCUnit, SenTestingKit • I haven’t used them yet Tuesday, March 3, 2009
  • 33. Unit Testing • Also frameworks for Objective C: OCUnit, SenTestingKit • I haven’t used them yet • Some people modified UnitTest++ to work with Objective C Tuesday, March 3, 2009
  • 34. Unit Testing • Also frameworks for Objective C: OCUnit, SenTestingKit • I haven’t used them yet • Some people modified UnitTest++ to work with Objective C • Also mock frameworks: OCMock Tuesday, March 3, 2009
  • 35. Build Servers Tuesday, March 3, 2009
  • 36. Build Servers • Continuous integration was a key practice in large teams. Tuesday, March 3, 2009
  • 37. Build Servers • Continuous integration was a key practice in large teams. • Even with a one or two-man team it was extremely useful. Tuesday, March 3, 2009
  • 38. Build Servers • Continuous integration was a key practice in large teams. • Even with a one or two-man team it was extremely useful. • CruiseControl or Hudson Tuesday, March 3, 2009
  • 39. CPU Tuesday, March 3, 2009
  • 40. CPU • CPU: 32-bit RISC ARM Tuesday, March 3, 2009
  • 41. CPU • CPU: 32-bit RISC ARM • iPhone @ 412MHz Tuesday, March 3, 2009
  • 42. CPU • CPU: 32-bit RISC ARM • iPhone @ 412MHz • iPod Touch @ 535MHz Tuesday, March 3, 2009
  • 43. CPU • CPU: 32-bit RISC ARM • iPhone @ 412MHz • iPod Touch @ 535MHz • Can go as high as 620MHz Tuesday, March 3, 2009
  • 44. Floating Point Tuesday, March 3, 2009
  • 45. Floating Point • The main CPU has no floating point support. Tuesday, March 3, 2009
  • 46. Floating Point • The main CPU has no floating point support. • Compiled C/C++/OC code uses the vector floating point unit for any floating point operations. Tuesday, March 3, 2009
  • 47. Thumb Mode Tuesday, March 3, 2009
  • 48. Thumb Mode • CPU has a special thumb mode. Tuesday, March 3, 2009
  • 49. Thumb Mode • CPU has a special thumb mode. • Less memory, maybe better performance. Tuesday, March 3, 2009
  • 50. Thumb Mode • CPU has a special thumb mode. • Less memory, maybe better performance. • No floating point support. Tuesday, March 3, 2009
  • 51. Thumb Mode • CPU has a special thumb mode. • Less memory, maybe better performance. • No floating point support. • It’s on by default! Tuesday, March 3, 2009
  • 52. Thumb Mode • CPU has a special thumb mode. • Less memory, maybe better performance. • No floating point support. • It’s on by default! • Potentially HUGE wins turning it off. Tuesday, March 3, 2009
  • 53. Thumb Mode • CPU has a special thumb mode. • Less memory, maybe better performance. • No floating point support. • It’s on by default! • Potentially HUGE wins turning it off. Tuesday, March 3, 2009
  • 54. Floating Point Tuesday, March 3, 2009
  • 55. Floating Point • The VFP stands for “vector” Tuesday, March 3, 2009
  • 56. Floating Point • The VFP stands for “vector” • Work on up to four 32-bit floating point numbers at once. Tuesday, March 3, 2009
  • 57. Floating Point • The VFP stands for “vector” • Work on up to four 32-bit floating point numbers at once. • The compiler won’t help you though. Tuesday, March 3, 2009
  • 58. Floating Point • The VFP stands for “vector” • Work on up to four 32-bit floating point numbers at once. • The compiler won’t help you though. • See the vfpmath library in Google Code Tuesday, March 3, 2009
  • 59. Memory Tuesday, March 3, 2009
  • 60. Memory • 128 MB RAM Tuesday, March 3, 2009
  • 61. Memory • 128 MB RAM • 11 MB for video Tuesday, March 3, 2009
  • 62. Memory • 128 MB RAM • 11 MB for video • System can use up to half of that. Tuesday, March 3, 2009
  • 63. Memory • 128 MB RAM • 11 MB for video • System can use up to half of that. Video 11 OS 64 Your app 53 Tuesday, March 3, 2009
  • 64. Graphics Tuesday, March 3, 2009
  • 65. Graphics • 320x240 resolution Tuesday, March 3, 2009
  • 66. Graphics • 320x240 resolution • OpenGL ES 1.1 API + a few extensions Tuesday, March 3, 2009
  • 67. Graphics • 320x240 resolution • OpenGL ES 1.1 API + a few extensions • OpenGL great for 3D but also 2D games with need for performance. Tuesday, March 3, 2009
  • 68. Graphics Hardware Tuesday, March 3, 2009
  • 69. Graphics Hardware • PowerVR MBX Lite: Texturing and rasterization Tuesday, March 3, 2009
  • 70. Graphics Hardware • PowerVR MBX Lite: Texturing and rasterization • PowerVR VGP Lite: Vertex processing. Tuesday, March 3, 2009
  • 71. Graphics Hardware • PowerVR MBX Lite: Texturing and rasterization • PowerVR VGP Lite: Vertex processing. • No shaders! Tuesday, March 3, 2009
  • 72. Graphics Hardware • PowerVR MBX Lite: Texturing and rasterization • PowerVR VGP Lite: Vertex processing. • No shaders! • Tile-based Tuesday, March 3, 2009
  • 73. Graphics Hardware Tuesday, March 3, 2009
  • 74. Graphics Hardware • Triangles per second: 500K/sec (16K polys per frame at 30fps) Tuesday, March 3, 2009
  • 75. Graphics Hardware • Triangles per second: 500K/sec (16K polys per frame at 30fps) • Fill rate: 25 million pixel per second (5.4 screen redraws per frame at 30fps) Tuesday, March 3, 2009
  • 76. OpenGL ES Extensions Tuesday, March 3, 2009
  • 77. OpenGL ES Extensions • Frame buffer objects Tuesday, March 3, 2009
  • 78. OpenGL ES Extensions • Frame buffer objects • Memory mapped vertex buffers Tuesday, March 3, 2009
  • 79. OpenGL ES Extensions • Frame buffer objects • Memory mapped vertex buffers • Point sprites Tuesday, March 3, 2009
  • 80. OpenGL ES Extensions • Frame buffer objects • Memory mapped vertex buffers • Point sprites • PVRTC texture format Tuesday, March 3, 2009
  • 81. OpenGL ES Extensions • Frame buffer objects 1 #define GL_EXT_texture_filter_anisotropic 1 #define GL_EXT_texture_lod_bias #define GL_IMG_read_format 1 • 1 #define GL_IMG_texture_compression_pvrtc Memory mapped vertex 1 #define GL_IMG_texture_format_BGRA8888 buffers 1 #define GL_OES_blend_subtract 1 #define GL_OES_depth24 #define GL_OES_framebuffer_object 1 • Point sprites 1 #define GL_OES_mapbuffer 1 #define GL_OES_rgb8_rgba8 1 #define GL_OES_texture_mirrored_repeat • PVRTC texture format Tuesday, March 3, 2009
  • 82. Texture Combiners Tuesday, March 3, 2009
  • 83. Texture Combiners • Two texture units Tuesday, March 3, 2009
  • 84. Texture Combiners • Two texture units • Multi-texturing Tuesday, March 3, 2009
  • 85. Texture Combiners • Two texture units • Multi-texturing • Per-pixel lighting Tuesday, March 3, 2009
  • 86. Texture Combiners • Two texture units • Multi-texturing • Per-pixel lighting • Many interesting effects Tuesday, March 3, 2009
  • 87. OpenGL And UIKit Tuesday, March 3, 2009
  • 88. OpenGL And UIKit • They mix, but not perfectly Tuesday, March 3, 2009
  • 89. OpenGL And UIKit • They mix, but not perfectly • UIKit on top of OpenGL can cause performance issues Tuesday, March 3, 2009
  • 90. OpenGL And UIKit • They mix, but not perfectly • UIKit on top of OpenGL can cause performance issues • Can have OpenGL views in a regular app Tuesday, March 3, 2009
  • 91. OpenGL And UIKit • They mix, but not perfectly • UIKit on top of OpenGL can cause performance issues • Can have OpenGL views in a regular app • Multiple OpenGL views possible too. Tuesday, March 3, 2009
  • 92. OpenGL And UIKit • They mix, but not perfectly • UIKit on top of OpenGL can cause performance issues • Can have OpenGL views in a regular app • Multiple OpenGL views possible too. Tuesday, March 3, 2009
  • 93. Audio Tuesday, March 3, 2009
  • 94. Audio • Several APIs: OpenAL, Audio Sessions, or AVAudioPlayer (2.2 SDK) Tuesday, March 3, 2009
  • 95. Audio • Several APIs: OpenAL, Audio Sessions, or AVAudioPlayer (2.2 SDK) • Custom music is huge. Let people play their tunes. Tuesday, March 3, 2009
  • 96. Comparison Tuesday, March 3, 2009
  • 97. Comparison Tuesday, March 3, 2009
  • 98. Comparison Tuesday, March 3, 2009
  • 99. Comparison Tuesday, March 3, 2009
  • 100. Why We iPhone PSN Flash PC Consoles Phones iPhone XBLA Short timeframes x ? x x Small budgets x ? x x Unified platform x x x x Powerful hardware ? x x x Great tools x x x x x Large audience x x x x x Easy payments x x x Direct access to users x x x Development access x x x Tuesday, March 3, 2009
  • 101. Tuesday, March 3, 2009
  • 102. Part II: Developing Games Tuesday, March 3, 2009
  • 103. Asset Pipeline Tuesday, March 3, 2009
  • 104. Asset Pipeline • Huge deal in large teams Tuesday, March 3, 2009
  • 105. Asset Pipeline • Huge deal in large teams • Not as much of a big deal for a single developer (or small team) Tuesday, March 3, 2009
  • 106. Asset Pipeline • Huge deal in large teams • Not as much of a big deal for a single developer (or small team) • Put whatever assets in XCode and let it bundle it with the rest of the app. Tuesday, March 3, 2009
  • 107. Asset Pipeline Tuesday, March 3, 2009
  • 108. Asset Pipeline • If you have some dedicated artists, or especially contractors, they need to run XCode to see new content. Tuesday, March 3, 2009
  • 109. Asset Pipeline • If you have some dedicated artists, or especially contractors, they need to run XCode to see new content. • Set up a small web server locally (simple python script) and have the app try to load from there first. Tuesday, March 3, 2009
  • 110. Baking resources Tuesday, March 3, 2009
  • 111. Baking resources • You want to bake resources to their final format for fast load times. Tuesday, March 3, 2009
  • 112. Baking resources • You want to bake resources to their final format for fast load times. • Textures: texturetool Tuesday, March 3, 2009
  • 113. Baking resources • You want to bake resources to their final format for fast load times. • Textures: texturetool • Sound: afconvert Tuesday, March 3, 2009
  • 114. Baking resources • You want to bake resources to their final format for fast load times. • Textures: texturetool • Sound: afconvert • 3D models:You’re on your own Tuesday, March 3, 2009
  • 115. Assets Tuesday, March 3, 2009
  • 116. Assets • iPhone games have much smaller asset sizes than current PC/console games. Tuesday, March 3, 2009
  • 117. Assets • iPhone games have much smaller asset sizes than current PC/console games. • Most iPhone games are under 30MB. DVD- based games fill up all 8GB. Tuesday, March 3, 2009
  • 118. Assets • iPhone games have much smaller asset sizes than current PC/console games. • Most iPhone games are under 30MB. DVD- based games fill up all 8GB. • Source assets probably add up to 200-300MB. Makes asset management and version control a lot simpler. Tuesday, March 3, 2009
  • 119. Data-Driven Games Tuesday, March 3, 2009
  • 120. Data-Driven Games • AAA games with huge teams are almost fully data driven. Tuesday, March 3, 2009
  • 121. Data-Driven Games • AAA games with huge teams are almost fully data driven. • HUGE amount of overhead in terms of performance, work, and complexity! Tuesday, March 3, 2009
  • 122. Data-Driven Games • AAA games with huge teams are almost fully data driven. • HUGE amount of overhead in terms of performance, work, and complexity! • Makes sense with 30 programmers and 150 content creators. Tuesday, March 3, 2009
  • 123. Tuesday, March 3, 2009
  • 124. Data-Driven Games Tuesday, March 3, 2009
  • 125. Data-Driven Games • With small iPhone games, not so much. Tuesday, March 3, 2009
  • 126. Data-Driven Games • With small iPhone games, not so much. • Fast build times, so changing data is easy. Tuesday, March 3, 2009
  • 127. Data-Driven Games • With small iPhone games, not so much. • Fast build times, so changing data is easy. • Expose assets, simple variables, level layout. Tuesday, March 3, 2009
  • 128. Tuesday, March 3, 2009
  • 129. Tuesday, March 3, 2009
  • 130. More Than Programming Tuesday, March 3, 2009
  • 131. More Than Programming • Programming is only part of it.You wear many hats! Tuesday, March 3, 2009
  • 132. More Than Programming • Programming is only part of it.You wear many hats! • Designer, of course but also... Tuesday, March 3, 2009
  • 133. More Than Programming • Programming is only part of it.You wear many hats! • Designer, of course but also... • Public relations, producer, testing coordinator, contractor manager, content creator, web developer, video editor, etc, etc. Tuesday, March 3, 2009
  • 134. Content Creation Tuesday, March 3, 2009
  • 135. Content Creation • Most projects need multiple people for content creation: UI elements, textures, models, animations, audio. Tuesday, March 3, 2009
  • 136. Content Creation • Most projects need multiple people for content creation: UI elements, textures, models, animations, audio. • Contracting works well for some of the content. Tuesday, March 3, 2009
  • 137. Tuesday, March 3, 2009
  • 138. PR Tuesday, March 3, 2009
  • 139. PR • Creating a great app is half the battle. Tuesday, March 3, 2009
  • 140. PR • Creating a great app is half the battle. • PR is the other half. Tuesday, March 3, 2009
  • 141. PR • Creating a great app is half the battle. • PR is the other half. • Extremely time consuming and hard to do effectively. Tuesday, March 3, 2009
  • 142. PR • Creating a great app is half the battle. • PR is the other half. • Extremely time consuming and hard to do effectively. • Build grass-roots support. Add viral components to your app. Tuesday, March 3, 2009
  • 143. PR • Creating a great app is half the battle. • PR is the other half. • Extremely time consuming and hard to do effectively. • Build grass-roots support. Add viral components to your app. • Good reason to use a publisher. Tuesday, March 3, 2009
  • 144. Part III: The Future Tuesday, March 3, 2009
  • 145. Tuesday, March 3, 2009
  • 146. Tuesday, March 3, 2009
  • 147. Tuesday, March 3, 2009
  • 148. Tuesday, March 3, 2009
  • 149. Tuesday, March 3, 2009
  • 150. • The big guys are coming to play. Tuesday, March 3, 2009
  • 151. • The big guys are coming to play. • They’ll be able to throw many more resources and make a difference. Tuesday, March 3, 2009
  • 152. Tuesday, March 3, 2009
  • 153. • Rumours of a premium App Store area. Tuesday, March 3, 2009
  • 154. • Rumours of a premium App Store area. • Big companies + big games = Bigger price tags Tuesday, March 3, 2009
  • 155. • Rumours of a premium App Store area. • Big companies + big games = Bigger price tags • What will it mean for us indies? Tuesday, March 3, 2009
  • 156. Tuesday, March 3, 2009
  • 157. 15+ million iPhones and growing Tuesday, March 3, 2009
  • 158. Tuesday, March 3, 2009
  • 159. Tuesday, March 3, 2009
  • 160. Thank you! Tuesday, March 3, 2009
  • 161. Questions? Noel Llopis noel@snappytouch.com Snappy Touch Tuesday, March 3, 2009
  • 162. Questions? Slides will be available from my blog Games from Within (http://gamesfromwithin.com) Noel Llopis noel@snappytouch.com Snappy Touch Tuesday, March 3, 2009