Games and Apps Deveopment 101 for a Teen?
August 30, 2012 7:00 PM   Subscribe

I'm asking for my 14 year old son...how does one get started in developing games and apps?

My entire knowledge base consists of typing goto (and something else I can't remember.) in DOS in 1982.

Does he need software, online forums or tutorials? What are some great resources for him?

Anything that will guide him and nurture his interest is very much appreciated. I'm the go-to guy for many things, but this isn't one of them!

Many thanks in advance!
posted by snsranch to Computers & Internet (23 answers total) 30 users marked this as a favorite
 
He should get himself some books on Xcode and C if he wants to develop for iOS, and I'd also recommend looking into getting him a Lynda.com subscription so he can take advantage of the video tutorials it offers on the subject. iTunes University classes can likewise be a good resource as many of the top universities offer online programming courses that are really en pointe and current. He should also consider taking some art classes and working on his writing skills; being able to sketch out and explain an idea visually and verbally is crucial to getting your ideas heard. I notice you're in San Diego. Tell your son to Google "San Diego app development companies". He could maybe get an internship at Nimblebit, the developers who created Tiny Tower. :)

I work for another app developing company personally. Hurray for development!
posted by Hello Darling at 7:06 PM on August 30, 2012


I'm a book person rather than a video person (though Lynda is fantastic if you're more video person) when it comes to stuff like this and I find Safari (no relation to the web browser) pretty amazing, if a bit steep pricewise. Assuming reading off the screen isn't a problem.
posted by Ghostride The Whip at 7:16 PM on August 30, 2012


Snake Wrangling for Kids isn't a bad intro to programming, and it uses simple game development as the core of the book.
posted by COD at 7:17 PM on August 30, 2012


One option is to learn Python and use a library called PyGame, which greatly simplifies a lot of the technical details involved in games. The issue is, making video games is a tremendous amount of work, and so PyGame will let him start small and work his way up. Codecademy has started a Python track, which might be a good place to start.
posted by spiderskull at 7:17 PM on August 30, 2012


For iOS, yes, you need Xcode and Objective C. Lynda.com is a great resource.
posted by dfriedman at 7:22 PM on August 30, 2012


If he doesn't know anything about programming yet, Game Maker would be a good place to get started making games. I haven't used it, but it's supposed to be easy to learn and quite powerful when you master it, and it will introduce him to the basic concepts of game design and coding. There's a free "lite" version.
posted by A Thousand Baited Hooks at 7:28 PM on August 30, 2012 [1 favorite]


Wow, you guys are awesome! He's already checking stuff out.
posted by snsranch at 7:29 PM on August 30, 2012


Oh, and if he wants a game about learning to program that isn't iOS specific, Code Hero is very cool and pretty functional, even for an alpha.
posted by Ghostride The Whip at 7:38 PM on August 30, 2012


If he's just starting out, languages like xcode and objective c might be a little too high on the learning curve without proper guidance. For young newcomers to programming I suggest more age specific languages like LOGO (One of my childhood favorites) or something like the Kodu Game Lab. Learning tools like these are a fun way to get into the basic concepts of programming logic (conditions, variables, loops, datatypes, etc) without being too heavy on syntax. From there he will develop a foundation he can take with him to other high level languages like VB, C++, Java, Xcode, etc.
posted by samsara at 8:00 PM on August 30, 2012 [1 favorite]


He should get himself some books on Xcode and C if he wants to develop for iOS

I'd actually reccomend against this. Xcode isn't completely terrible, but pretty much every single professional alternative is better. I really despise all the parts of my development cycle that rely on Xcode, and I don't even use Objective C for the most part. As a language, Objective C is genuinely terrible and way too specific to the Apple ecosystem - he will never use it outside of developing for Apple products, ever, which would be fine if it was not a terrible, terrible language. For general apps, I wouldn't touch Objective C unless there was a really specific need for it.

