Mobile Computing (with a little casual thrown in)

MOBILE COMPUTING
(WITH A LITTLE CASUAL THROWN IN)
CGDD 4003
GROWTH
•
Phone is always with you
•
Predicted to exceed $16B by 2016
•
Reaches a (much) wider demographic
• 50% of those under 40 play mobile games
• 20% of those over 40
•
In-app purchases are exploding
• Currently 1/3 of mobile revenue (1/2 by 2016)
THE MARKET
•
Apple’s App Store: 300,000+ apps
• Has passed on $1B to developers
•
Android Marketplace: 100,000+ apps
•
Nokia’s Oki: 28,000+ apps
•
Typically keep 70% of revenue
•
Must we offer games for free?
•
How do we get discovered?
http://www.mobileapptesting.com/power-up-massive-growth-in-mobile-gaming-ahead/2010/12/
THE MARKET*
•
57% of AT&T Wireless customers play games
•
Why they play:
• 52% - distraction from daily life
• 40% - relaxation and stress relief
• 12% - improve mood
•
Time:
• 91% of mobile sessions are < 30 minutes
• 62% are less than 15 minutes
• Women play for longer periods of time
•
Most popular games
• Puzzle (66%), Card/Casino (51%), Board games (15%), Action/Adventure(11%)
* http://wirelessandmobilenews.com/2009/05/57-of-atters-play-mobile-games-tetris-most-popular.html?wpmp_switcher=mobile
SPEAKING OF WHICH…
•
What IS the most popular mobile game of all time?
SPEAKING OF WHICH…
•
What IS the most popular mobile game of all time?
100 million downloads…
FARMVILLE OF THE FUTURE?
•
EA is investing in mobile and casual
•
“Anyone who fails to recognize that shift will be left behind” – John Riccitiello (CEO)
http://www.mobileapptesting.com/power-up-massive-growth-in-mobile-gaming-ahead/2010/12/
HABITS
•
Average “user” has 27 apps on their phone
• Up from 22 in 2009
• Games are most popular
•
May listen or watch other media
•
Casual gamers want:
• Quick
• Simple
• Non-committal
• No deep thought
BASIC MOBILE GAME DESIGN
•
Small in scope (no MMORPG)
•
Easy to learn (simple mechanics)
•
Simple UI (prone to errors)
•
Mobile context:
• Interruptible – user is a multi-tasker
• Can be played anywhere, any time
• Rely on mobile technology
(especially input)
•
Non-explicit content
•
Trend – evolving from 2D to 3D
•
Respect user privacy!
Good site: http://www.developer.nokia.com/Resources/Library/Design_and_UX/index.html
BASIC MOBILE GAME DESIGN
•
User should be able to start a new session (frequently) and reach goals quickly
•
Design considerations for visuals
•
•
Basic problem: small screen, yet need to convey information
•
Characters 10-15% of screen
•
6 pieces of HUD or less!
•
Touching the screen “blocks” it!
•
Justify each visual element
•
Keep the backlight on if possible
General no-nos
•
Chatting
•
Complex input (multi-touch)
•
It’s ok to be slow, but don’t give slow feedback
BASIC PHONE CAPABILITIES
•
Usually need to query for these (vary wildly)
•
Input:
•
no physical mouse/keyboard
•
no joystick?
•
Buttons?
•
GPS
•
Accelerometers/Gyroscopes
•
Restricted memory
•
Network
•
•
server or peer-to-peer?
•
Bluetooth?
Limited CPU – GPU?
•
AI?
GETTING STARTED: ANDROID
• http://www.youtube.com/watch?v=z_vC0RLryuo
•
An IDE: typically Eclipse
•
Java
•
The Android SDK
•
The Android NDK?
•
An Android phone?
• Normally no…
• If doing OpenGL ES, yes!
GETTING STARTED: WIN 7
•
Visual Studio (2010)
• Must have SP1 installed
•
Win 7 SDK – it’s large
• http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=27570
• Comes with an emulator
GETTING STARTED: IOS
•
You need a Mac! Or do you?
•
Xcode
•
Learn Objective-C and C++
• Good primer on Apple’s site
• Uses different kind of “messaging”
•
Website
• http://developer.apple.com/devcenter/ios/index.action
• You’ll want to register… and probably buy an account
BASIC STRUCTURE OF PHONE APPS
•
Use the concept of call back functions
•
Event-driven:
• Initialization
• Destruction
• Drawing
• Input events
• GPS
• Touch
• Normal widgets (mouse, textfields, etc…)
EXAMPLE: ANDROID PROJECT
•
We have several different
versions of Android
• Not all phones have latest
SDK
• 2.2 is fairly safe
EXAMPLE: ANDROID PROJECT
EXAMPLE: WIN 7
•
It’s exactly the same skeleton as XNA!
•
Multiple touch events
TouchPanelCapabilities tc = TouchPanel.GetCapabilities();
if(tc.IsConnected) {
return tc.MaximumTouchCount;
}
TouchCollection fingers = TouchPanel.GetState();
foreach (TouchLocation finger in fingers) {
if ((finger.State == TouchLocationState.Pressed) ||
(finger.State == TouchLocationState.Moved)) {
// Do what we gonna do!
}
}
EXAMPLE: WIN 7
•
Gyroscope
if (Gyroscope.IsSupported) {
//get current rotation rate, display happens in Draw()
GyroscopeReading gr = new GyroscopeReading();
Vector3 gyroReading = gr.RotationRate;
}
•
For Accelerometer, see the documentation
YOUR TASK
Design the worst mobile game EVER