Our Properties: Gamasutra GameCareerGuide IndieGames Indie Royale GDC IGF Game Developer Magazine GAO
My Message close
Contents
Developing Games for Android
 
 
Printer-Friendly VersionPrinter-Friendly Version
 
Latest News
spacer View All spacer
 
February 3, 2012
 
The role of self image in video game play [8]
 
Walmart provides coveted sales data to NPD's retail reports [4]
 
Interview: Seamus Blackley's new team of Atari coin-op superstars aim for iPad [8]
spacer
Latest Jobs
spacer View All     Post a Job     RSS spacer
 
February 3, 2012
 
Blizzard Entertainment
Lead Software Engineer, Platform
 
Trilogy Studios
Game Programmer
 
Blizzard Entertainment
Senior Reliability Engineer
 
Blizzard Entertainment
Senior Designer
 
Blizzard Entertainment
Senior Test Engineer
 
Blizzard Entertainment
Senior Software Engineer, Gameplay
spacer
Latest Features
spacer View All spacer
 
February 3, 2012
 
arrow Happy Action, Happy Developer: Tim Schafer on Reimagining Double Fine [4]
 
arrow Building an iOS Hit: Phase 1 [7]
 
arrow Postmortem: Appy Entertainment's SpellCraft School of Magic [5]
 
arrow Talking Copycats with Zynga's Design Chief [75]
 
arrow Finnish Experiments, American Nightmare [10]
 
arrow SPONSORED FEATURE: Are Game Development Funds Doing Developers More Harm than Good? [12]
 
arrow Talking the Future of Minecraft
 
arrow Building Games that Run on Poor Mobile Connections [2]
spacer
Latest Blogs
spacer View All     Post     RSS spacer
 
February 3, 2012
 
Examining The Concept of the "Anti-Co-op" Experience [1]
 
Sixteen and a half cents
 
Last of the Seal Pelts: Revenue Doubles After Price Drop [2]
 
Game Biz Loan-sharking? aka Financing.
 
Talent Development for a Social Entertainment Company
spacer
About
spacer Editor-In-Chief/News Director:
Kris Graft
Features Director:
Christian Nutt
Senior Contributing Editor:
Brandon Sheffield
News Editors:
Frank Cifaldi, Tom Curtis, Mike Rose, Eric Caoili, Kris Graft
Editors-At-Large:
Leigh Alexander, Chris Morris
Advertising:
Jennifer Sulik
Recruitment:
Gina Gross
 
Feature Submissions
 
Comment Guidelines
Sponsor
Features
  Developing Games for Android
by Derek James [Business, Game Design, Mobile Phone, Indie, Smartphone/Tablet]
19 comments Share on Twitter Share on Facebook RSS
 
 
October 13, 2009 Article Start Page 1 of 3 Next
 

The advent of smartphones has opened up an entire new range of platforms for game development, particularly for independent game developers. The iPhone's App Store model has been enormously successful, with a recent estimate of $2.4 billion in annual sales.

From a developer's perspective, app stores have the incentive of a distribution channel with powerful search and marketing capabilities. They also provide an intermediary that handles the logistics of selling and downloading -- generally for a cut of 30%.

You've probably heard the Cinderella stories of developers like Steve Demeter, whose triangular variant on match-3 games, Trism, reportedly earned him $250,000 in just two months in the iPhone App Store. Take also Ethan Nicholas' iShoot, which reportedly earned $600,000 in a single month. With the gold rush mentality and the iPhone's undeniable success with the App Store, why would a game developer choose to make a game for any other smartphone platform?

About six months ago, I started developing games for Google's Android OS, somewhat by chance. A friend who works for Google gave me a G1 developer's phone as a gift. At that point, I hadn't even heard of Android. In the process of learning about the OS, I came across the Android SDK, and downloaded it to give it a spin. I was instantly hooked.

While iPhone apps are written in Objective C, the Android SDK uses relatively more programmer-friendly Java. The iPhone store charges developers $99 a year to distribute their apps, while Android has a one-time $25 fee for developers. And the review process for iPhone apps grows increasingly lengthy -- sometimes weeks or more -- and it's somewhat arcane. Android apps go live as soon as the developer hits the publish button. Google handles the review process post-hoc, and is much more lax in terms of content.

