Game Development On Android
Gamasutra is running an article about the state of game development on Android. The author explains some of the strengths and weaknesses of the platform, and makes comparisons to development on the iPhone. Quoting:
"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. ... For now, if a developer decides to implement a game exclusively for a particular smartphone platform, and the choice is between the iPhone and Android, the tradeoff is between trying to get noticed in an incredibly crowded and competitive market where the potential payoff is huge for those at the top, or entering a market with low barriers, little competition, currently low returns, but the possibility of potential growth."
I think that Android's future depends not on Google but on the devices that run it. Apple has the advantage of controlling both the platform and the device. So you know that whatever you develop for the iPhone it will work. But Android resembles more the PC market where there are different memory capacities, 3d acceleration or not, multi touch or not, keyboard or not, etc. That's why I don't play games on my PC and I bought a separate games console. Because I don't want to care about requirements.
mov ax,4c00h
int 21h
The way the section quoted in the summary plays up the "wide-open field" of Android just strikes me as very silly. If you replaced "Android" with "Mac" and "iPhone" with "Windows," you'd have a pretty good approximation of the marketshare situation in the PC game market...and no one's suggesting that writing games for Mac is smarter than writing games for Windows due to massive overcrowding of the Windows games market.
(Apologies for any incoherence. Please blame posting before fully waking up.)
Dan Aris
Fun. Free. Online. RPG. BattleMaster.
This is also why consoles are stuck with the same copy-of-a-copy-of-a-copy games while the real innovation happens on the PC.
You can use logic all you want to show the advantages Android phones have, but until the shine wears off for the iPhone fans and people realize just how tied their hands are, it will remain the dominant phone. Really, the average user doesn't even care, although they usually realize later that they should have. The article that predicted 2012 for Android to surpass the iPhone is probably accurate, or perhaps even early.
>in Objective C [...] more programmer-friendly Java.
[Arguments needed]
Hmmm. Long-term investment with the potential for steady, but solid growth? Or the ridiculously slim chance of striking it big in an oversaturated market? As an American, I think I know which way my fellow countrymen will tend to lean.
Android is definitly a tempting choice for development - purely because of the ease in which you can push a product to market. But then again, there's also Symbian, which is used on things like the Nokia N97, which has been around for ages (in various itterations), the latest one is the true smart-phone style thing, but I have a 3 year old phone with an older version of Symbian on it that can still run Java Games, meaning there is already the possibility of a large market for simple apps that can run on older phones as well as the newer smartphones
It pays to be obvious, especially if you have a reputation for being subtle.
That's depends entirely on the taste and skills of the programmer.
Microsoft and other anti-freedom corporations use corporate languages like Objictive C and Java. Thses languages impede thinking and stifle freedom and creativoite Free Software Developers everywhere use LISP on their telephone.
UNITE with the Campaign for a Free Internet because today, our future begins with tomorrow!
One argument would be the available tool set and support for Java-based technologies is much larger than that of Objective-C.
Additional, the collective knowledge (and hence publications) for Java, is again, larger.
Unlike the Mac/Window comparison, Android's market is not purposefully small. Android is currently T-Mo, but will be on other telcos soon. Android is looking to be used in the Netbook space too. While the market share is smaller, Google is actively pushing it grow, and Apple is beginning to look like Microsoft in this area. Given that most games were written in Java before the iPhone, and I bet the port from MIDP to Android SDK is not a big one, I think you will see real competition in the game market. Does this mean we will be seeing the "I'm an Android/ I'm an iPhone" commercials now?
"Ones and zeros were everywhere. I even think I saw a two!" - Bender
What is the utmost important for developers is to get them paid for their hard work. The openness of Android platform is actually hurting developers' profits since it encourages pirate copies of their software freely distributed on the internet. With the tight-control of the distribution and installation of software, iPhone platform seems to provide a stronger incentive to developers to write innovative applications for iPhone. The popularity of the iTunes' App Stores has proved my point.
Maybe because there are more Java programmers than Objective C ones?
First, I have an N95 8GB which is the best "phone" I have ever seen. Symbian is fine as long as there are buttons to push. I mistakenly bought the steaming pile of shit, that Nokia refers to as the N97. Nope, Symbian is not god for, ready for, should be used on, anything with a touch screen. This thing is a disaster. Update the OS, doest it make it any better? Nope. Symbian has hit a brick wall. N95 = good (V3) N97 = not only bad, but embarrassing for Nokia.
I think the reason Nokia is releasing the N900 is because they hit a dead end with Symbian 5 and the N97.
Development? go look at maemo.org. Everything you could want. Apple C or Java, puullleeese, it's Debian Linux with every tool you can think of.
Nokia prolly was reluctant to do this, but with the embarrassing failure of the N97 and Symbian 5, they had no choice. The N900 is light years ahead of the iPhone, or Android, and all the development choices are your. You don't have to pay or ask permission from anyone to develop in Linux.
* Carthago Delenda Est *
Oh yes, every game developer would MUCH rather program in Java than in C/C++ (of which Obj-C is a superset). It is soooo much easier to write OpenGL code in Java than in C. What a joke. This article is completely idiotic.
By the logic of this author, it's better to open a store in the middle of nowhere than a shopping center, because the middle of nowhere is not saturated with competitors. The number of applications on the iPhone actually draws in more customers, Apple advertises rather heavily the fact that you can find an app for anything!. It's also been shown that iPhone users are willing to pay money for applications, has the same been shown about android users? Also I question whether Java is more developer friendly than objective - c. The syntax is more familiar ... perhaps, but thats really its only advantage, Objective C also has memory management (if you want it).
FTA: "The developer laments issues with the market interface [...] and a lax return policy (24-48 hour returns, no questions asked). But the issue of piracy is also raised, [...] A cursory search of popular torrent sites reveals bundles of Android games for download."
For a prospective developer, those are some serious issues... I was hoping that the second half of the article would mention some changes in the platform that would solve those issues, but the only solution that is offered is to "monetize apps through advertising."
Investing time to master the Android SDK seems exciting because it's a chance for everyone who missed out on the initial iPhone app wave to catch a new wave. However, after reading this article it seems like it would be more advantageous invest time creating an awesome app for the iPhone.
That doesn't mean that Java is more programmer-friendly than Objective C.
My other account has a 3-digit UID.
That doesn't mean that Java is more programmer-friendly than Objective C.
Right, it just means that more programmers are Java-friendly.
Write your representatives! Repeal the 2nd Law of Thermodynamics!
Java may appeal to some, but many of us just want C/C++ (Objective-C, allows that).
Games on consoles and PC are normally not developed in Java for many good reasons. Game developers that want to transition to phones are likely to prefer to stay with C++ where they can use their tools of choice, such as Visual Studio.
In fact, I think that a few people out there already develop C++ on PC and keep the actual iPhone/XCode build on the side. This is a big plus for those that are already making games and would like to try to use their knowledge and tools for a cell phone game..
"La presi e te la pagai (480.000 Lire)"
C/C++
Counter-Strike
StarCraft / WarCraft
Gears of War
Bioshock
Duke Nukem
Doom 1,2,3
Unreal Tournament
Halo
Oblivion
Eeathworm Jim, Monkey Island, Braid..
Half-Life
--- insert pretty much everything important ever made ---
Java
Some Tetris Clone
???
I have to agree to a certain level. Apple has a level of quality control that people tend to forget and think of it more as a proprietary system. Its true Apple does not make sense in their choices most of the time and for some reason it works. A elite cliche type of expression if you own their products.
Whiles others that see room for improvement in their model try the same with looser controls and it never seems to be able to catch that distortion field momentum that Jobs is so good at creating.
However, you aren't forced to buy Windows games only from the Windows Store(TM) where each game must be approved by Microsoft before you can buy it. If that were the case, developing games for Mac would suddenly start to look at lot more appealing, in spite of the smaller installed base.
Support Right To Repair Legislation.
"While iPhone apps are written in Objective C, the Android SDK uses relatively more programmer-friendly Java."
Javas problems regarding non-deterministic garbage collection and non-existing management of other kind of resources than memory is programmer friendly? Really?
If you have other kind of resources in an object the object can be stuck in the pipeline without being garbage collected for a long time or never for that matter if memory usage isn't high compared to available memory. It's simply broken IMHO.
Personally I think non-deterministic garbage collection, as implemented in Java and C#, is the biggest king-without-clothes in modern history when it comes to programming.
That Java is programmer friendly is subjective at best.
But if you want it to be cross (CPU architecture) platform easily, you'll want to stick to it.
You can actually build native code with the Native Development Kit using C/C++/whatever, and so far all the current phones are pretty well compatible as far as native code goes, but if someone rolls out an Android device with a different CPU architecture than the current ARM incarnation, you'd have to rewrite or at least recompile your native code for it, and either distribute multiple versions of the app or include the native code for all versions and dynamically pick the correct one at run time.
relatively more programmer-friendly
[citation needed]
The statement "given Android programming is much easier (far more programmers know Java than Objective C)" is nonsensical. True enough that Java is popular, but Objective-C is trivial to learn. Actually the languages themselves don't have much bearing on the ease of development for the two platforms. It's the APIs. I've recently started messing around with Objective-C and Apple's Cocoa, and the language itself is VERY easy to pick up (and I'm not a professional developer s much as a person that uses programming as part of his job). The Cocoa API, however, is another kettle of fish. Not that Cocoa isn't well designed -- it's astonishingly well designed -- but, it's huge. Java is similar in that the language is relatively simple (on par with Obj-C, more or less), but you've got LOTS of APIs to learn.
I suspect that if you are a game developer, you're probably making little use of most of the APIs, and if you are big enough, I'm sure that you use a toolkit that abstracts-away the underlying platform. In either case, the primary language used probably has little bearing on the ease of development of games on either platform.
How is this any different from application development on PCs? It's really hard for me as a developer to feel remorse for a mobile application developer when it comes to backwards compatibility.
Clearly define what your hardware requirements are for your application. If the user doesn't comply, it's their own fault. Nothing new here.
interactive hologram, or it didn't happen.
I am in love with my new phone. The Android Marketplace from what I can tell is almost %80 free. I plan to personally download the SDK and Eclipse stuff and make my own apps/games in java. The Hero is a solidly built phone with every feature you could ask for including exchange sync. Love it!
Not if you learn it properly - ie you learn the C side of it. Any idiot can learn the high level fluffy OO stuff. Get the same idiot to learn about pointer arithmetic or functions pointers or pre processor macros or casting issues or 101 other C gotchas and its another story entirely. Its the same story with people who claim to "know" C++ when in actual fact all the know is how to use "new", "delete" and maybe the STL and know jack shit about the in depth complexities of the language.
Are you serious?
The Iphone may have a better market share than Android, but this isn't Windows to Mac, it's more like Mac to Linux, or I dunno, AmigaOS to RISC OS.
There are a vast range of companies in the phone market - none of them have a Windows like share, but for the larger companies, look at someone like Nokia.
I'm astonished at the sheer ignorance of the reality of the mobile market here - that people continue to propagate this myth that Apple are not only in the lead, but have a monopoly, when neither is true. Slashdot was once a place to come where people knew about the tech industry - sadly not anymore.
... but one has to wonder if technology based vendor lock in for music will remain a valid strategy forever
Um...what technology based vendor lock in?
You do know that not a single track sold on the iTunes store since April has had FairPlay DRM, don't you?
Dan Aris
Fun. Free. Online. RPG. BattleMaster.
Java vs. Objective-C is a non-starter compared to what libraries are available to each platform.
Most serious game developers on the iPhone aren't even writing much Objective-C - they often use a framework like Unity, which lets you script in Javascript or C#.
Even those using some of the free frameworks like Cocos2D are spending more time thinking about Cocos objects than they are about Objective-C syntax, which is pretty easy to pick up. Syntax is only a tiny part of any modern platform, it's all about libraries... and even for application development the iPhone has a richer set of libraries than does Android (though Android is pretty close).
"There is more worth loving than we have strength to love." - Brian Jay Stanley
I wrote the iPhone version of Repton primarily in C++. It is easy to mix Obj-C and C++, and I prefer C++ for OpenGL usage. A few UI items I implemented using the Cocoa Obj-C interfaces because Interface Builder is so pleasant to use.
Any one suggesting iPhone development is limited to Obj-C is inexperience in iPhone development. Any one suggesting Obj-C is hard to use compared to Java may have a point, but primarily because the Java IDEs are so good compared to XCode. As far a game dev goes, I prefer C++ to Java especially the OpenGL bindings, and I think game dev benefits from new/delete control one has in C++.
The biggest strength the iPhone platform has is that the screen sizes are all the same, which makes game development much easier. You can optimize for that resolution and the standard set of inputs, instead of having to accommodate some people without multi-touch, some people with a keyboard and some without, all with different screen sizes that may affect the playing field.
The iPhone game developer does have the same issues as far as 3D power though, because the 3Gs and newer Touch devices support a more advanced version of OpenGL than does the original 3G platform (and remember, those are still being sold new!). So you have to decide if you want to support just one platform or program to allow for downgraded capability on some devices (which Apple makes about as easy as it can be I think, but it's still some work).
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Once again, Apple shoots itself in the foot with their closed architecture and rigurous standards. With Tegra and Snapdragon coming to Android devices Apple is going to lose the hardware edge it has right now on Android devices and be left with no edge other than the "cool" factor; I'm not claiming the iPhone is going down in flames, it'll still do well. However, in terms of market share it will definitely go down to 3rd or 4th place in the market. I'm not an Apple hater, their products are solid, albeit overpriced. I am a proud Android user, I had the choice between the two devices and I went with a G1 over an iPhone because I saw its potential to become the top dog in the mobile market. Is Apple wrong to stick to its mentality? I wouldn't say that necessarily, they've enjoyed the No. 2 spot and laughed themselves to the bank every year while enjoying consumer popularity as opposed to the usual Microsoft hatefest.
The Android Market is open to all
But remember we are talking about games here.
We are not talking about Flash players or Google Voice or apps that skin the home screen.
For game developers, there has basically almost never been a problem with rejections outside QA issues (like crashing). So how is the iPhone market really less open for them? You can market your game any way you like to take users into the app store, and many more people are likely to see your game on the iPhone just browsing for games.
I'm sure the Android game market will improve with a lot of new devices going out, but you'd have to be mad at this point to not put a game on the iPhone first, and then decide if you would see enough return to port to Android.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
If you are making your platform choice based solely on the primary development language of the platform then you might not be ready for game development. The knowledge and understanding necessary for making something as complicated as a video game transcends programming language.
but the possibility of potential growth
Don't step in all that potential.
Why bother
While 90k+ apps & over 2bln downloads makes it harder to get noticed, those numbers say it all.
I've used a few Android phones and I like them. But the thing that makes the iPhone great to develop for (after you get past obj-c hurdle, the api's are actually really good) is that it's *standard*. One form factor, end of story. I can't help but think Android is gonna fall into the same hole that J2ME did when it tried to support everything. Already developers are maintaining separate branches for separate devices for Android. I've developed J2ME apps before and they are a f-ing nightmare. That platform never took off for a reason, because there's *too much* choice and diversity. Everything to all people; good luck.
There are also no where near as many Android users as iPhone and so developing for that platform with the intent to make some money on your app is not very plausible at this point. Maybe in a few years, maybe not. (Plus I hate Eclipse, so much unnecessary bloat, just like Java. I want tools that are fast and that don't require 5mil downloads of some frameworks I'll never use. But the Eclipse thing is only my hang up and I'm sure most Android devs won't care.)
So as a developer what makes more sense? 5 code bases for 5 Android phones - all with different form factors / features - and relatively little money for all your toil? Or one platform and the chance to hit it big? It's the same argument on a PC; develop for the huge Windows market, or everyone else?
"relatively more programmer-friendly Java" -- LOL!
Objective C is the retarded inbred child of C and C++ after that one night they hit the sake and redbull!
No, it's actually the purely object oriented, dynamically typed, late bound, garbage collected, message passing, compiled-to-machine-code child of C and Smalltalk.
My other account has a 3-digit UID.
With C++ filming it all....