Indie and Casual Game Development with Windows

advertisement
Windows Phone 7.5 “Mango”
Cloud-Backed Mobile Applications
XNA-free Game Development
MARQUEE SPONSOR
PLATINUM SPONSOR
PLATINUM SPONSOR
GOLD SPONSOR
GOLD SPONSOR
GOLD SPONSOR
GOLD SPONSOR
GOLD SPONSOR
GOLD SPONSOR
SILVER SPONSORS







Who am I?
Building Casual Games
Multiplayer Gaming
Case Study : Demo
Case Study : Code Tour
Lessons Learned
Q&A
Boredom often impetus to play
Users can get interrupted frequently and
unexpectedly
 Users often play with limited concentration
 Touches are clumsy with huge target zones
 Just because you can hold a phone like a joystick
doesn’t mean it is one.
 Touch isn’t the only input – phones have
accelerometers, compasses, GPS, etc.
 Network is not always available, or reliable



Many successful games are “dopamine squirters”





Periodic, positive reinforcement
Achievements
Leaderboards
“Nags” (come play me!)
Measurable, identifiable, frequent progress
Deliver your dopamine in small, frequent doses
Give users a reason to come back to your game
Your app should be “part of the problem” of smart phone
addiction.
 Players will play anything if they can advance, compete, or
compare.



 e.g. “ProgressQuest”

Don’t re-fix well-known, solved problems:







Data Access & local storage
Web upload and download
User configuration & settings
Animated & flowing UI
Audio & video
Open Source & Free libraries
Code Samples are everywhere
 Google is your friend

Not a good enough artist? Crowdsource one.
 99designs.com

Open Source libraries






JSON
REST/HTTP
CouchDB Clients
Silverlight/WP7 controls (e.g. Control Toolkit)
Codeplex.com
NuGet (Library Package Dependencies)

Many kinds of multiplayer
 Cooperative vs. Competitive
 Real-time vs. Turn-Based



Player discovery (e.g. “lobbies” and
“matchmakers”)
Chat
Push Notifications
 React in real-time to player actions, even for turn-
based games

Real-Time Multiplayer
 Typically lower level, often hand-coded
 Sockets

Pseudo-Real-Time
 Push Notifications via Microsoft & WP7 SDK

Turn-Based
 Push Notifications

Cloud-based middleman for phone-to-phone comms.
 Exceptions include local WiFi discovery of nearby phones –
very ugly code.

You need “code in the cloud” to send push
notifications.


Do you even need one?
If so:







RESTful Ruby via heroku.com
WCF via any # of hosts, including AWS EC2
WCF via Windows Azure
WCF via AppHarbor (see demo)
PHP or others on other hosts
AppHarbor & Heroku: git push FTW.
Cloud databases are everywhere
 SQL Azure, SQL in EC2, SQL on AppHarbor, CouchDB

Metro games use XAML
 HTML available for Metro games on Windows 8





Rich, storyboard-based animation library
Built-in support for 3D, perspective
transforms
Audio/Video APIs, Media support in XAML
Touch & Gesture recognition available in nonXNA apps
Phone chock full of sensors & hardware that
can be used by games




XNA isn’t necessary for smaller, casual games
XNA 2D is sprite-based using a “game loop”
XNA 3D is vastly more complicated
Your goal is to produce gameplay not content
 Only pick XNA if its required to support the
gameplay for your idea!

Xbox Live libraries can be used from
Silverlight
 Still need an agreement with MSFT for XBL
achievements and gamerscore

If it feels like work, stop doing it.
 Your game must be as fun to build as it is to play

Iterative, agile process





Build a core nugget of functioning gameplay
Pause, briefly, to clean up & refactor
Repeat for each tiny gameplay unit
Add finishing touches after essential gameplay is done
(“Perfect is the enemy of done”)
Your time is your capital
 Favor pay-per-use, pay-as-you-go, and especially free
services

Game design influences architecture, not the other
way around







Approx. 25 hours of coding time
Multiplayer, head-to-head, turn-based
strategy
In-game chat
Push Notifications
Log of games stored
Player profiles
Future support for achievements,
leaderboards, tourneys and ladders
DEMO


MVVM pattern (not library) WP7.5 Client
WCF Web API hosted in AppHarbor
 Secure, JSON, RESTful services expose resources to
facilitate gameplay
User Profiles in a CouchDB database
Games (ongoing and past) stored in CouchDB
database
 User security via ASP.NET Membership Provider


 Membership DB in AppHarbor-hosted SQL DB

Up-front cost: $0

WCF Web API dramatically reduces development time
 Built-in web-based JSON-aware test harness saved
incredible amounts of time and effort.
 Used harness to simulate other player(s) as game was
being developed.

CouchDB JSON documents are tailor-made for agile
dev
 Could rapidly change my data structure without mucking
with foreign keys, queries, etc.
 Easy to upgrade docs as app version changes
 Map/Reduce custom JavaScript views are efficient
 Developer can stay object-oriented the whole time
▪ No extraneous joining tables, etc.

JSON, flexible, RESTful services
 “Piece of cake” to add support for iPhone,
Android, iPad, Windows 8



Apps can be beautiful w/out being 3D
Cloud Services like AppHarbor make games
like this easy!
WebClient has “issues”, be wary.
 Suppresses RESTful HTTP response codes
 Caches aggressively, can create ‘stale’ service
results w/no errors.
Proper use of navigation service
Local data caching (AgFx?)
Network detection (LittleWatson?)
Google Analytics
Network download/progress indicator
Tolerance of raw notification delivery failures
Split to multiple assemblies to speed up load
time
 Update detection (track last launched version)
 Crash detection & Reporting
 Marketplace Review Nag
 Transitions, animations, “fit and finish”








Q&A
Download