Many game developers have assembled a set of tools over a long period of time, swapping in one for another on occasion as needs change or better tools are developed. At BKLYN Bit Labs, we haven’t had this advantage since we are essentially building everything from the ground up. As such, I thought I’d spend a few minutes going over what tools we’ve selected thus far and why.
To take advantage of the graphics capabilities of mobile devices, we selected the Cocos2d-X framework for several reasons. The first is that it is a widely used API with tons of community support and rapid development. The second is that it is written in C++, meaning it is compatible with both iOS and Android, allowing us to achieve our goal of being on both platforms almost right away. Though our initial release will be on iOS, we can’t ignore the massive Android market and being able to compile the code using the NDK is far more cost effective for a small team like ours than to rewrite it from the ground up. This leaves us only needing to write the platform specific items natively, no small task in itself when you consider things like in-app purchases, game center integration, etc.
Still, by keeping the core of our game engine cross platform, it allows us to code it once and spend our programming resources on the platform specific tasks.
Lastly, I would be remiss if I didn’t point out that another powerful feature of Cocos2d-X is that several physics engines can be dropped in. In our case, we’re using the Box2d engine for all of our physics because of its flexibility and tuning.
Sprite Sheet Packer
This is actually one of two tools we selected that are built by Vladu Bogdan Daniel, a talented tools developer. SpriteHelper is your basic texture packer that can actually do more. Not only can it export assets in different resolutions (an important thing if you want to have iPad versus iPhone versions) but also allows a non-programmer to build basic animations and determine physical shapes.
The above shot shows a lot of the options available within the tools. For a texture packer, it’s pretty full featured. But, additionally, it has close ties both with Cocos2d-X and the next tool I’ll discuss.
Because we’re a small team, I can’t understate how important it is that our non-programmers be able to contribute without having to dive into the codebase itself. To that end, I desperately wanted to separate the game engines from the levels themselves. This would be so that levels could be designed and tweaked while our programming resources were spending their time building out other elements of the game and focusing on native features.
LevelHelper was selected because it can be used in as many ways as one can dream up. I’ve seen examples where it’s used to construct everything from a side-scrolling platformer to a tile-based top-down RPG. It even has a built in tool for parallax views. But, as the salesmen say, that’s not all!
LevelHelper is also deeply integrated with both SpriteHelper, Cocos2d-X, and Box2d, as well as many more but, since those are what we’re using, that’s what I’m going to highlight. This means that physical bodies and animations created in SpriteHelper can be used straight out in LevelHelper. The physics of the bodies can be further tweaked in LevelHelper for level specific cases, meanwhile the level physics can be defined with this tool that plug in directly to the game engine below.
Beyond that, LevelHelper has a custom written extension of the Cocos2d-X API to help manipulate the levels created with the tool. This code is constantly updated by the developer and is constantly getting better, which brings me to the final reason we selected this tool: support.
When I was testing it out, I had several issues with getting it running. I logged into the boards and asked a couple of questions and Vlad responded extremely quickly. With support like that, it made the decision easy.
The last tool we’ve selected is a new one called Spine. The product of a successful Kickstarter campaign, this tool allows our animator to create “spine”-based animations and attach art to the skeleton. The interface is familiar and the ability to attach any art to the skeleton, even at runtime, means that our animation workload is significantly reduced.
I highly recommend that you go to the Spine website and watch the demonstration videos. They’re pretty amazing and really spark some ideas of how the tool can be used. And, like LevelHelper, it comes with a runtime for Cocos2d-X, allowing easy integration with our chosen graphic framework.
So… why am I sharing these tools with the world? Aren’t I giving away our secret sauce?
Not at all.
Announcing what tools you’re using is like a writer announcing that they use Scrivener or Word. You know the tools but it’s the ideas and creativity that make what they help produce unique. Instead, I offer these as a round up of several great tools that help streamline the tough development process of making a game.
Mix and match as you please and see what you can come up with. With tools like these, the only limitation on a game developer are the ideas you can come up with.