A call to arms: Why every kid (and kid at heart) should write an iPhone game
blog.makegameswith.us
blog.makegameswith.us
Kids should be on platforms where tinkering is allowed and encouraged. This is the way they learn. They should be on platforms where they cannot be "banned" for having fun.
They definitly should not piped directly into a megacorp's cash-pipe from birth only to learn its one platform, its one language used only there and learn skills which only has value inside that megacorp's locked eco-system.
That would be a very stupid and very bad thing to do to a kid.
TLDR: iPhones considered harmful.
TL;DR: Indoctrination considered harmful.
The goal for building a game should be learning design, time management, and discipline. I think the technical aspect is very overstated. I mean, knowing the basics is important, but anything after that is something people should be able to figure out on their own. The technical skill required for creating a simple game is very basic - the most difficult part is learning how to finish a project in time, how to stay motivated, and how to design a fun product.
To develop an iPhone game you need a relatively modern Apple desktop/laptop (at most 2 year old if you plan to run xcode 4.5, thus fairly expensive) and an iOS device (the cheapest you could go would likely be a 4th gen used iPod, still somewhat expensive) + a yearly $100 license (not sure if this is waived for students?). You also end up learning a somewhat insular language with a ton of idiosyncrasies (Smalltalk on top of C with a somewhat uncommon take on memory management).
I feel like you get a lot more bang for your buck with Java and the ability to develop from any platform out there. An old Ubuntu box will do just fine, or Windows for that matter.
But...I'm running Xcode 4.5 on a 4 year old MBP (late '08) that still performs like a rockstar. And if you are going to build for Android (and take it seriously) you'd need to invest more than the cost of an iPod Touch to have enough devices to cover fragmentation across screen sizes and manufacturers. And I guess (?) you could call Obj-C insular - but learning it opens the door to deliver experiences to a huge chunk of mobile users. Long way of saying, I'm struggling with your "bang for your buck" argument. Especially if you're hoping to monetize your app. Because the primary ecosystem for that still seems to be iOS.
Others seem to agree: http://techcrunch.com/2012/09/25/ios-android-appcelerato/
If you were truly strapped for cash, an iPhone/iTouch device is not actually necessary given the iOS simulator. And we'd totally be willing to test games on our in-house test devices if a developer doesn't have an actual device. Ashu, the guy who wrote the blog post, actually developed his game before he got his first iPhone.
Developers also don't need to worry about the license, as the game is published through us.
I'd disagree with your point about Objective-C. Firstly, automatic reference counting (ARC) mostly eliminates the burden of memory management. Also, learning the language is a requirement if you're at all serious about getting into mobile game development or mobile development in general. Any serious mobile app/game on the market HAS to have an iOS version.
While Android certainly has greater market share than the iOS, the fact is that Android has lots of device/OS version fragmentation. Greater proportions of iOS users, on the other hand, tend to upgrade their devices. This makes us comfortable enough to drop support for devices older than the iPhone 3GS and not have our developers worry about backwards compatibility (the new iPhone 5 screen is a non-issue). People have also found that despite lower market share, iOS versions of the same game offered on Android usually gross more revenue.
That being said, we are definitely moving towards publishing on Android soon.
What happend if somebody (me) is already familiar with xcode/obj-c and have created apps but never games?
Regarding everything else, the business side in particular, I completely agree that you cannot do much better in mobile than with iOS today. Perhaps there are some esoteric options with 3rd world cell-phones and selling services through SMS, but let's overlook those for now. That of iOS is a demographic of people who are willing to spend money, and thus it's a good match for your need. As you mentioned, assuming iPhone games, only having to support 1 OS version and 1 resolution with 2 easily bridgeable screen sizes is a big boon.
On a sidenote, I still don't agree that iOS memory management is at all a good entry level paradigm. Reference counting, choosing between strong, weak, copy, assign, unsafe_unretained etc., retain cycles, transferring memory ownership from CoreFoundation libraries are all not trivial concepts for the average 16 year old. I'd be curious to read a blog post from you guys to see what your experience with this will have been.
And while it is more helpful to know the difference between strong and weak references, that is IMO a very accessible concept.
Is the "iOS grosses more than Android" thing still valid? Have any of your interns made good money with their games?
That aside, the price of entry to run on iOS is an excellent objection, as is (to some degree) the lack of code portability. I don't know how simple GNUStep is to get running, but it's certainly not as ubiquitous as all the JVMs.
As for Java though, I think kids would do a lot better with JavaScript ;-)
Of course that still means a MacBook is needed, just not a recent one.
Much as I dislike the language it will run anywhere and you won't have to fork over $ for gear and silly licenses to deploy. Anybody in the whole world can instantly play your game if they have web access if you upload it to some public page.
Let's not push kids to closed off, for-pay eco-systems.
One doesn't have to spend minimum ~$700 to play the game. Tools and API are freely and easily available. Language, Java, is sth that students usually learn in initial years (No, I am not saying it's the best/worst language).
But I still believe the grand parent commenter's suggestion of JS is more practical and will benefit the kid in long run even though it shall, most probably, not earn him $35K immediately or win him cute groupies. JS gives you the power to make things anywhere quick and see the changes instantly. Anywhere!
I'm hardly surprised. People these days really don't see to value freedom and openness the way they used to. It's especially disappointing to see the same trend in hacker-circles.
I look at it as a call to get started with game/app development than to start producing state-of-the-art games.
1. cloning an existing product is probably a very good way to learn about the platform and learn about game programming, and that learning process seems to be the post's main drive.
2. your subjective response to the game's originality is irrelevant to the "call to arms," all that is required for the call is a set of facts, which may provide inspiration for other young programmers: A young programmer completed a game; Creating the game taught him a set of very valuable skills; The game was deemed publishable by Apple on their store; The game generated social and monetary profit.
As someone who thought Objective-C was a terrible language with weird syntax at first, I'd have to say that 1) Verbosity shouldn't be mixed up with complexity, 2) You get used to the different syntax in a couple of days, and 3) Objective-C code is really readable once you get used to the syntax, in the sense that you never have to guess at a method's parameters.
Wikipedia has this example of Objective-C, which illustrates what it looks like: [window addNewControlWithTitle:@"Title" xPosition:20 yPosition:50 width:100 height:50 drawingNow:YES];
This is essentially calling the addNewControlWithTitle:xPosition:yPosition:width:height:drawingNow: method on the window object.
I didn't get $35K or groupies, though. I got about $200 a game from a disk-of-the-month club service for them, which was "real money" to a 16 year old farm boy in the 80s...
I don't know how big a deal the underpowered hardware actually is; my suspicion is that you're overstating it.
I agree that an app is unlikely to get any traction, but it's not obvious that a desktop game is any more likely to.
That's also why you see so many initiatives (like Ouya, Icontrolpad 1 & 2) aiming at bringing physical controls to tablets and phones.
Underpowered is a big deal. Before game makers were always pushing to do better looking, better working games and so on, and since we fall in the casual games bubble it has just become an endless flow of "meh" games not very enjoyable nor technically impressive. It is similar to what happened to the car businesses: it used to be a passion where most cars were built to reach top speeds and look cool and slowly became mass-market, fridge and washing machine like business with slow cars designed like shoe-boxes. It's just lame.
Getting traction is not the only thing that matters in life. Making a difference in an existing market is. You are more likely to make a difference on a desktop market with a great game than the same on the phone, just because it is so easy for everyone to publish crap on it. That's what the Introversion guys are doing and while they are on very limited resources they just strive to make better and better games for the desktop. They deserve more credit than they get.
Also, my 'under powered' phone has a faster CPU, and more ram than by x-box.
http://www.anandtech.com/show/6324/the-iphone-5-performance-...
Also note the distinction between the Xbox and the Xbox 360, because the iPhone 5 is undoubtedly more powerful than the Xbox.
But getting their parents to spend €1000 in the Mac, €100 in an Apple Developer and €389 (+ 2 year contract) for the iPhone is just too much.
Specially when many countries have an average income of around €500 euros.
Kids should learn using open systems that don't cost their parents an arm and a leg to pay for them.
That's a pretty shit deal.
Compare it to the Android deal: It now has over 75% of the smart-phone market. Developing on it can be done for free, using free tools, on any PC or Mac, basically any platform with a JVM. Chances are you can do it on a machine you are already own. Applications can be distributed freely, directly to your friends, without the need for any store approval.
Android in short: Zero cost. Ready to go on things you already own. Full freedom.
Whoever wrote this and decided that iPhone games was the thing kids needs to learn must be smoking some pretty heavy weed.
I've played a ton of different games (board games, Magic, card games, RPGs, shooters, city-building, etc) and have even tried to create simple games in the past. What I found the most challenging and exciting was how to get all the different aspects of a game to come together. Top games today are probably made by specialists (I'm guessing) with someone who focuses on story or design or power balance or gameplay, etc. When I was a kid trying to put together all these things myself, I found it to be a really exciting and fun way to use my brain.
I guess I disagree that the reason kids (and kids at heart) should try building a game is to "build a product, make money and make people all around the world just a little bit happier." I think the reason they should build a game is to practice doing different types of critical thinking. But maybe it's hard to convince a kid to build a game with that kind of reason. :)
It always amazed me how easy the App Store made it to access such a vast market and that a game I built in my free time was being downloaded by people in countries as far away as Kazakhstan.
"Why every kid should buy an iPhone and iMac, because that's the only way you can develop iPhone games"
No thank you, Apple.