With the greater ease of producing and distributing apps through the Android Market, why aren't game developers large and small clambering to produce quality games for the system? There are a number of reasons, but number one is, of course, money.

Mobile ad company AdMob released its July 2009 report (pdf) which notes the following:

  • 45 million estimated combined iPhone and iPod Touch users, compared to 3 million Android users
  • 50% of iPhone users bought at least one paid app during a month period, compared to 19% of Android users
  • The estimated market value of the iPhone App Store is about $200M per month, compared to an estimate of about $5M per month for the Android Market

So a major part of the equation is pure size. But another factor is the population makeup of Android users and their perception of the platform. The iPhone user population is likely much more diverse, with a greater cross-section of users representing more diverse demographics, while the Android user population is still likely predominantly tech-centric early adopters. Since Android is an open-source system, the perception may also be that the software that runs it should follow the same model. Thus many users may be reticent to spend money on apps.

 
Article Start Page 1 of 3 Next
 
Comments

Harold Myles
profile image
Interesting article.

I have been meaning to check out Android.

However I do take some issue with this line:

"While iPhone apps are written in Objective C, the Android SDK uses relatively more programmer-friendly Java."

Without getting into some religious jihad over how gross Java is, I will point out that the amount of Objective C you have to deal with on the iPhone is minimal, especially for games. Currently we have a code base that runs on iPhone, Win32, OS X, and just about any other platform that has a C++ compiler.

99.99% of it is written in C/C++, which is indeed 'programmer-friendly'. The Objective-C layer is minimal about 100 lines of code. So the statement about Objective-C on iPhone, especially for game development where you potentially won't be doing much with the App/Gui Kit other than making a window, isn't significant.

Personally I would take nice, native C++ development over Java any day. In fact, I would take Objective-C or even C# over Java, but that is just me.

With that said, thanks for the article, I plan on looking at Android at some time. It has been a long time since I had to deal with Java, perhaps its better than I remember. Android would be a good excuse to get into it.

James Hofmann
profile image
Harold: JVM doesn't necessitate Java programming these days. You have your pick of alternative languages, the best-known players today being Scala, Groovy, and Clojure, and ports of Python and Ruby. (as with other platforms, the dynamic typed languages are going to be slower, of course.) You'll get full access to the bounty of existing Java libraries, and most of the biggest issues encountered in making real apps have been resolved over the last decade, so the platform is actually one of the best ones to look at today regardless of what you're doing or your language preferences.

(I'm intending to learn Scala sometime.)

Mike Smith
profile image
One of the major considerations that this article did NOT touch on is massive slew of target hardware configurations you need to deal with when developing on Android. That's easily what makes developing for iPhone such a breeze and developing for cell phones a nightmare.

Of course, if you're just making a match three game you probably don't worry so much about it. But when you're trying to do high quality games like what you see on the iPhone, PSP, and even DS, it's a major issue.

Andrew Grapsas
profile image
Mike, it actually did touch on that.

"One advantage of programming for the iPhone is not having to worry (much) about hardware compatibility. This could potentially be a problem for Android game developers as new handsets emerge. The possibility of a backlash exists if users buy a new Android smartphone only to find that the most popular games in the market don't render properly on their screen, or that the control scheme for the game doesn't work."

Android Developer
profile image
Starting with the recent 1.6 SDK, you can officially develop C++ OpenGL games for Android ! Search 'glesquake' , it's a full Quake port developed by an Android engineer. It's not 100% perfect, as you still have to write a few Java code in order to initiate some stuff and send input events to the native code (a few hundred lines in the Quake example)... But hey, no more "I will never develop for Android because of Java" excuses please :)

Stephen Northcott
profile image
@Android Developer : Thanks for that update. We are looking seriously at Android, as we looked seriously at Palm. The problem with both (when we last checked) was specifically the lack of access, or crippled access to OpenGL. If that has indeed been fixed to some degree on Android then that is good news indeed.

Chris Pruett
profile image
Just to clear up a few points raised in the comments:

