SlideShare una empresa de Scribd logo
1 de 162
Descargar para leer sin conexión
Becoming Indie
                  A Professional Game Developer Change
                              To The iPhone

                                   Noel Llopis
                                  Snappy Touch
                            http://snappytouch.com




Tuesday, March 3, 2009
Tuesday, March 3, 2009
Tuesday, March 3, 2009
Tuesday, March 3, 2009
Team Sizes
                         300


                         225


                         150


                          75


                           0
                               1998   2000     2002   2004   2006   2008

                                             Programmers
                                             Developers


Tuesday, March 3, 2009
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, 2009
Hardware Specs
                    • CPU: 32-bit RISC ARM
                    • Memory: 128 MB RAM
                    • Graphics: PowerVR MBX Lite




Tuesday, March 3, 2009
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
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
                   and analysis tools:
                   Instruments



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




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




                         ... but you can write all C and C++ you want!


Tuesday, March 3, 2009
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
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 course
                         (http://unittest-cpp.sourceforge.net/)




Tuesday, March 3, 2009
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
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
Unit Testing




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




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

                    •    Build and you’re done.




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

                    •    Build and you’re done.

                    •    Super fast in simulator.




Tuesday, March 3, 2009
Unit Testing




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




Tuesday, March 3, 2009
Unit Testing
                    • Also frameworks for Objective C: OCUnit,
                         SenTestingKit
                    • I haven’t used them yet




Tuesday, March 3, 2009
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
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
Build Servers




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




Tuesday, March 3, 2009
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
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
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 @ 535MHz




Tuesday, March 3, 2009
CPU

              •     CPU: 32-bit RISC ARM

              •     iPhone @ 412MHz

              •     iPod Touch @ 535MHz

              •     Can go as high as 620MHz




Tuesday, March 3, 2009
Floating Point




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




Tuesday, March 3, 2009
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
Thumb Mode




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




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

                             •   Less memory, maybe better
                                 performance.




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

                             •   Less memory, maybe better
                                 performance.

                             •   No floating point support.




Tuesday, March 3, 2009
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
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
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
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 numbers at
                    once.




Tuesday, March 3, 2009
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
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
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 up to half of
                    that.




Tuesday, March 3, 2009
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
Graphics




Tuesday, March 3, 2009
Graphics
                    • 320x240 resolution




Tuesday, March 3, 2009
Graphics
                    • 320x240 resolution
                    • OpenGL ES 1.1 API + a few
                         extensions




Tuesday, March 3, 2009
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
Graphics Hardware




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




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

                    •    PowerVR VGP Lite:
                         Vertex processing.




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

                    •    PowerVR VGP Lite:
                         Vertex processing.

                    •    No shaders!




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

                    •    PowerVR VGP Lite:
                         Vertex processing.

                    •    No shaders!

                    •    Tile-based




Tuesday, March 3, 2009
Graphics Hardware




Tuesday, March 3, 2009
Graphics Hardware
                    •    Triangles per second:
                         500K/sec (16K polys per
                         frame at 30fps)




Tuesday, March 3, 2009
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
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
                         buffers




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

                    •    Memory mapped vertex
                         buffers

                    •    Point sprites




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

                    •    Memory mapped vertex
                         buffers

                    •    Point sprites

                    •    PVRTC texture format




Tuesday, March 3, 2009
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
Texture Combiners




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




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

                •        Multi-texturing




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

                •        Multi-texturing

                •        Per-pixel lighting




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

                •        Multi-texturing

                •        Per-pixel lighting

                •        Many interesting effects




Tuesday, March 3, 2009
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
                         cause performance issues




Tuesday, March 3, 2009
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
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
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
Audio




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




Tuesday, March 3, 2009
Audio
                    • Several APIs: OpenAL, Audio Sessions, or
                         AVAudioPlayer (2.2 SDK)
                    • Custom music is huge. Let people play their
                         tunes.




Tuesday, March 3, 2009
Comparison




Tuesday, March 3, 2009
Comparison




Tuesday, March 3, 2009
Comparison




Tuesday, March 3, 2009
Comparison




Tuesday, March 3, 2009
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
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
                         deal for a single
                         developer (or small
                         team)




Tuesday, March 3, 2009
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
Asset Pipeline




Tuesday, March 3, 2009
Asset Pipeline
                    • If you have some dedicated artists, or
                         especially contractors, they need to run
                         XCode to see new content.




Tuesday, March 3, 2009
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
Baking resources




Tuesday, March 3, 2009
Baking resources
              • You want to bake
                         resources to their final
                         format for fast load times.




Tuesday, March 3, 2009
Baking resources
              • You want to bake
                         resources to their final
                         format for fast load times.
              • Textures: texturetool



Tuesday, March 3, 2009
Baking resources
              • You want to bake
                         resources to their final
                         format for fast load times.
              • Textures: texturetool
              • Sound: afconvert


Tuesday, March 3, 2009
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
Assets




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




Tuesday, March 3, 2009
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
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
Data-Driven Games




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




Tuesday, March 3, 2009
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
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
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 changing data is easy.




Tuesday, March 3, 2009
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
Tuesday, March 3, 2009
Tuesday, March 3, 2009
More Than
                         Programming




Tuesday, March 3, 2009
More Than
                                 Programming
                    •    Programming is only part of
                         it.You wear many hats!




Tuesday, March 3, 2009
More Than
                                  Programming
                    •    Programming is only part of
                         it.You wear many hats!

                    •    Designer, of course but also...




Tuesday, March 3, 2009
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
Content Creation




Tuesday, March 3, 2009
Content Creation
                    • Most projects need multiple people for
                         content creation: UI elements, textures,
                         models, animations, audio.




Tuesday, March 3, 2009
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
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 is the other half.




Tuesday, March 3, 2009
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
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
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
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 difference.




Tuesday, March 3, 2009
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
                         = Bigger price tags




Tuesday, March 3, 2009
• 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
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
                             Snappy Touch




Tuesday, March 3, 2009
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

Más contenido relacionado

Similar a Becoming Indie

Plone in the Cloud - an on-demand CMS hosted on Amazon EC2
Plone in the Cloud - an on-demand CMS hosted on Amazon EC2Plone in the Cloud - an on-demand CMS hosted on Amazon EC2
Plone in the Cloud - an on-demand CMS hosted on Amazon EC2Jazkarta, Inc.
 
JSUG - ActionScript 3 vs Java by Christoph Pickl
JSUG - ActionScript 3 vs Java by Christoph PicklJSUG - ActionScript 3 vs Java by Christoph Pickl
JSUG - ActionScript 3 vs Java by Christoph PicklChristoph Pickl
 
JSUG - AS3 vs Java by Christoph Pickl
JSUG - AS3 vs Java by Christoph PicklJSUG - AS3 vs Java by Christoph Pickl
JSUG - AS3 vs Java by Christoph PicklChristoph Pickl
 
Managing And Optimizing Memory Usage
Managing And Optimizing Memory UsageManaging And Optimizing Memory Usage
Managing And Optimizing Memory UsageJohn Wilker
 
MacRuby - When objective-c and Ruby meet
MacRuby - When objective-c and Ruby meetMacRuby - When objective-c and Ruby meet
MacRuby - When objective-c and Ruby meetMatt Aimonetti
 
Atlassian - A Different Kind Of Software Company
Atlassian - A Different Kind Of Software CompanyAtlassian - A Different Kind Of Software Company
Atlassian - A Different Kind Of Software CompanyMike Cannon-Brookes
 
Creation of an iPhone Game
Creation of an iPhone GameCreation of an iPhone Game
Creation of an iPhone GameJohn Wilker
 
IT Depends: Custom vs Packaged Software
IT Depends: Custom vs Packaged SoftwareIT Depends: Custom vs Packaged Software
IT Depends: Custom vs Packaged Software★ Selcuk Atli
 
intl me this, intl me that
intl me this, intl me thatintl me this, intl me that
intl me this, intl me thatAndrei Zmievski
 
Scaling with Postgres
Scaling with PostgresScaling with Postgres
Scaling with Postgreselliando dias
 
March 2009 Azrug Everything Old
March 2009 Azrug   Everything OldMarch 2009 Azrug   Everything Old
March 2009 Azrug Everything OldTom Weinberger
 
Using Models To Ease The Start Up Of Automated
Using Models To Ease The Start Up Of AutomatedUsing Models To Ease The Start Up Of Automated
Using Models To Ease The Start Up Of Automatedbredex
 
T# @ Agile Tour Montreal 2009 En
T# @ Agile Tour Montreal 2009 EnT# @ Agile Tour Montreal 2009 En
T# @ Agile Tour Montreal 2009 EnLudovicDubois
 
iPhone Persistence For Mere Mortals
iPhone Persistence For Mere MortalsiPhone Persistence For Mere Mortals
iPhone Persistence For Mere MortalsTony Hillerson
 
Artromick Choosing And Implementing A Mobile Hospital Cart Solution
Artromick Choosing And Implementing A Mobile Hospital Cart SolutionArtromick Choosing And Implementing A Mobile Hospital Cart Solution
Artromick Choosing And Implementing A Mobile Hospital Cart SolutionArtromick
 
Agile Planning
Agile PlanningAgile Planning
Agile PlanningAgileee
 
Agile Planning
Agile PlanningAgile Planning
Agile PlanningAgileee
 

Similar a Becoming Indie (20)

Plone in the Cloud - an on-demand CMS hosted on Amazon EC2
Plone in the Cloud - an on-demand CMS hosted on Amazon EC2Plone in the Cloud - an on-demand CMS hosted on Amazon EC2
Plone in the Cloud - an on-demand CMS hosted on Amazon EC2
 
JSUG - ActionScript 3 vs Java by Christoph Pickl
JSUG - ActionScript 3 vs Java by Christoph PicklJSUG - ActionScript 3 vs Java by Christoph Pickl
JSUG - ActionScript 3 vs Java by Christoph Pickl
 
JSUG - AS3 vs Java by Christoph Pickl
JSUG - AS3 vs Java by Christoph PicklJSUG - AS3 vs Java by Christoph Pickl
JSUG - AS3 vs Java by Christoph Pickl
 
Managing And Optimizing Memory Usage
Managing And Optimizing Memory UsageManaging And Optimizing Memory Usage
Managing And Optimizing Memory Usage
 
Using SQLite
Using SQLiteUsing SQLite
Using SQLite
 
MacRuby - When objective-c and Ruby meet
MacRuby - When objective-c and Ruby meetMacRuby - When objective-c and Ruby meet
MacRuby - When objective-c and Ruby meet
 
Atlassian - A Different Kind Of Software Company
Atlassian - A Different Kind Of Software CompanyAtlassian - A Different Kind Of Software Company
Atlassian - A Different Kind Of Software Company
 
Creation of an iPhone Game
Creation of an iPhone GameCreation of an iPhone Game
Creation of an iPhone Game
 
IT Depends: Custom vs Packaged Software
IT Depends: Custom vs Packaged SoftwareIT Depends: Custom vs Packaged Software
IT Depends: Custom vs Packaged Software
 
Depot Best Practices
Depot Best PracticesDepot Best Practices
Depot Best Practices
 
intl me this, intl me that
intl me this, intl me thatintl me this, intl me that
intl me this, intl me that
 
Scaling with Postgres
Scaling with PostgresScaling with Postgres
Scaling with Postgres
 
March 2009 Azrug Everything Old
March 2009 Azrug   Everything OldMarch 2009 Azrug   Everything Old
March 2009 Azrug Everything Old
 
Using Models To Ease The Start Up Of Automated
Using Models To Ease The Start Up Of AutomatedUsing Models To Ease The Start Up Of Automated
Using Models To Ease The Start Up Of Automated
 
Going Large Staying Small
Going Large Staying SmallGoing Large Staying Small
Going Large Staying Small
 
T# @ Agile Tour Montreal 2009 En
T# @ Agile Tour Montreal 2009 EnT# @ Agile Tour Montreal 2009 En
T# @ Agile Tour Montreal 2009 En
 
iPhone Persistence For Mere Mortals
iPhone Persistence For Mere MortalsiPhone Persistence For Mere Mortals
iPhone Persistence For Mere Mortals
 
Artromick Choosing And Implementing A Mobile Hospital Cart Solution
Artromick Choosing And Implementing A Mobile Hospital Cart SolutionArtromick Choosing And Implementing A Mobile Hospital Cart Solution
Artromick Choosing And Implementing A Mobile Hospital Cart Solution
 
Agile Planning
Agile PlanningAgile Planning
Agile Planning
 
Agile Planning
Agile PlanningAgile Planning
Agile Planning
 

Más de John Wilker

Cranking Floating Point Performance Up To 11
Cranking Floating Point Performance Up To 11Cranking Floating Point Performance Up To 11
Cranking Floating Point Performance Up To 11John Wilker
 
Introtoduction to cocos2d
Introtoduction to  cocos2dIntrotoduction to  cocos2d
Introtoduction to cocos2dJohn Wilker
 
Getting Started with OpenGL ES
Getting Started with OpenGL ESGetting Started with OpenGL ES
Getting Started with OpenGL ESJohn Wilker
 
User Input in a multi-touch, accelerometer, location aware world.
User Input in a multi-touch, accelerometer, location aware world.User Input in a multi-touch, accelerometer, location aware world.
User Input in a multi-touch, accelerometer, location aware world.John Wilker
 
Physics Solutions for Innovative Game Design
Physics Solutions for Innovative Game DesignPhysics Solutions for Innovative Game Design
Physics Solutions for Innovative Game DesignJohn Wilker
 
Getting Oriented with MapKit: Everything you need to get started with the new...
Getting Oriented with MapKit: Everything you need to get started with the new...Getting Oriented with MapKit: Everything you need to get started with the new...
Getting Oriented with MapKit: Everything you need to get started with the new...John Wilker
 
Getting Started with iPhone Game Development
Getting Started with iPhone Game DevelopmentGetting Started with iPhone Game Development
Getting Started with iPhone Game DevelopmentJohn Wilker
 
Internationalizing Your Apps
Internationalizing Your AppsInternationalizing Your Apps
Internationalizing Your AppsJohn Wilker
 
Optimizing Data Caching for iPhone Application Responsiveness
Optimizing Data Caching for iPhone Application ResponsivenessOptimizing Data Caching for iPhone Application Responsiveness
Optimizing Data Caching for iPhone Application ResponsivenessJohn Wilker
 
I Phone On Rails
I Phone On RailsI Phone On Rails
I Phone On RailsJohn Wilker
 
Integrating Push Notifications in your iPhone application with iLime
Integrating Push Notifications in your iPhone application with iLimeIntegrating Push Notifications in your iPhone application with iLime
Integrating Push Notifications in your iPhone application with iLimeJohn Wilker
 
Starting Core Animation
Starting Core AnimationStarting Core Animation
Starting Core AnimationJohn Wilker
 
P2P Multiplayer Gaming
P2P Multiplayer GamingP2P Multiplayer Gaming
P2P Multiplayer GamingJohn Wilker
 
Using Concurrency To Improve Responsiveness
Using Concurrency To Improve ResponsivenessUsing Concurrency To Improve Responsiveness
Using Concurrency To Improve ResponsivenessJohn Wilker
 
Leaving Interface Builder Behind
Leaving Interface Builder BehindLeaving Interface Builder Behind
Leaving Interface Builder BehindJohn Wilker
 
Mobile WebKit Development and jQTouch
Mobile WebKit Development and jQTouchMobile WebKit Development and jQTouch
Mobile WebKit Development and jQTouchJohn Wilker
 
Accelerometer and OpenGL
Accelerometer and OpenGLAccelerometer and OpenGL
Accelerometer and OpenGLJohn Wilker
 
Deep Geek Diving into the iPhone OS and Framework
Deep Geek Diving into the iPhone OS and FrameworkDeep Geek Diving into the iPhone OS and Framework
Deep Geek Diving into the iPhone OS and FrameworkJohn Wilker
 
NSNotificationCenter vs. AppDelegate
NSNotificationCenter vs. AppDelegateNSNotificationCenter vs. AppDelegate
NSNotificationCenter vs. AppDelegateJohn Wilker
 
From Flash to iPhone
From Flash to iPhoneFrom Flash to iPhone
From Flash to iPhoneJohn Wilker
 

Más de John Wilker (20)

Cranking Floating Point Performance Up To 11
Cranking Floating Point Performance Up To 11Cranking Floating Point Performance Up To 11
Cranking Floating Point Performance Up To 11
 
Introtoduction to cocos2d
Introtoduction to  cocos2dIntrotoduction to  cocos2d
Introtoduction to cocos2d
 
Getting Started with OpenGL ES
Getting Started with OpenGL ESGetting Started with OpenGL ES
Getting Started with OpenGL ES
 
User Input in a multi-touch, accelerometer, location aware world.
User Input in a multi-touch, accelerometer, location aware world.User Input in a multi-touch, accelerometer, location aware world.
User Input in a multi-touch, accelerometer, location aware world.
 
Physics Solutions for Innovative Game Design
Physics Solutions for Innovative Game DesignPhysics Solutions for Innovative Game Design
Physics Solutions for Innovative Game Design
 
Getting Oriented with MapKit: Everything you need to get started with the new...
Getting Oriented with MapKit: Everything you need to get started with the new...Getting Oriented with MapKit: Everything you need to get started with the new...
Getting Oriented with MapKit: Everything you need to get started with the new...
 
Getting Started with iPhone Game Development
Getting Started with iPhone Game DevelopmentGetting Started with iPhone Game Development
Getting Started with iPhone Game Development
 
Internationalizing Your Apps
Internationalizing Your AppsInternationalizing Your Apps
Internationalizing Your Apps
 
Optimizing Data Caching for iPhone Application Responsiveness
Optimizing Data Caching for iPhone Application ResponsivenessOptimizing Data Caching for iPhone Application Responsiveness
Optimizing Data Caching for iPhone Application Responsiveness
 
I Phone On Rails
I Phone On RailsI Phone On Rails
I Phone On Rails
 
Integrating Push Notifications in your iPhone application with iLime
Integrating Push Notifications in your iPhone application with iLimeIntegrating Push Notifications in your iPhone application with iLime
Integrating Push Notifications in your iPhone application with iLime
 
Starting Core Animation
Starting Core AnimationStarting Core Animation
Starting Core Animation
 
P2P Multiplayer Gaming
P2P Multiplayer GamingP2P Multiplayer Gaming
P2P Multiplayer Gaming
 
Using Concurrency To Improve Responsiveness
Using Concurrency To Improve ResponsivenessUsing Concurrency To Improve Responsiveness
Using Concurrency To Improve Responsiveness
 
Leaving Interface Builder Behind
Leaving Interface Builder BehindLeaving Interface Builder Behind
Leaving Interface Builder Behind
 
Mobile WebKit Development and jQTouch
Mobile WebKit Development and jQTouchMobile WebKit Development and jQTouch
Mobile WebKit Development and jQTouch
 
Accelerometer and OpenGL
Accelerometer and OpenGLAccelerometer and OpenGL
Accelerometer and OpenGL
 
Deep Geek Diving into the iPhone OS and Framework
Deep Geek Diving into the iPhone OS and FrameworkDeep Geek Diving into the iPhone OS and Framework
Deep Geek Diving into the iPhone OS and Framework
 
NSNotificationCenter vs. AppDelegate
NSNotificationCenter vs. AppDelegateNSNotificationCenter vs. AppDelegate
NSNotificationCenter vs. AppDelegate
 
From Flash to iPhone
From Flash to iPhoneFrom Flash to iPhone
From Flash to iPhone
 

Último

Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 

Último (20)

DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 

Becoming Indie

  • 1. Becoming Indie A Professional Game Developer Change To The iPhone Noel Llopis Snappy Touch http://snappytouch.com Tuesday, March 3, 2009
  • 5. Team Sizes 300 225 150 75 0 1998 2000 2002 2004 2006 2008 Programmers Developers Tuesday, March 3, 2009
  • 8. Part I: What’s Inside? 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 102. Part II: Developing Games 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 157. 15+ million iPhones and growing 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