0
Becoming Indie
                  A Professional Game Developer Change
                              To The iPhone

       ...
Tuesday, March 3, 2009
Tuesday, March 3, 2009
Tuesday, March 3, 2009
1998: 12 people - 1 year




Tuesday, March 3, 2009
1998




                           2001: 24 people - 2 years

Tuesday, March 3, 2009
1998


                         2001




                                2005: 100 people 2.5 years

Tuesday, March 3, 2009
1998

                   2001




                          2005



                                 2008: 200 people 3 ye...
1998

                   2001


   My previous
     startup
                          2005



                            ...
1998

                   2001


   My previous
     startup
                          2005

                          Now
...
Tuesday, March 3, 2009
Tuesday, March 3, 2009
Part I: What’s Inside?




Tuesday, March 3, 2009
Hardware Specs




Tuesday, March 3, 2009
Hardware Specs
                    • CPU: 32-bit RISC ARM




Tuesday, March 3, 2009
Hardware Specs
                    • CPU: 32-bit RISC ARM
                    • Memory: 128 MB RAM




Tuesday, March 3, 2...
Hardware Specs
                    • CPU: 32-bit RISC ARM
                    • Memory: 128 MB RAM
                    • G...
Hardware Specs
                    • CPU: 32-bit RISC ARM
                    • Memory: 128 MB RAM
                    • G...
Development Tools




Tuesday, March 3, 2009
Development Tools

           • XCode. Great IDE




Tuesday, March 3, 2009
Development Tools

           • XCode. Great IDE
           • Familiar tools: gcc, gdb




Tuesday, March 3, 2009
Development Tools

           • XCode. Great IDE
           • Familiar tools: gcc, gdb
           • Great performance
    ...
Programming Language
                         Most iPhone-related stuff in Objective C




Tuesday, March 3, 2009
Programming Language
                         Most iPhone-related stuff in Objective C




                         ... bu...
Programming language
                         You can even write assembly if you want!
                          void MyFu...
Unit Testing




Tuesday, March 3, 2009
Unit Testing
                    • Any C/C++ unit-testing framework




Tuesday, March 3, 2009
Unit Testing
                    • Any C/C++ unit-testing framework
                    • Biased towards UnitTest++ of cou...
Unit Testing
                    • Any C/C++ unit-testing framework
                    • Biased towards UnitTest++ of cou...
Unit Testing
                    • Any C/C++ unit-testing framework
                    • Biased towards UnitTest++ of cou...
Unit Testing




Tuesday, March 3, 2009
Unit Testing
                    •    Run script as part of
                         build process.




Tuesday, March 3, ...
Unit Testing
                    •    Run script as part of
                         build process.

                    •...
Unit Testing
                    •    Run script as part of
                         build process.

                    •...
Unit Testing




Tuesday, March 3, 2009
Unit Testing
                    • Also frameworks for Objective C: OCUnit,
                         SenTestingKit




Tue...
Unit Testing
                    • Also frameworks for Objective C: OCUnit,
                         SenTestingKit
       ...
Unit Testing
                    • Also frameworks for Objective C: OCUnit,
                         SenTestingKit
       ...
Unit Testing
                    • Also frameworks for Objective C: OCUnit,
                         SenTestingKit
       ...
Build Servers




Tuesday, March 3, 2009
Build Servers
                    • Continuous integration was a key practice
                         in large teams.



...
Build Servers
                    • Continuous integration was a key practice
                         in large teams.
   ...
Build Servers
                    • Continuous integration was a key practice
                         in large teams.
   ...
CPU




Tuesday, March 3, 2009
CPU

              •     CPU: 32-bit RISC ARM




Tuesday, March 3, 2009
CPU

              •     CPU: 32-bit RISC ARM

              •     iPhone @ 412MHz




Tuesday, March 3, 2009
CPU

              •     CPU: 32-bit RISC ARM

              •     iPhone @ 412MHz

              •     iPod Touch @ 535MH...
CPU

              •     CPU: 32-bit RISC ARM

              •     iPhone @ 412MHz

              •     iPod Touch @ 535MH...
Floating Point




Tuesday, March 3, 2009
Floating Point
              •     The main CPU has no
                    floating point support.




