Upload
tj-grant
View
311
Download
2
Embed Size (px)
Citation preview
How to be an Independent Mobile Application Dev
By Terence J. [email protected]
About Terence
For my clients• Freelance iPhone / iPad contractor, working
mostly with streaming audio and video.• Working out of Van Nuys, have worked with
companies in L.A., Irvine, Silicon Valley.• Some work is on site, some is remote.• Surprisingly, I’ve gotten a lot of non-iPhone
work via my iPhone experience.
Companies I’ve worked for
• EA – Electronic Arts – I worked on the Madden Football and Nascar Racing franchises for PlayStation 2 and Xbox
• Adidas America – I worked on a delivery shipment program using Palm Pilot devices when “handheld computers” were still fairly new
• Final Draft – A company I’ve most recently worked with, doing cross-platform development for Mac and Windows.
My Projects
• Currently have games in the App store, simple games that generate a little income.– More for portfolio purposes than anything else– But they’ve already paid for themselves in terms of sunk
costs. (App store fees, etc.)• Actively developing games with OpenGL ES 2.0 for
iPhone, iPad, and Mac OS X.– (OpenGL is a 3D Graphics API.)
• I’m investigating Windows Phone 8 as a viable platform as well.
What’s out there to develop for?
• Phones phones phones!– There’s iPhone– Android, Google’s offering– Windows Phone 8, which is based on Microsoft’s
new APIs• Pads– There’s the iPad – Runs iOS– Galaxy Tab – Runs Android– Microsoft Surface – Runs Windows 8
Your development environment
• For iPhone / iPad, you’ll need a Mac.• For Android, you can develop on Mac, PC, Linux.• For Windows Phone, you have to run Windows.
Don’t have a Mac?Or have a Mac and don’t run Windows?Are there any other options?
Virtual Machines
• If you own a Mac, two pieces of software help you conquer this problem:– VMWare Fusion– Parallels
• Each lets you run Windows– like Windows 7 or Windows 8, Linux (Ubuntu), even Android itself, without having to have two machines.
• Similar products (by the same companies) are available for PC. Rumor has it you can run Mac on Windows, so there may be possibilities there.
What do you own?
• So what should I develop for?– iPhone, Android, iPad, Blackberry?
• A good strategy is to start with what you have and use already– If you have an iPhone, start with that. If you’ve been an
Android fan, start there instead.– You already have a feel for what your device is like, and you’d
be surprised at the little differences between platforms, if you’re not used to them.
– Don’t own an iPhone, Android, or other SmartPhone? May be time to invest in one, if you’re looking to get into this market.
What’s your current skill set?
• Are you a “dyed in the wool” C or C++ guy/gal already? Use that to your advantage!
• Not a hardcore programmer?– Well, have you ever made a web site?– There’s tools that can already help you with design,
and you can still publish apps that are HTML based…• Not a web designer either?– Well, may be time to learn– Or, you can always collaborate with a programmer…
How to set up your dev environment…
• Apple provides a compiler, called Xcode– Which allows you to program for iPhone, iPad, and Mac Desktop– Apple prefers you use Objective C, but allows for C and C++
• Microsoft provides their solution, Visual Studio– Which is essentially the same thing, but allows you to program Windows
Phone, and for Windows all the way from Windows XP to Windows 8 itself.– Microsoft prefers you use C#, but (now) allows for C and C++
• Google, for Android devices, points you to use a solution called “Eclipse”– Eclipse is an Open Source product, that can do more than just Android
development– Google wants you to use Java, but also allows for C and C++
• Best news for all of this is that 99% of what’s out there is free!
How to learn all those crazy languages
• Objective C, C#, Java… do I have to learn any of these?– Well, yes and no. You do have to learn the ins and outs a
little.– If you want to make “native” apps, speak what the
“natives” speak.• Pros: Learning the native language tends to give you
more control over the device.• Cons: But only for the devices you’re learning on.
And there may be a learning curve.
I ain’t learnin’ nothin!
• That’s okay too! (Well, kinda.) There are other tools you can use:– PhoneGap – This tool allows you to make an application
based almost purely in HTML / JavaScript.– Adobe Air – Adobe’s offering allows you to use familiar
things like Flash, HTML, ActionScript, and the like.– Unity and Unity3d – This is a tool that allows you to publish
2d and 3d games in a cross-platform manner.• So you’ll still have to learn something either way, but
you have many options in what way you want to learn.
Let’s make a game!
• What kind of games do you want to make?– Simple?– Flashy?– Immersive?
Simple games
• You can make super simple games, like the ones you played as a kid, or the ones your parents / grandparents taught you.
• Such games have simple logic, easy enough that you can implement them in a fairly short time period, without spending weeks or months spinning your wheels.
• Games such as Tic-Tac-Toe, The 15-Puzzle, Concentration, BlackJack
• The logic is simple, and the art assets, amount of visual representation is simple too.
Card Games• Card games you might consider the next level up from a
simple game.• The rules of Solitaire are pretty simple, but now you have to
draw 52 cards on screen at once, and keep track of their places.
• How will you place them on screen?• Is each card “drag-able,” even “touch-able,” do you have
buttons, etc?• Even a simple game can be complicated to write.• Now think about the rules of Poker, Bridge, Gin Rummy…
things get messy pretty quick.
Flash Games
• iPhone doesn’t run Flash, but that doesn’t mean you can’t make Flash-style games.
• Angry Birds, Fruit Ninja, Jetpack Joyride are good examples
• Highly animated, media rich, arcade-style gaming– people dig it!
Immersive Games
• Story rich• Massively multiplayer• Epic adventures
• These are the kind of games big studios make, and an indie developer can too, but realize the more complicated something is, the more time it’ll take to make.
Where do you start?
• What do most games we can think of have in common?
• There’s things you can do to “win,” and there’s things you can do to “lose.”
• There’s a score of some kind, and there’s a “high score” you gotta beat.
• Whenever you “do something,” something else happens as a response.
So if it’s that simple…
• Let’s start with a small game you already know…– Tic Tac Toe• You can do things to win,• You can do things to lose,• We can keep score between players.• We can also do it as two-player without having to do
any crazy artificial intelligence or anything like that.
Add some polish…
• Adding color, art assets, and animation can take you a long way.
• You can add player names• Artificial Intelligence• Let’s take a look at someone else’s version of
Tic-Tac-Toe:– http://youtu.be/-hdSMWNKPmM
I’d buy that for a dollar!
• Well, except that guy’s version is free.• In fact, many simple games like this are free.• However, there are people who will pay for
your version.– Whether they’re friends, family, co-workers– Perhaps they’re just iPhone game enthusiasts?– But they do exist.
How to build your skills
• There’s so many things you can do…– Make your own game– Forget games, just make your own app!– Learn a new programming language– Collaborate with a friend– Work for a start-up– Work for an established company– Work for yourself!
The wonderful world of freelancing
• Types of work that’s out there– Full-time employment– Contracting– Freelancing– Start-ups– Setting up your own Store-front
• There’s pros and cons to each approach.• Something that’s a con for me, may be a pro for
you. It’s all in how you view it.
Full-time employment
• Pros: Steady paycheck, health benefits, stable work environment
• Cons: Often just one project (limited growth), very long term, company tends want to "own" your work in and out of office
Contracting
• Pros: Typically higher "per hour" than a full-time, can be extended, not permanent
• Cons: Unstable teams, no benefits, no sick days, pay your own taxes, sometimes end early
Freelancing
• Pros: More "creative" control over projects, your free time, and you can build a portfolio
• Cons: Can be riskier, may go "too long" term or want too many quick gains over a short term.
Start-ups
• Startups that aren’t funded are essentially the same as freelance.
• If they’re funded, they’re more akin to Contracts, but typically with longer work hours and more commitment and dedication.
Your own store-front
• Pros: Similar to a start-up, but you publish your own apps; you can just publish apps as you please.
• Cons: You might have "make this" your job, and you have to keep publishing new ideas, keep publicizing, etc. Also, there's lots of competition that might be better, and many give away their stuff for free.
What drives you now, and what do you want to accomplish?
• So there’s lots of options, probably more than you thought.• But what are your goals?– Do you want to make your own apps?– Do you want to make someone else’s apps?– Do you want to “be the guy” making the app, or do you want to
“find the guy” to help with your app?• Always keep your eyes on the end-goal.• Deviation from a goal is okay, as long as you’re learning a
skill, but go too far and you’ll be on the different road altogether.
Networking with peers, and collaborative projects
• Networking with peers is good–– It’s a form of marketing your services, sure…– But you’ll also be surprised who you meet too–
you might meet someone who has a service you didn’t even know you needed!
– And hell, make a friend while you’re at it; couldn’t hurt, right?
What you can learn from the big guys
• EA does games• Apple does hardware and software• Google is a search engine that somehow does
everything• Microsoft is that 800 pound gorilla
Surely there’s something we can learn from them, they’re in our market, right?But what?
Electronic Arts
• These are just vague generalities, but let's go with it…– EA publishes games on multiple platforms
(sometimes)– and they typically have a tie-in game for mobile.– For games, they typically have a "quick game" mode
as a first option as well• So, think about more than one device, and think
about “how quick can I make my app to use?”
– Google does a lot with Open Source, simplicity, and usuability.
• They leverage existing technology with no cost to them. You should do that.– They were also a key innovator with "small ads"
on websites.– Guess who else does “small ads” now, only for
mobile devices?• Google, Apple, Microsoft.
Apple
• Apple has a high aesthetic for their devices and high quality for their software.– High quality, nice aesthetic… you should do that.
• They also invent new ways of doing things, and this can be quite challenging for developers.– Simple sometimes isn’t always best, so “think
different” like them.
Microsoft– Microsoft values the quick and simple. They see someone
else do something (like Apple), and they do something similar.• “Just do it”• They also will venture into new markets—• The xbox was the first true American Video Game
console developer since Atari.– Xbox vs Sony’s Playstation– Zune vs iPod– Windows 8 vs Apple's iOS strategy.
• Competition is exciting! You should be competitive.
Open Source Software
• There’s a lot out there, from beginning projects to the complex.
• Many programmers *use* Open Source Software, but the vast majority don’t contribute.
• Yet another opportunity to build portfolio material.
• There’s opportunity everywhere!
Questions?