- The Open GL ES 1.0 Java implementation supported by Android is a standard, not something that Google invented. You can read about it here: http://java.sun.com/javame/reference/apis/jsr239/javax/microedition/khronos/open
gles/package-summary.html

- The NDK (Native Development Kit), as mentioned by Android Developer above, allows you to write native-code libraries and call into them from a Java frontend. As of the most recent version (NDK 1.6), this includes the ability to call directly into OpenGL ES (previously you were limited to just libc/libm). The NDK is here: http://developer.android.com/sdk/ndk/1.6_r1/index.html

- Applications that do not use private APIs (that is, APIs that are not included in the public SDK or are undocumented, including calling Android framework code from native libraries) may very well break from system update to system update--that's why they are private. Public APIs are ready for prime time and will not break between versions; the reason that the original release of the NDK did not support OpenGL ES bindings was because time was required to ensure that native code libraries are future-proofed.

- Of course, if you use native code you tie yourself to a particular CPU architecture. You can support multiple architectures in a single binary, and at the moment all of the handsets on the market are pretty much the same internally, but the advantage to a pure Java application is that it should run on any hardware.

- There are already a number of 2D and 3D games on Android Market that are written in pure Java. Here's the trailer for one that I like: http://www.youtube.com/watch?v=TcYFe_hf1IA . If you are interested, you can also look at (shameless plug) the SpriteMethodTest sample, which shows several ways to draw sprites (pure CPU vs various GL implementations) and profiles them. That code is here: http://code.google.com/p/apps-for-android/source/browse/trunk/SpriteMethodTest .

Stephen Northcott
profile image
Thanks Chris. That's all really helpful stuff. :)