Tuesday, March 3, 20...
Floating Point
              •     The main CPU has no
                    floating point support.

              •     Com...
Thumb Mode




Tuesday, March 3, 2009
Thumb Mode
                             •   CPU has a special thumb
                                 mode.




Tuesday, Ma...
Thumb Mode
                             •   CPU has a special thumb
                                 mode.

              ...
Thumb Mode
                             •   CPU has a special thumb
                                 mode.

              ...
Thumb Mode
                             •   CPU has a special thumb
                                 mode.

              ...
Thumb Mode
                             •   CPU has a special thumb
                                 mode.

              ...
Thumb Mode
                             •   CPU has a special thumb
                                 mode.

              ...
Floating Point




Tuesday, March 3, 2009
Floating Point
              •     The VFP stands for “vector”




Tuesday, March 3, 2009
Floating Point
              •     The VFP stands for “vector”

              •     Work on up to four 32-bit
            ...
Floating Point
              •     The VFP stands for “vector”

              •     Work on up to four 32-bit
            ...
Floating Point
              •     The VFP stands for “vector”

              •     Work on up to four 32-bit
            ...
Memory




Tuesday, March 3, 2009
Memory
            • 128 MB RAM




Tuesday, March 3, 2009
Memory
            • 128 MB RAM
            • 11 MB for video




Tuesday, March 3, 2009
Memory
            • 128 MB RAM
            • 11 MB for video
            • System can use most of the
                   ...
Memory
            • 128 MB RAM
            • 11 MB for video
            • System can use most of the
                   ...
Graphics




Tuesday, March 3, 2009
Graphics
                    • 320x480 resolution




Tuesday, March 3, 2009
Graphics
                    • 320x480 resolution
                    • OpenGL ES 1.1 API + a few
                        ...
Graphics
                    • 320x480 resolution
                    • OpenGL ES 1.1 API + a few
                        ...
Graphics Hardware




Tuesday, March 3, 2009
Graphics Hardware
                    •    PowerVR MBX Lite:
                         Texturing and
                      ...
Graphics Hardware
                    •    PowerVR MBX Lite:
                         Texturing and
                      ...
Graphics Hardware
                    •    PowerVR MBX Lite:
                         Texturing and
                      ...
Graphics Hardware
                    •    PowerVR MBX Lite:
                         Texturing and
                      ...
Graphics Hardware