For IOS game development specifically, I would reccomend learning C# and using the amazing , which is free for non-commercial DIY stuff. These tutorials are very good. C# is a much better language than Objective C, will be much more useful to know in contexts apart from IOS app dev, and has an enormous amount of resources available online, plus a huge community. In addition to Unity3D itself, he'd probably want to install the latest version of Visual Studio if you're on Windows, or MonoDevelop if you're on OSX.

However, since he's a teenager, I would reccomend learning Flash/ActionScript and getting into the indie game deve community, because it will get him from "tutorial to working game to peer feedback" a lot quicker than almost anything else, and it's the "peer feedback" part that will do him the most good and keep him the most motivated. ActionScript is almost as terrible a language as Objective C and about as useful outside of it's niche, but the community around Flash Game Dojo is much better than the very large but very sprawling and unfocused community of general Obj-C/IOS developers. Flixel is a terrific library, and FlashDevelop is an excellent free IDE. I can give you a ton of other links, if he's interested.

A similar option, if you guys have an XBox, would be using Microsoft's XNA and developing XBox Live indie games. That's another great scene, lots of support and resources, and again, it will get him from "following a tutorial" to "peer feedback" really quickly. I honestly wish they'd had the XBox Live indie games when I'd been a teenager, I'd have spent all of high school making stupid platformers and getting my friends to download them. Your son can live the dream!

I could go on about this very specific topic for literally hours, so please MeMail me.
posted by The Master and Margarita Mix at 8:22 PM on August 30, 2012 [2 favorites]


Err, that should be the amazing Unity 3D. Really, it's great.
posted by The Master and Margarita Mix at 8:24 PM on August 30, 2012


As a professional game developer, I'd actually advise against diving straight into objective-C unless your son already has some programming background.

Unity3D,Corona, MOAI, or GameSalad are all free and will allow him to do the actual game making part sooner.
posted by ikaruga at 8:28 PM on August 30, 2012 [2 favorites]


Also professional game developer here! Please do not rush him into trying to learn objective C or any other professional programming language straight off the bat. The learning curve is steep, and tough to do without classes if there is no programmer in the house to teach basic concepts. Go for something simpler, to learn the basic concepts of programming without all the overheads, something that gets things on screen so he has a fast feedback loop.

I would recommend either code academy for learning the basics, if he enjoys doing straightforward question and answer exercises, or processing if he enjoys messing around with something he can tweak, break apart and rebuild. Processing is nice because you see graphics on the screen instantly. Both of these are completely free too!
posted by Joh at 8:45 PM on August 30, 2012


As another game developer, I'd recommend going through one of the youtube tutorials for unity3d. The first answer for this question has a pretty good walkthrough of how to get started http://answers.unity3d.com/questions/12321/how-can-i-start-learning-unity-fast-list-of-tutori.html
If he's just starting to program now for the first time, some of my friends have been pretty happy with: http://www.codecademy.com/tracks/code-year . At some point it helps you make blackjack :)
posted by uncreative at 8:48 PM on August 30, 2012


A lot of our students use Scratch. Not a formal programming language, but has a lot of the logical operands involved in programming. It is GUI-oriented programming interface, and Scratch creators can share their work online. Oh and the main purpose is to create games.
posted by jmd82 at 9:18 PM on August 30, 2012


Here's a set of tutorials specifically for developing iPhone games and apps. Might be too advanced for him if he's completely new to programming.
posted by dephlogisticated at 9:30 PM on August 30, 2012


Please do not rush him into trying to learn objective C or any other professional programming language straight off the bat.

Personally, I think this is bad advice. The quality of the learning and reference materials, the community, and most importantly the available libraries/API/tools are what's going to make the difference. How many kids do you know who started out using LOGO or Alice or [insert toy language here] actually made the jump? Don't get me wrong, I think the rest of your comment is spot on, but I've never seen the various "programming training wheels" succeed. Anyone who is capable of learning to think algorithmically will be capable of starting in a real language (not that Javascript isn't real), and without the kind of hand-holding that you get from something like Code Academy. Generations of programmers have started with languages even "harder" than Objective C, and without benefit of the internet.

