The document discusses the hardware specifications and development tools available for developing games and applications for the iPhone. It covers the CPU, memory, graphics hardware, development tools like Xcode, programming languages including Objective C and C/C++, and testing frameworks. It also provides details on OpenGL ES for graphics and the available extensions.
21. Development Tools
• XCode. Great IDE
• Familiar tools: gcc, gdb
Tuesday, March 3, 2009
22. Development Tools
• XCode. Great IDE
• Familiar tools: gcc, gdb
• Great performance
and analysis tools:
Instruments
Tuesday, March 3, 2009
23. Programming Language
Most iPhone-related stuff in Objective C
Tuesday, March 3, 2009
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. 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
27. Unit Testing
• Any C/C++ unit-testing framework
Tuesday, March 3, 2009
28. Unit Testing
• Any C/C++ unit-testing framework
• Biased towards UnitTest++ of course
(http://unittest-cpp.sourceforge.net/)
Tuesday, March 3, 2009
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. 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
36. Unit Testing
• Also frameworks for Objective C: OCUnit,
SenTestingKit
Tuesday, March 3, 2009
37. Unit Testing
• Also frameworks for Objective C: OCUnit,
SenTestingKit
• I haven’t used them yet
Tuesday, March 3, 2009
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. 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
41. Build Servers
• Continuous integration was a key practice
in large teams.
Tuesday, March 3, 2009
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. 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
50. Floating Point
• The main CPU has no
floating point support.
Tuesday, March 3, 2009
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
53. Thumb Mode
• CPU has a special thumb
mode.
Tuesday, March 3, 2009
54. Thumb Mode
• CPU has a special thumb
mode.
• Less memory, maybe better
performance.
Tuesday, March 3, 2009
55. Thumb Mode
• CPU has a special thumb
mode.
• Less memory, maybe better
performance.
• No floating point support.
Tuesday, March 3, 2009
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. 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. 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
60. Floating Point
• The VFP stands for “vector”
Tuesday, March 3, 2009
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. 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. 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
70. Graphics
• 320x480 resolution
Tuesday, March 3, 2009
71. Graphics
• 320x480 resolution
• OpenGL ES 1.1 API + a few
extensions
Tuesday, March 3, 2009
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
79. Graphics Hardware
• Triangles per second:
500K/sec (16K polys per
frame at 30fps)
Tuesday, March 3, 2009
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
93. OpenGL And UIKit
• They mix, but not perfectly
Tuesday, March 3, 2009
94. OpenGL And UIKit
• They mix, but not perfectly
• UIKit on top of OpenGL can
cause performance issues
Tuesday, March 3, 2009
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. 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. 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
99. Audio
• Several APIs: OpenAL, Audio Sessions, or
AVAudioPlayer (2.2 SDK)
Tuesday, March 3, 2009
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
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
109. Asset Pipeline
• Huge deal in large teams
Tuesday, March 3, 2009
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. 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
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. 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
116. Baking resources
• You want to bake
resources to their final
format for fast load times.
Tuesday, March 3, 2009
117. Baking resources
• You want to bake
resources to their final
format for fast load times.
• Textures: texturetool
Tuesday, March 3, 2009
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. 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
121. Assets
• iPhone games have much smaller asset sizes
than current PC/console games.
Tuesday, March 3, 2009
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. 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
125. Data-Driven Games
• AAA games with huge teams
are almost fully data driven.
Tuesday, March 3, 2009
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. 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
130. Data-Driven Games
• With small iPhone games, not so much.
Tuesday, March 3, 2009
131. Data-Driven Games
• With small iPhone games, not so much.
• Fast build times, so changing data is easy.
Tuesday, March 3, 2009
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
136. More Than
Programming
• Programming is only part of
it.You wear many hats!
Tuesday, March 3, 2009
137. More Than
Programming
• Programming is only part of
it.You wear many hats!
• Designer, of course but also...
Tuesday, March 3, 2009
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
140. Content Creation
• Most projects need multiple people for
content creation: UI elements, textures,
models, animations, audio.
Tuesday, March 3, 2009
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
144. PR
• Creating a great app is half the
battle.
Tuesday, March 3, 2009
145. PR
• Creating a great app is half the
battle.
• PR is the other half.
Tuesday, March 3, 2009
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. 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. 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
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
Notas del editor
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?