Becoming Indie

1,030 views
954 views

Published on

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

Published in: Technology, News & Politics
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,030
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
19
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Becoming Indie

  1. 1. Becoming Indie A Professional Game Developer Change To The iPhone Noel Llopis Snappy Touch http://snappytouch.com Tuesday, March 3, 2009
  2. 2. Tuesday, March 3, 2009
  3. 3. Tuesday, March 3, 2009
  4. 4. Tuesday, March 3, 2009
  5. 5. Team Sizes 300 225 150 75 0 1998 2000 2002 2004 2006 2008 Programmers Developers Tuesday, March 3, 2009
  6. 6. Tuesday, March 3, 2009
  7. 7. Tuesday, March 3, 2009
  8. 8. Part I: What’s Inside? Tuesday, March 3, 2009
  9. 9. Hardware Specs Tuesday, March 3, 2009
  10. 10. Hardware Specs • CPU: 32-bit RISC ARM Tuesday, March 3, 2009
  11. 11. Hardware Specs • CPU: 32-bit RISC ARM • Memory: 128 MB RAM Tuesday, March 3, 2009
  12. 12. Hardware Specs • CPU: 32-bit RISC ARM • Memory: 128 MB RAM • Graphics: PowerVR MBX Lite Tuesday, March 3, 2009
  13. 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. 14. Development Tools Tuesday, March 3, 2009
  15. 15. Development Tools • XCode. Great IDE Tuesday, March 3, 2009
  16. 16. Development Tools • XCode. Great IDE • Familiar tools: gcc, gdb Tuesday, March 3, 2009
  17. 17. Development Tools • XCode. Great IDE • Familiar tools: gcc, gdb • Great performance and analysis tools: Instruments Tuesday, March 3, 2009
  18. 18. Programming Language Most iPhone-related stuff in Objective C Tuesday, March 3, 2009
  19. 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. 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. 21. Unit Testing Tuesday, March 3, 2009
  22. 22. Unit Testing • Any C/C++ unit-testing framework Tuesday, March 3, 2009
  23. 23. Unit Testing • Any C/C++ unit-testing framework • Biased towards UnitTest++ of course (http://unittest-cpp.sourceforge.net/) Tuesday, March 3, 2009
  24. 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. 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. 26. Unit Testing Tuesday, March 3, 2009
  27. 27. Unit Testing • Run script as part of build process. Tuesday, March 3, 2009
  28. 28. Unit Testing • Run script as part of build process. • Build and you’re done. Tuesday, March 3, 2009
  29. 29. Unit Testing • Run script as part of build process. • Build and you’re done. • Super fast in simulator. Tuesday, March 3, 2009
  30. 30. Unit Testing Tuesday, March 3, 2009
  31. 31. Unit Testing • Also frameworks for Objective C: OCUnit, SenTestingKit Tuesday, March 3, 2009
  32. 32. Unit Testing • Also frameworks for Objective C: OCUnit, SenTestingKit • I haven’t used them yet Tuesday, March 3, 2009
  33. 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. 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. 35. Build Servers Tuesday, March 3, 2009
  36. 36. Build Servers • Continuous integration was a key practice in large teams. Tuesday, March 3, 2009
  37. 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. 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. 39. CPU Tuesday, March 3, 2009
  40. 40. CPU • CPU: 32-bit RISC ARM Tuesday, March 3, 2009
  41. 41. CPU • CPU: 32-bit RISC ARM • iPhone @ 412MHz Tuesday, March 3, 2009
  42. 42. CPU • CPU: 32-bit RISC ARM • iPhone @ 412MHz • iPod Touch @ 535MHz Tuesday, March 3, 2009
  43. 43. CPU • CPU: 32-bit RISC ARM • iPhone @ 412MHz • iPod Touch @ 535MHz • Can go as high as 620MHz Tuesday, March 3, 2009
  44. 44. Floating Point Tuesday, March 3, 2009
  45. 45. Floating Point • The main CPU has no floating point support. Tuesday, March 3, 2009
  46. 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. 47. Thumb Mode Tuesday, March 3, 2009
  48. 48. Thumb Mode • CPU has a special thumb mode. Tuesday, March 3, 2009
  49. 49. Thumb Mode • CPU has a special thumb mode. • Less memory, maybe better performance. Tuesday, March 3, 2009
  50. 50. Thumb Mode • CPU has a special thumb mode. • Less memory, maybe better performance. • No floating point support. Tuesday, March 3, 2009
  51. 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. 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. 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. 54. Floating Point Tuesday, March 3, 2009
  55. 55. Floating Point • The VFP stands for “vector” Tuesday, March 3, 2009
  56. 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. 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. 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. 59. Memory Tuesday, March 3, 2009
  60. 60. Memory • 128 MB RAM Tuesday, March 3, 2009
  61. 61. Memory • 128 MB RAM • 11 MB for video Tuesday, March 3, 2009
  62. 62. Memory • 128 MB RAM • 11 MB for video • System can use up to half of that. Tuesday, March 3, 2009
  63. 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. 64. Graphics Tuesday, March 3, 2009
  65. 65. Graphics • 320x240 resolution Tuesday, March 3, 2009
  66. 66. Graphics • 320x240 resolution • OpenGL ES 1.1 API + a few extensions Tuesday, March 3, 2009
  67. 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. 68. Graphics Hardware Tuesday, March 3, 2009
  69. 69. Graphics Hardware • PowerVR MBX Lite: Texturing and rasterization Tuesday, March 3, 2009
  70. 70. Graphics Hardware • PowerVR MBX Lite: Texturing and rasterization • PowerVR VGP Lite: Vertex processing. Tuesday, March 3, 2009
  71. 71. Graphics Hardware • PowerVR MBX Lite: Texturing and rasterization • PowerVR VGP Lite: Vertex processing. • No shaders! Tuesday, March 3, 2009
  72. 72. Graphics Hardware • PowerVR MBX Lite: Texturing and rasterization • PowerVR VGP Lite: Vertex processing. • No shaders! • Tile-based Tuesday, March 3, 2009
  73. 73. Graphics Hardware Tuesday, March 3, 2009
  74. 74. Graphics Hardware • Triangles per second: 500K/sec (16K polys per frame at 30fps) Tuesday, March 3, 2009
  75. 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. 76. OpenGL ES Extensions Tuesday, March 3, 2009
  77. 77. OpenGL ES Extensions • Frame buffer objects Tuesday, March 3, 2009
  78. 78. OpenGL ES Extensions • Frame buffer objects • Memory mapped vertex buffers Tuesday, March 3, 2009
  79. 79. OpenGL ES Extensions • Frame buffer objects • Memory mapped vertex buffers • Point sprites Tuesday, March 3, 2009
  80. 80. OpenGL ES Extensions • Frame buffer objects • Memory mapped vertex buffers • Point sprites • PVRTC texture format Tuesday, March 3, 2009
  81. 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. 82. Texture Combiners Tuesday, March 3, 2009
  83. 83. Texture Combiners • Two texture units Tuesday, March 3, 2009
  84. 84. Texture Combiners • Two texture units • Multi-texturing Tuesday, March 3, 2009
  85. 85. Texture Combiners • Two texture units • Multi-texturing • Per-pixel lighting Tuesday, March 3, 2009
  86. 86. Texture Combiners • Two texture units • Multi-texturing • Per-pixel lighting • Many interesting effects Tuesday, March 3, 2009
  87. 87. OpenGL And UIKit Tuesday, March 3, 2009
  88. 88. OpenGL And UIKit • They mix, but not perfectly Tuesday, March 3, 2009
  89. 89. OpenGL And UIKit • They mix, but not perfectly • UIKit on top of OpenGL can cause performance issues Tuesday, March 3, 2009
  90. 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. 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. 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. 93. Audio Tuesday, March 3, 2009
  94. 94. Audio • Several APIs: OpenAL, Audio Sessions, or AVAudioPlayer (2.2 SDK) Tuesday, March 3, 2009
  95. 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. 96. Comparison Tuesday, March 3, 2009
  97. 97. Comparison Tuesday, March 3, 2009
  98. 98. Comparison Tuesday, March 3, 2009
  99. 99. Comparison Tuesday, March 3, 2009
  100. 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. 101. Tuesday, March 3, 2009
  102. 102. Part II: Developing Games Tuesday, March 3, 2009
  103. 103. Asset Pipeline Tuesday, March 3, 2009
  104. 104. Asset Pipeline • Huge deal in large teams Tuesday, March 3, 2009
  105. 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. 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. 107. Asset Pipeline Tuesday, March 3, 2009
  108. 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. 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. 110. Baking resources Tuesday, March 3, 2009
  111. 111. Baking resources • You want to bake resources to their final format for fast load times. Tuesday, March 3, 2009
  112. 112. Baking resources • You want to bake resources to their final format for fast load times. • Textures: texturetool Tuesday, March 3, 2009
  113. 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. 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. 115. Assets Tuesday, March 3, 2009
  116. 116. Assets • iPhone games have much smaller asset sizes than current PC/console games. Tuesday, March 3, 2009
  117. 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. 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. 119. Data-Driven Games Tuesday, March 3, 2009
  120. 120. Data-Driven Games • AAA games with huge teams are almost fully data driven. Tuesday, March 3, 2009
  121. 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. 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. 123. Tuesday, March 3, 2009
  124. 124. Data-Driven Games Tuesday, March 3, 2009
  125. 125. Data-Driven Games • With small iPhone games, not so much. Tuesday, March 3, 2009
  126. 126. Data-Driven Games • With small iPhone games, not so much. • Fast build times, so changing data is easy. Tuesday, March 3, 2009
  127. 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. 128. Tuesday, March 3, 2009
  129. 129. Tuesday, March 3, 2009
  130. 130. More Than Programming Tuesday, March 3, 2009
  131. 131. More Than Programming • Programming is only part of it.You wear many hats! Tuesday, March 3, 2009
  132. 132. More Than Programming • Programming is only part of it.You wear many hats! • Designer, of course but also... Tuesday, March 3, 2009
  133. 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. 134. Content Creation Tuesday, March 3, 2009
  135. 135. Content Creation • Most projects need multiple people for content creation: UI elements, textures, models, animations, audio. Tuesday, March 3, 2009
  136. 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. 137. Tuesday, March 3, 2009
  138. 138. PR Tuesday, March 3, 2009
  139. 139. PR • Creating a great app is half the battle. Tuesday, March 3, 2009
  140. 140. PR • Creating a great app is half the battle. • PR is the other half. Tuesday, March 3, 2009
  141. 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. 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. 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. 144. Part III: The Future Tuesday, March 3, 2009
  145. 145. Tuesday, March 3, 2009
  146. 146. Tuesday, March 3, 2009
  147. 147. Tuesday, March 3, 2009
  148. 148. Tuesday, March 3, 2009
  149. 149. Tuesday, March 3, 2009
  150. 150. • The big guys are coming to play. Tuesday, March 3, 2009
  151. 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. 152. Tuesday, March 3, 2009
  153. 153. • Rumours of a premium App Store area. Tuesday, March 3, 2009
  154. 154. • Rumours of a premium App Store area. • Big companies + big games = Bigger price tags Tuesday, March 3, 2009
  155. 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. 156. Tuesday, March 3, 2009
  157. 157. 15+ million iPhones and growing Tuesday, March 3, 2009
  158. 158. Tuesday, March 3, 2009
  159. 159. Tuesday, March 3, 2009
  160. 160. Thank you! Tuesday, March 3, 2009
  161. 161. Questions? Noel Llopis noel@snappytouch.com Snappy Touch Tuesday, March 3, 2009
  162. 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

×