“I want to make a game,” says the new guy. So people point him to programming books, talk about what languages he might need, etc. But he never said, “I want to be a programmer.”
All of the time you spend writing code to create an engine is time you are NOT spending making a game. There are tools available that don’t require actual coding experience. If the game you want to make can be done using one of those tools, dive in!
If the game you want to create is more complex than can be handled with a “game creator app” the next step down the ladder is a framework of some sort. Cocos2D, Corona SDK, Moai SDK, etc. Find the one that can handle what you want to do, make sure it has a decent community of people for when you need to ask for help, and dive in! Depending on which framework you decide on, that’s the language to learn.
And learn it at the same time you learn the framework. Otherwise you take twice as long and it’s freaking boring — because all that time you spend learning just the programming language??? You’re NOT working on making a game, which is what you want to do, right?
Finally, if your game idea is so intense and complex that no currently available framework/library can handle it (it’s not, by the way), then – and only then – do you dive in and start to write your own engine.
Because you want to make a game, not be a programmer, right? If you want to do game programming, knock yourself out with making engines and all kinds of tools, but don’t kid yourself that you’re making a game. The guys who put together the Black & Decker Circular Saw are doing something cool — but they’re not building a house.
If you want to make a game and you can do it EASILY, then do that. That’s where you start looking. And you only go down as far as you have to go — don’t jump down to the basement and start from there if you don’t need to.
So where is the top level for making a 2D game with no coding? I say:
There are some others out there such as Construct 2 and Game Maker Studio but I toss them to the side because they don’t support the Mac, so poop on them. (And unlike Construct 2, with Stencyl you can “dive under the hood” and actually write code if you need to.)
How about the middle level, where you might need some coding but don’t want to do it all?
What about things like Cocos2D? Nothing wrong with that, but from a “starting from scratch” point you’ll be productive with Corona SDK far sooner than with Cocos2D. You’ll be making your game sooner.
And finally, if you really need to start from scratch and build an engine, I say don’t start completely from ground zero, grab a base and build upon it. At this point I’d point to:
T2D has been around for years and they just released it as open source with an MIT license. Which means you can start building on their experience and still create something that’s proprietary to you, if you like.
It boils down to this — making games and programming games are often the same thing, but they shouldn’t be. They only match up because in many cases there are no good ways to make a game without needing to do at least some programming. That’s changing, but I think it will be a while before we can do away with the keyboard when creating a game.
If you want to program tools, that’s awesome. But if you want to make a game, duck when people start throwing C++ books and such at you. It’s not necessary.