Tuesday, March 3, 2009
Graphics Hardware
                    •    Triangles per second:
                         500K/sec (16K polys per
        ...
Graphics Hardware
                    •    Triangles per second:
                         500K/sec (16K polys per
        ...
OpenGL ES Extensions




Tuesday, March 3, 2009
OpenGL ES Extensions
                    •    Frame buffer objects




Tuesday, March 3, 2009
OpenGL ES Extensions
                    •    Frame buffer objects

                    •    Memory mapped vertex
        ...
OpenGL ES Extensions
                    •    Frame buffer objects

                    •    Memory mapped vertex
        ...
OpenGL ES Extensions
                    •    Frame buffer objects

                    •    Memory mapped vertex
        ...
OpenGL ES Extensions
                    •    Frame buffer objects   1
                                                #de...
Texture Combiners




Tuesday, March 3, 2009
Texture Combiners
                •        Two texture units




Tuesday, March 3, 2009
Texture Combiners
                •        Two texture units

                •        Multi-texturing




Tuesday, March ...
Texture Combiners
                •        Two texture units

                •        Multi-texturing

                • ...
Texture Combiners
                •        Two texture units

                •        Multi-texturing

                • ...
OpenGL And UIKit




Tuesday, March 3, 2009
OpenGL And UIKit
                    • They mix, but not perfectly




Tuesday, March 3, 2009
OpenGL And UIKit
                    • They mix, but not perfectly
                    • UIKit on top of OpenGL can
      ...
OpenGL And UIKit
                    • They mix, but not perfectly
                    • UIKit on top of OpenGL can
      ...
OpenGL And UIKit
                    • They mix, but not perfectly
                    • UIKit on top of OpenGL can
      ...
OpenGL And UIKit
                    • They mix, but not perfectly
                    • UIKit on top of OpenGL can
      ...
Audio




Tuesday, March 3, 2009
Audio
                    • Several APIs: OpenAL, Audio Sessions, or
                         AVAudioPlayer (2.2 SDK)




...
Audio
                    • Several APIs: OpenAL, Audio Sessions, or
                         AVAudioPlayer (2.2 SDK)
    ...
Comparison




Tuesday, March 3, 2009
Comparison




Tuesday, March 3, 2009
Comparison




Tuesday, March 3, 2009
Comparison




Tuesday, March 3, 2009
Why We                                iPhone
                                                                      PSN
   ...
Tuesday, March 3, 2009
Part II: Developing
                               Games




Tuesday, March 3, 2009
Asset Pipeline




Tuesday, March 3, 2009
Asset Pipeline
                    •    Huge deal in large teams




Tuesday, March 3, 2009
Asset Pipeline
                    •    Huge deal in large teams

                    •    Not as much of a big
          ...
Asset Pipeline
                    •    Huge deal in large teams

                    •    Not as much of a big
          ...
Asset Pipeline




Tuesday, March 3, 2009
Asset Pipeline
                    • If you have some dedicated artists, or
                         especially contractor...
Asset Pipeline
                    • If you have some dedicated artists, or
                         especially contractor...
Baking resources




Tuesday, March 3, 2009
Baking resources
              • You want to bake
                         resources to their final
                       ...
Baking resources
              • You want to bake
                         resources to their final
                       ...
Baking resources
              • You want to bake
                         resources to their final
                       ...
Baking resources
              • You want to bake
                         resources to their final
                       ...
Assets




Tuesday, March 3, 2009
Assets
                    • iPhone games have much smaller asset sizes
                         than current PC/console g...
Assets
                    • iPhone games have much smaller asset sizes
                         than current PC/console g...
Assets
                    • iPhone games have much smaller asset sizes
                         than current PC/console g...
Data-Driven Games




Tuesday, March 3, 2009
Data-Driven Games
              • AAA games with huge teams
                     are almost fully data driven.




Tuesday...
Data-Driven Games
              • AAA games with huge teams
                     are almost fully data driven.
           ...
Data-Driven Games
              • AAA games with huge teams
                     are almost fully data driven.
           ...
Tuesday, March 3, 2009
Data-Driven Games




Tuesday, March 3, 2009
Data-Driven Games
                    • With small iPhone games, not so much.




Tuesday, March 3, 2009
Data-Driven Games
                    • With small iPhone games, not so much.
                    • Fast build times, so c...
Data-Driven Games
                    • With small iPhone games, not so much.
                    • Fast build times, so c...
Tuesday, March 3, 2009
Tuesday, March 3, 2009
More Than
                         Programming




Tuesday, March 3, 2009
More Than
                                 Programming
                    •    Programming is only part of
              ...
More Than
                                  Programming
                    •    Programming is only part of
             ...
More Than
                                  Programming
                    •    Programming is only part of
             ...
Content Creation




Tuesday, March 3, 2009
Content Creation
                    • Most projects need multiple people for
                         content creation: U...
Content Creation
                    • Most projects need multiple people for
                         content creation: U...
Tuesday, March 3, 2009
PR




Tuesday, March 3, 2009
PR
                 •       Creating a great app is half the
                         battle.




Tuesday, March 3, 2009
PR
                 •       Creating a great app is half the
                         battle.

                 •       PR...
PR
                 •       Creating a great app is half the
                         battle.

                 •       PR...
PR
                 •       Creating a great app is half the
                         battle.

                 •       PR...
PR
                 •       Creating a great app is half the
                         battle.

                 •       PR...
Part III: The Future




Tuesday, March 3, 2009
Tuesday, March 3, 2009
Tuesday, March 3, 2009
Tuesday, March 3, 2009
Tuesday, March 3, 2009
Tuesday, March 3, 2009
• The big guys are coming to play.




Tuesday, March 3, 2009
• The big guys are coming to play.
           • They’ll be able to throw many more resources and
                   make a...
Tuesday, March 3, 2009
• Rumours of a premium App
                         Store area.




Tuesday, March 3, 2009
• Rumours of a premium App
                         Store area.

               • Big companies + big games
              ...
• Rumours of a premium App
                         Store area.

               • Big companies + big games
              ...
Tuesday, March 3, 2009
15+ million iPhones and growing


Tuesday, March 3, 2009
Tuesday, March 3, 2009
Tuesday, March 3, 2009
Thank you!

Tuesday, March 3, 2009
Questions?


                              Noel Llopis
                         noel@snappytouch.com
                     ...
Questions?
                         Slides will be available from my blog Games
                         from Within (http...
Upcoming SlideShare
Loading in...5
×

Becoming Indie

2,195

Published on

360iDev presentation given by Noel Llopis. http://gamesfromwithin.com/?p=360

Session description: This session will cover the experiences of a professional game developer, used to 200+ person teams, multi-million dollar budgets, and 3+ year schedules, who left all that behind to become a one-person indie company developing exclusively for the iPhone. It will explain how things are different and how some things are very much the same, and will show specific examples of graphics technology, development environment, and asset pipeline. I will be using my current iPhone project, Flower Garden, as an example. The audience will learn what the transition is like and what to expect going indie making games for the iPhone.

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,195
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
56
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide
  • Show of hands:
    - How many are making games on the iPhone now?
    - How many have done games on other platforms before?
    This is about Games -> iPhone for iPhone developers. I’ll be giving the opposite talk at GDC
  • Different background than many people. Over 10 years in the games industry
    Small companies, large companies
    Lots of games and platforms. This is my second startup.

  • Different background than many people. Over 10 years in the games industry
    Small companies, large companies
    Lots of games and platforms. This is my second startup.

  • Different background than many people. Over 10 years in the games industry
    Small companies, large companies
    Lots of games and platforms. This is my second startup.

  • Different background than many people. Over 10 years in the games industry
    Small companies, large companies
    Lots of games and platforms. This is my second startup.

  • Different background than many people. Over 10 years in the games industry
    Small companies, large companies
    Lots of games and platforms. This is my second startup.

  • Different background than many people. Over 10 years in the games industry
    Small companies, large companies
    Lots of games and platforms. This is my second startup.

  • Different background than many people. Over 10 years in the games industry
    Small companies, large companies
    Lots of games and platforms. This is my second startup.

  • Different background than many people. Over 10 years in the games industry
    Small companies, large companies
    Lots of games and platforms. This is my second startup.

  • Different background than many people. Over 10 years in the games industry
    Small companies, large companies
    Lots of games and platforms. This is my second startup.

  • Different background than many people. Over 10 years in the games industry
    Small companies, large companies
    Lots of games and platforms. This is my second startup.

  • Team sizes over time
    When I started, a team was 5-8 people. Towards the end 200+ people.


  • Two years ago I quit and started my own, two-person company to make downloadable console games.
  • Two years ago I quit and started my own, two-person company to make downloadable console games.
  • What am I doing now?
  • Game developers want to know hardware specs right away
    Hardware specs seem great, but where are they?
    Apple not very open
  • iPhone games so far are about content, not tech. Nice change!
  • iPhone games so far are about content, not tech. Nice change!
  • iPhone games so far are about content, not tech. Nice change!
  • iPhone games so far are about content, not tech. Nice change!



  • This is one of the keys of the success of games in the iPhone. Imagine if all you could do was to write web apps with Javascript!
  • This is one of the keys of the success of games in the iPhone. Imagine if all you could do was to write web apps with Javascript!

  • UnitTest++ was designed with consoles and limited hardware in mind. Perfect fit for iPhone!
  • UnitTest++ was designed with consoles and limited hardware in mind. Perfect fit for iPhone!
  • UnitTest++ was designed with consoles and limited hardware in mind. Perfect fit for iPhone!
  • UnitTest++ was designed with consoles and limited hardware in mind. Perfect fit for iPhone!







  • I have to admit I never got around to setting it up for my current project.
    Too busy and not enough hardware. I regret not doing it though.
    First thing in my next project.
  • I have to admit I never got around to setting it up for my current project.
    Too busy and not enough hardware. I regret not doing it though.
    First thing in my next project.
  • I have to admit I never got around to setting it up for my current project.
    Too busy and not enough hardware. I regret not doing it though.
    First thing in my next project.






  • I’m doing heavy fp math, so I went from 15 to 39fps!
  • I’m doing heavy fp math, so I went from 15 to 39fps!
  • I’m doing heavy fp math, so I went from 15 to 39fps!
  • I’m doing heavy fp math, so I went from 15 to 39fps!
  • I’m doing heavy fp math, so I went from 15 to 39fps!
  • I’m doing heavy fp math, so I went from 15 to 39fps!
  • I’m doing heavy fp math, so I went from 15 to 39fps!








  • That’s Dapple by the way. Great game! :-)
  • That’s Dapple by the way. Great game! :-)
  • That’s Dapple by the way. Great game! :-)
  • Takes a lot getting used to fixed-function pipeline again!
  • Takes a lot getting used to fixed-function pipeline again!
  • Takes a lot getting used to fixed-function pipeline again!
  • Takes a lot getting used to fixed-function pipeline again!


  • That’s from the glext.h header file
  • That’s from the glext.h header file
  • That’s from the glext.h header file
  • That’s from the glext.h header file
  • That’s from the glext.h header file





  • That’s an example of a UIKit button on top of an OpenGL app
  • That’s an example of a UIKit button on top of an OpenGL app
  • That’s an example of a UIKit button on top of an OpenGL app
  • That’s an example of a UIKit button on top of an OpenGL app
  • That’s an example of a UIKit button on top of an OpenGL app


  • It is, in fact, very close to a Dreamcast in power and hardware, but with more memory.
  • It is, in fact, very close to a Dreamcast in power and hardware, but with more memory.
  • It is, in fact, very close to a Dreamcast in power and hardware, but with more memory.
  • It is, in fact, very close to a Dreamcast in power and hardware, but with more memory.
  • It is, in fact, very close to a Dreamcast in power and hardware, but with more memory.
  • It is, in fact, very close to a Dreamcast in power and hardware, but with more memory.
  • It is, in fact, very close to a Dreamcast in power and hardware, but with more memory.
  • It is, in fact, very close to a Dreamcast in power and hardware, but with more memory.
  • It is, in fact, very close to a Dreamcast in power and hardware, but with more memory.
  • It is, in fact, very close to a Dreamcast in power and hardware, but with more memory.
  • Small budgets is a good reason to stay self-funded and avoid publisher money
  • App Store!! Great access to customers (PC does not have a focal point for payment and ads, consoles have very restrictive approval process and far removed from final customer)

  • Explain what I mean by asset pipeline
  • Explain what I mean by asset pipeline
  • Explain what I mean by asset pipeline
  • I’m working with an artist and I would give him ad-hoc builds with new content. Very slow!
    Now running XCode
  • I’m working with an artist and I would give him ad-hoc builds with new content. Very slow!
    Now running XCode










  • This is a small piece of game logic using Unreal Kismet




  • This is something I learned the hard way in my last startup :-)
  • This is something I learned the hard way in my last startup :-)
  • This is something I learned the hard way in my last startup :-)
  • Flower Garden is a bit different because it’s mostly procedurally generated
  • Flower Garden is a bit different because it’s mostly procedurally generated
  • An issue tracking system is huge for managing contractors.
    Trac is very useful and simple to install
    Doubles as bug system






  • Getting noticed is getting harder and harder.
    It’s only going to get worse
    An improved App Store would help
  • Right now it’s a race to 99c. I don’t think that’s going to be that way in the future.
    Tide is starting to turn with developers foregoing the chance of getting in the top 100
  • Pretty cool graphics, uh? They are from a game on the Dreamcast, which is on part with the iPhone.
    Notice a difference?
    Lots of room for improvement.
  • This has already happened with XBLA and PSN
  • This has already happened with XBLA and PSN



  • Here’s another parameter: Userbase is huge and continues to grow
    So things may even out for indies
    It probably means no more iShoot-like games in the top for a while. We’ll be able to make a living, but not hit it big.
  • Flash might be coming to the iPhone?
    Does it mean that Flash-like quality games in the App Store are over?


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

      Clipping is a handy way to collect important slides you want to go back to later.

    ×