I started with BASIC, had a whole family full of people with programming experience, even had classes in it through elementary school, but programming didn't really stick for me until I learned C. The difference was my dad's copy of K&R, the huge library of old Dr. Dobbs that my uncle gave me, and these shiny new things called Linux and The Internet, and a cultural zeitgeist that helped bludgeon into my thick head that Source Code Is Important and so is Sharing Your Work. I went from
10 PRINT FART
20 GOTO 10

to assert() in like, a month.
posted by The Master and Margarita Mix at 9:31 PM on August 30, 2012 [1 favorite]


The Master and Margarita Mix, it think it depends on personality and situation. As you say, you had a family with programming experience. Lucky you! I had no-one with any idea how to even use a computer, let alone program, and so at a similar age I tried to learn by myself and gave up after a while. That's partly a personality issue (I'm a learner who needs a support structure).

Although I am a game developer I'm not a programmer, although I am "technical". I am now pretty certain that if things had been different for me then, I would have ended up being a programmer. If I had had access to something like processing, code academy, or unity, that it would have given me enough early confidence to move onto 'real' programming. I'm just projecting I guess, and you might be right, depending on this 14 year old's personality, maybe going straight into objective C will work out, but I just wanted to make sure a bunch of more accessible options were recommended too.
posted by Joh at 10:22 PM on August 30, 2012


Hi, sounds great! My advice would be to find the path that allows him to make the kind of things he's most interested in making, as quickly as possible. While of course, starting simple. Fourteen is not too young for a bright kid to learn programming. If he wants to make iPhone apps, there are plenty of resources to do that. Another good option is web-based interaction (JavaScript and HTML, or possibly flash) - though only if that interests him.

Does he play chess? A chess clock is a nice simple project that is also useful. Or something like tic-tac-toe, or hangman. Personally I find reading manuals and computer books sends me to sleep - I need a real realistic goal that I want to achieve, to learn programming languages.

I would disagree with whoever said don't learn Objective-C (and C# is just as vendor-specific). If he wants to make iOS apps, XCode and Obj-C is still the best way to do it, especially once you get into anything lower-level, such as OpenGL or RemoteIO. As someone mentioned, Unity is a good game engine - as is Cocos2D.

Another thing to consider if going the app route is, it's really handy to get a grasp of C as the underlying language. Also, C code can be compiled on any platform with a free compiler like gcc.

Developing for iOS requires membership of the developer program - which costs $100 a year, but allows you to run stuff on devices, not just the simulator, and submit stuff to the app store. Or you can jailbreak your device - which can be fun as it allows you to see more how the device really works as a computer.

Good luck!
posted by iotic at 11:36 PM on August 30, 2012 [1 favorite]


Rather than just jump straight into code, I'd recommend reading The Art of Games Design by Jesse Schell. It's a great (and fun) read on the theory behind games design, the process and principles, and it's totally accessible to novices.
posted by iivix at 4:57 AM on August 31, 2012 [1 favorite]


Where are you located? My nephew in Southern California is 14 and an accomplished publisher of iOS apps.
posted by Dansaman at 11:34 AM on August 31, 2012


Lynda.com has some excellent tutorials on the fundamentals of programming and iOS development. For those alone, a Lynda subscription is worth every penny.
posted by run"monty at 1:13 PM on August 31, 2012


I can't thank you guys enough. This is such a wealth of great advice and resources that I'm feeling very confident that he'll find a few things here to latch on to and drive on with.

You guys are awesome!
posted by snsranch at 4:59 PM on August 31, 2012


« Older What's the best way for mulitp...   |  He's just not that into you. H... Newer »
This thread is closed to new comments.