Contents
Developing Games for Android
 
 
Printer-Friendly VersionPrinter-Friendly Version
 
Latest News
spacer View All spacer
 
November 21, 2009
 
Video Game Watchdog National Institute On Media And The Family Shutting Down [9]
 
Modern Warfare 2 Infinity Ward's 'Most Successful PC Version' Yet [3]
 
New Tech, Design Details Of Project Natal To Emerge At Gamefest In February
spacer
Latest Jobs
spacer View All     Post a Job     RSS spacer
 
November 21, 2009
 
Gargantuan Studios
Lead World Designer
 
Gargantuan Studios
Technical Art Director
 
Warner Bros Games
Sr. Software Engineer, Gameplay - WB Games (Chicago Location) - #115557
 
Microsoft Game Studios
Multiplayer Game Design Lead - Halo
 
Warner Bros Games
Sr. Concept Artist - WB Games (Chicago Location) - #114692
 
Monolith Productions
Sr. Software Engineer, Engine - Monolith Productions - #114703
 
Warner Bros Games
Sr. Software Engineer, Engine - Surreal Software - #114006
 
Sony Computer Entertainment America
Developer Support Account Manager
spacer
Latest Features
spacer View All spacer
 
November 21, 2009
 
arrow Upping The Craft: Susan O'Connor On Games Writing [5]
 
arrow Small Developers: Minimizing Risks in Large Productions - Part II [5]
 
arrow iPhone Piracy: The Inside Story [48]
 
arrow And Yet It Grows: Analyzing the Size and Growth of the European Game Market [5]
 
arrow NPD: Behind the Numbers, October 2009 [13]
 
arrow Reflecting On Uncharted 2: How They Did It [5]
 
arrow Sponsored Feature: Rasterization on Larrabee -- Adaptive Rasterization Helps Boost Efficiency
 
arrow Postmortem: Wadjet Eye's The Blackwell Convergence [2]
spacer
Latest Blogs
spacer View All     Post     RSS spacer
 
November 21, 2009
 
Planckogenesis, Part II: Song Structure & Gravy Train
 
Designing Games Is About Matching Personalities [1]
 
An Indie Developer’s “Biggest Mistake” [9]
spacer
About
spacer News Director:
Leigh Alexander
Features Director:
Christian Nutt
Editor At Large:
Chris Remo
Advertising:
John 'Malik' Watson
Recruitment/Education:
Gina Gross
 
Features
  Developing Games for Android
by Derek James
20 comments
Share 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%.

Advertisement

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."

sombrero kid
profile image
this article is pretty deceptive imo, as someone who's developed for android and the iphone, i can say that the android model is severely lacking.

the biggest diference between the iphone and android, and the reason android has failed is simply that google do not believe in native applications, or even client side applications for that matter.

we've all learned the mistakes of virtual machines, the write once debug everywhere approach that came with the extra interpretation layer added headache upon headache to j2me developement, garbage collection on embbeded devices, seriously!

code portability for the iphone being from c++ means 90% of appications we use and are happy with can be relativly painlessly ported to the iphone, google could've exploited portability from j2me, which would've been a waste of time as we'd all rather forget the games of that era, however they delibetatly broke thier java compatability to avoid paying royalties to sun, negating the only, arguable strength of thier new platform.

i don't agree that target platforms is a big deal anyone who works with higher end devices consoles and pc's will tell you that targeting differant screensizes or even processors is a breeze if you're running nativly, when running on top of a foggy poorly implented interpreter it's a different matter and i'm sure we'd all agree 90% of porting issues with j2me were introduced by the jvm.

sombrero kid
profile image
i forgot to touch on the horrendous nature of the android sdk even by javas standards, how broken it is, the shoddy open gl implementation, the fact that they conned us into believing the platform was capable of something it wasn't by giving the neocore guys access to native code for thier open gl demo, the api rewrites that break your application at a basic level for little to no reason and the outragous garbage collection lag.

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.

sombrero kid
profile image
@Android Developer
i'm aware of the java native interface, it shouldn't be nessisary, and i don't trust google not to rewrite it serveal times over like everything else, i don't think they're interested in the platform, there's a reason there's no iphone quality games on the market and the shops riddled with people trying to charge for pdf readers.

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.


none
 
Comment:
 


Submit Comment