What’s Wrong with Game Software Tools
I love the idea of Stencyl, I love the fast development of Corona SDK, and I love the expandability of Moai SDK. But there’s nothing out there that does “game dev software” the right way. At least to my way of thinking.
Let’s create a list of 2D game development tools with GameSalad on one end and straight code on the other. I think the current crop of tools looks something like this:
- GameMaker Studio
- Corona SDK
- Moai SDK
- Obj-C, C++, etc.
That list is a combined “rapid game development” + “game tool ability” rating.
While GameSalad might allow you to make a game very quickly, you’re extremely limited in what you can do (and how). On the other end of the scale is straight code, like Objective-C, which will not constrain you in what you can do, but “rapid” is not a word I’d equate with that.
Sidebar: Not every current tool is listed, this is just a representative sample. Construct 2, for example, would fit in between GameSalad and Stencyl, Torque 2D would fit in right before (maybe after) Corona SDK, etc.
This list is subjective, of course, and you may place some of those packages in different places in the list, but that’s where I think they belong.
And when I look at the list of tools I can see there’s a big gap. There’s nothing that gives you rapid game development but also expandability. There’s nothing that’s easy for a beginner to jump into, but doesn’t get in the way of the experienced developer.
I’m going to pick on three of those tools (or frameworks).
First, Stencyl. What a fun piece of software. And while I haven’t made an entire game with it, I’ve played with it enough to know I really like it. And to know that it frustrates me. The snapping blocks thing is cool, but the amount of “work” it would take to learn to write those things in real code is very minimal.
Second, Corona SDK. So easy to jump into, even for rank beginners. And it has enough power to handle most things experienced game developers want to do. But there comes a point where you may want to do X and Corona doesn’t do X. You’re stuck at that point, hoping they add that ability in the future.
Finally, Moai SDK. Another Lua-centric framework like Corona, Moai SDK is the weapon of choice for a couple very high-profile game studios. As an open-source framework you can add whatever missing features you like (assuming you have the coding chops). But it’s a very low-level framework so the learning curve is like climbing a cliff.
Sidebar: Why did I pick on those three? Because in general, I *really* like them. If I’d picked one of the other tools/frameworks to make my point I probably would have gotten nasty and who needs that?
What do I think is missing? If Stencyl, Corona SDK, and Moai SDK ever had a menage a trois and produced a child, that’s the game dev software I want to use.
Since that will never happen I’ve decided to do the only thing I can — create that software myself.
It’s called Renegade.
And at the risk of sounding like a 12-year old who’s saying he’s going to build an awesome MMO this weekend, it’s going to be way cool.
Easy for beginners to jump into, handles all the mundane chores, makes developing a game fun, and with unlimited expandability so it won’t constrain the pros.
Some Inner Details
Renegade is a layout tool with code embedded in the scenes and objects.
In general, you’ll set up your game using a drag-and-drop system (although that’s optional) and then use Lua and an “easy like Corona SDK” API to write the logic. If you need more power than the API gives you, feel free to duck under the hood and use the low-level Moai SDK framework (Renegade is being built with Moai as the foundation).
Even when you’re writing the code you need, Renegade makes it easier than most tools. Select an alien in the layout area and you’ll see the events available for that object. If you want something to happen when you tap the alien, put some code in the “touch” field, or “release” field.
Or maybe you need something to happen when the alien collides with another object? Put your code in the “collision” field.
function alien_collision (obj as DisplayObject)
if obj.name == “missile” then
alien.die(“explode”) -- instant, fade, etc.
That alien_collision() function? That automatically exists because you dragged an alien object into a scene. And you only need to fill it in if you want that capability.
You write the code, but Renegade guides you.
Renegade exports games for iOS, Android, Windows and Mac desktops, and Chrome.
Renegade is in development now and is scheduled to be out in late Q4, 2012. When it hits it will combine the best concepts from Stencyl, Corona SDK, and Moai SDK.
And it will be awesome.