Our new Indie Games subforum is now open for business in G&T. Go and check it out, you might land a code for a free game. If you're developing an indie game and want to post about it,
follow these directions. If you don't, he'll break your legs! Hahaha! Seriously though.
Our rules have been updated and given
their own forum. Go and look at them! They are nice, and there may be new ones that you didn't know about! Hooray for rules! Hooray for The System! Hooray for Conforming!
How do I get someone to make my game idea? [/Joke Title] Learning to program.
Skipping through the usual disillusionment and harsh reality sections of these threads and to the logical conclusion, how do I learn to program?
I, like every other gamer in the world have an idea kicking around in my head and fancy trying my hand at a bit of programing at a hobby level first and see where it goes.
Thing is I have no formal training and don't know where to start. In my naive way I feel like I have a good logical mind for basic coding and could hopefully do well with some good old fashioned book learnin,' but haven't really played with much previously beyond Excel macros, which I'm aware means little to nothing in this context.
So if I wanted to learn to program for iPhone (where my wonder idea lies) where do I begin? Any great books or other resources people recommend?

WiiU: JamWarrior
0 •
Posts
Also I recommend you start on a more open platform, until you at least get your head around "thinking like a programmer"
Python + Pygame or XNA are two great ways to start that will let you have pictures and sounds up and moving on the screen relatively quickly.
Make some simple games with that. Start with like asteroids or space invaders. Try something a bit more complicated like a simple dungeon crawler or simcity type game.
Once you've gotten over banging your head against getting your mechanics to work, then you can try banging your head fighting with hardware in something like objective c.
At least.. My $0.02.
Its a game engine that works on a bunch of different platforms including iphone. Its been used in a lot of professional games but is simple enough for a hobbyist. Follow the tutorials or you will be lost.
The iPhone version is premium but the PC version is free.
Unity looks like a thing worth looking into. I was thinking more 2D, but I guess a 3D engine does that fine by just not including the uneeded dimension.
WiiU: JamWarrior
My problem is I get too bored and want to skip to something I can be proud of, and eventually just sort of fall away from the project. Half the battle is making shit nobody, not even you, cares about in order to learn. I dont have the patience to do that...sadly. But maybe you do.
That is like learning to run by training for a marathon.
Here's what you should do, and my advice is for your first game to be in XNA, since the framework makes it extremely easy to use, it's free, etc.
1. First, pick up Visual C# express (so that you start learning in the language you'll be programming your first simple game in)
2. Read thoroughly about the "Object Oriented" programming paradigm. Don't be afraid to ask for help, hell, I'll give you a primer if you have some questions.
3. Make a few trivial applications, JUST TO TEACH YOURSELF THESE PRINCIPLES.
I cannot stress this enough. If you begin programming without a deep understanding of what it means for something to be object oriented you are going to program yourself in circles. Get a very good idea of what it means when I say class, instantiation, inheritance, polymorphism, encapsulation, and principle of least permission. All of those are extremely important to game programming. (Maybe not principle of least permission, but once efficiency starts becoming an issue you will want the design principles of least permission since they are, by definition, efficient)
4. Once you have a really good handle on what all of that means, and you can mentally map out a small program in your head (The main will instantiate this object, will interact with this, it will have an array of these, which will do this with...), THEN go download and install XNA Game Studio 4.0, and create a new windows game.
Start from the basics there, since there's a lot to learn. Once you get to that point there are a couple books you could buy that are very affordable (20-40 dollars or so) that will be good for a novice programmer. With a little bit of background, launching yourself will not be the unassailable wall that it would be if you simply jumped in with little to no prior knowledge.
Sounds like you learned in a very formal way. That's fine, but its not for everyone. I myself learned to program by making games. Some people (like you) like to get the theory down before starting, others like to get their hands dirty.
It's a great way of learning to program as long as you keep the games small and simple at the start. Think Pong for your first game. The first game you write will not be worth selling. The 20th might be.
The reason I recommended that way is because even a simple game can be a pretty complex system, and examining things in a simple environment is generally a more reliable way to attain an understanding.
It is of course by no means the only way to progress, but I've watched more than a couple people try to tackle programming haphazardly, and it's rarely been anything but a disaster.
To put it in perspective, CelestialBadger is absolutely right that if you find yourself coming up short when trying to do some book learning about this stuff and building a foundation from the ground up, or if you find that it's more effort than you want to put into hobbyist programming, you should absolutely take the more direct approach.
It's my opinion that if your end goal is the dream game, you should start with the fundamentals. Based on your OP it sounds like you're prepared for and desire to put some time into learning it right proper, as it were. But regardless of how you choose to proceed you should remember that there is more than one way to go about it if you find yourself in over your head.
Menus, some animations via sprite rotation and movement. Board game type stuff I suppose.
And again I say, I have no delusions of going straight into making a game. There's a good chance I may never get that far! Just want to start pottering with learning a new skill and see if it leads anywhere.
People mention tutorial books and that is very much where I thought to start. What I was mainly after was specific recommendations I guess. Are the 'X' for dummies books any good or not? Is there a wonderful standard text that all programming students get given?
A few people have mentioned XNA. If my ultimate aim is iPhone shizz, then would lessons and or code be portable between the two?
WiiU: JamWarrior
Also, cause I didn't say it before, chase this down. Programming is not only lucrative when you are an expert, but it is an incredibly enjoyable hobby, and making a game, while lofty, is a noble aspiration. If you go into it with drive there's no reason you shouldn't come out on top!
I would actually advise against getting into iPhone stuff right away. The native language for iOS is Objective-C, a relic of Steve Jobs' NeXT days and it's an enormous pain in the ass that is not used anywhere else but on iOS. Plus programming for embedded systems has its own pitfalls that are not conductive to learning how to program. Learn C# first, then transition to XNA. There are ways to port XNA code to iOS but I have no idea how good they are (a thing called mono is supposedly pretty good). Then maybe tackle native iOS projects down the line.
Be warned that it takes 8-10 years to become an expert programmer (the kind of programmer you want to be to do a small project worth selling). Some people go a bit quicker, some go a bit slower, but it's not like learning a trade skill- learning the language and how to make the computer do what you want is only a small part of it. Learning a language simply opens the gate to software engineering. Think of it this way: programming is how to write code, software engineering is what code to write. It's demanding and not everybody can do it. I started seriously programming (i.e. not qBasic clones of Gorillas) in 1997 and I'm just now getting to the point where I would consider myself an expert- and I do this shit for a living.
By the time you're ready to write your own game worth selling we may not even have iPhones anymore. We could be on brainPhones or something.
However! It's not all doom and gloom. There are lots of ways to make games that don't involve writing all the tech yourself, and learning introductory programming will help you use those tools. So if you really want to make games learn a bit of programming and then pick up Unity or Unreal and start making games on those, while continuing to learn programming. A strong grasp of programming will unlock a lot of the potential of Unrealscript, or whatever the Unity equivalent is.
Get IG Maker
It's a pretty good beginner's system for creating 2D platformers/shooters/action RPG games. It has very little programming in it, but you can get wild creative. Not only this, you can generate XNA code. Demo's free. I liked it.
Sure there are easier ways to start, but if you aren't doing something that interests you you won't stay motivated.
Learn a little objective C, learn a little Unity, see what inspires you. Find out what what other programmers are using for the things you want to do and try them out. Books are ok for broadening your knowledge during downtime, but for getting started just find some free tutorials Like this and make things.
I haven't seen if @Melkster has done anything since.
Should be possible in just about any language. I hear good things about Python and the games library Pygames for beginners who want to make 2D games.
http://pygame.org/news.html
The Dummies books are all pretty bad, at least the ones I've read. I'd actually not recommend books. They tend to be out of date as soon as written, and filled with tedious homework assignments that make you feel like you are back in school. They are also hard to search. I use tutorials and documentation on the internet. The Pygame link I supplied above has plenty of examples and documentation, which at first glance looks as good as any book you'll get.
No, not at all. XNA is Microsoft's game making kit, designed for hobbyists to write games for XBox 360 and PC. It is absolutely not portable to Apple products, and I'd be surprised if it ever was, although some people are trying to do it. Python also is not portable to iPhone. Apple is actually pretty hostile to just about anything running on iPhone apart from Objective C.
Unity or Objective C are the things you want to get into if you want to program for iPhone. But Unity is 3D, with all the necessary complexity you'd expect for that, and Objective C is just harder to learn than most similar languages.
I'd suggest learning the basics of game programming on Pygame, and then when you are confident switching to Unity, which can be used to make 2D games if you know what you are doing.
I would put my programming knowledge to that of a 2nd semester programmer for a real college and its something I've always wanted to pick up more. I think I might grab unity and corona and try to really grasp some of their designs, and hell, maybe I can actually make something worth publishing at some point in the future
edit: oh snap i just looked at corona sdk and its basically flash and actionscript, probably the language i picked the most up with, hell I've made flash programs before, but the price tag scares me a bit unless I really commit to this
http://monogame.codeplex.com/
In fact, I'd say you'd probably end up with a better app a year down the line if you spend your first six months with Python and the rest in Objective-C than if you spent the whole time in Objective-C. Don't try to learn just what you need to, because there's no such thing.
Interesting, I didn't know that was finished. Is it any good?
Supposedly. It's shipped a bunch of games on iOS so odds are it's not complete crap but I haven't tried to use it yet. Cross-publishing games on WP7, iOS, and Android is a really neat idea.