Shaun Sheppard
profile image
In response to "I'm currently not aware of any games for Android that are physics-based", Yakloin (http://www.yakloingames.com) uses a full-blown, in-house, pure Java, 2D physics engine for Android. We used it in the game ongPay!, which is on the Android Market now. We did not exercise the engine to its full capacity, but it certainly adds value to the game play.

There are a few other games with physics, but not very many at all. The iPhone has plenty that are successful, which indicates players love physics-based games. I would love to see more of them for Android and Yakloin intends on helping out.

Kenny Wyland
profile image
I think it's pretty obvious what "programmer friendly" means. I've developed in C, C++, Java and now I'm doing iPhone app development in Objective-C and every time I sit at the keyboard I run face first into the epic fail of syntax that is Objective-C. It doesn't follow the conventions of most other modern languages and is much harder to read.

I think this was a great article. Very well written and researched! Thanks!

Mike Smith
profile image
@Andrew Grapsas.

Ooops looks like I only read the first page. Thanks for the correction!

Dean Edmonds
profile image
Another reason for the lower profitability of Android apps is that paid apps are only currently available in a handful of countries. For example, if you live in Canada the Market will only give you access to free apps, not paid ones. This problem should resolve itself over time as Google does the paperwork to comply with regulators in other countries.

Concentric Sky
profile image
We develop for both platforms and the Blackberry ( also Java-based ). Language differences aside, our biggest hurdle is the difference in audience. Apple has trained people to buy music via iTunes. Apple users expect to make regular purchases and those users generally keep what they've purchased once they've paid for it. Android users seem to balk at the notion of paying for anything - even for something sold for $.99. The ease with which apps can be refunded is also a factor ( we support it, but it does complicate things ). Combine this with the relatively small size of the Android market and it seems like a huge risk to develop serious apps for the platform - there's just too much risk that we will end up wasting our time.

Devin Monnens
profile image
They are also porting Processing to Android, which will allow those apps to run.

John Woods
profile image
Dude Android is dah bomb dude!

RT
www.complete-privacy.at.tc

Miguel Morales
profile image
Spot on, I'm developing a 2d game for Android but I'm not interested in making a quick buck. I'm interested in building a game from my imagination that has some decent shelf life in the least amount of time possible with the least amount of entrance resistance.
I was able to build a prototype of my game in less than a week, (thanks for all your notes Chris!)
The biggest hurdles have been the level editor (C++) and the backend server. (Not Android related, obviously)
Having never used Java before, I find it really easy to work with. Threads and message passing are handled beautifully and google has paid attention in implementing it in a way where GUI lag is minimal.
However, my experience with the iPhone has been minimal at best. Simply because I can't afford the contract expenses, and neither do any of my friends. This makes the upcoming android phones that much more viable and interesting to me. I've seen a lot of G1s in the wild in 'poor' communities.

I don't understand what the big problem with different screen resolutions and input devices is. With openGL screen resizing pretty much comes for free and if your game logic can't bear with changes in the screen size than you should revise it. Again, I've dealt with this and it wasn't really a big deal, I just programmed defensively by keeping in my mind that not all screen resolutions are going to be the same.

Same with the input devices, why can't you simply write your code to have different interfaces to the game which can be mapped at runtime? Give the user full control as to how to control the game as it should.

Of course, companies are not really interested in making something new, they want to make something safe that'll make them a buck. I think google is trying to offset this by easing developer access to the market, that way regular developers with no need for a 'budget' or overhead can product unique and exciting games.

So, if you want to make a buck and make some short-shelf-life game for the iphone please go right ahead.
If not, Android seems to be like it's going to be around for a while and seems like a safe bet when aiming to build a community and a solid game.

Dave Stevens
profile image
A lot of the negative points in this article deal with the limited hardware capabilities of android phones (memory, screen size, input considerations). I'd be interested in getting updated thoughts now that some more powerful Android phones are coming to the market.

The flagship of course is the Motorolla Droid, which has very high resolution, both a software and hardware keyboard, a great processor, and comes standard with a 16 gig microSD. I've got mine on order from Amazon Wireless, and I'm definitely interested in diving headfirst into game development on this platform.

The Droid Eris is 100$ less from verizon, but it also has pretty significant hardware.

As far as concerns about market share, we'll have to see what happens as these newer phones flood the markets. The Droid may not be an iPhone killer outright (quite a few complaints about its keyboard for example), but combined with the much more extensive 3g coverage of Verizon, it might start making some inroads.

C M Williams
profile image
@Miguel

Are you blogging your efforts by any chance? Me and a group of guys are just about to start a 2D game for Android and I’d love to hear more about your adventures. We don’t really have money in mind; we just want to have something for our individual portfolios. With regards to the devs that have shied away from the Android platform, I’m wondering what types of games they planned to develop? Simple clones of tetris, bejeweled, arkanoid, etc, etc? Or were many of them aiming for quality. Gameloft was recently quoted as having a negative view towards the Android platform and they aren’t making simple clones, they’re a pretty strong mobile game developer.

Miguel Morales
profile image
@C M Williams

Sorry for the late reply, but yes I have started to document my entire process.
Unfortunately I haven't had time to document some of the most interesting parts of my project. I'm aiming for a 2d mmorpg.
I'm using it as an exercise in building a massively scalable server application using Erlang.
My hopes is to simply have the game available to the most 'consoles' by the time I'm finished with it. I'm not interested in money since I have a day job, but I wouldn't mind quiting it. ;-)

http://developingthedream.blogspot.com/

Anyway, you can find my blog here, though it's pretty empty right now, I do have a couple of articles that I need to finish.
I'm also working heavily on the rendering code so I need to stabilize things before I document what works the best. (I've got the open gl stuff down, but I'm fidgeting with a camera system.)
Also, my background is perl and web development mainly, so I'm learning as I go.

I've heard about Gameloft's gripes, but frankly I'm more interested in developing the client fast and Android provides all the tools I need. (i.e. I'm using the rabbitmq java library to handle sending/receiving data.) and the native GUI for the interface.

To me at least, the iphone just isn't as interesting, I'd be writing a lot of low level code that I just don't have the time/money to write. Again, I just don't own an iphone and I love my G1. To each his own.


none
 
Comment:
 




UBM Techweb
Game Network
Game Developers Conference | GDC Europe | GDC Online | GDC China | Gamasutra | Game Developer Magazine | Game Advertising Online
Game Career Guide | Independent Games Festival | Indie Royale | IndieGames

Other UBM TechWeb Networks
Business Technology | Business Technology Events | Telecommunications & Communications Providers

Privacy Policy | Terms of Service | Contact Us | Copyright © UBM TechWeb, All Rights Reserved.