In 2009, I started teaching myself objective-c. Apple opened up the iOS App store, and it was the first time self-publishing was easy and approachable. We (my husband and I) had some ideas, started our company and I threw myself to the wolves to start learning to code. Little did I know back then how hard it was to create a game with out a game engine.
Our first few games and applications were built just using Xcode, Interface Builder and were written in Obj-C. Soon we decided we needed something that had more features, like built in animations and physics. We needed a game engine, dammit! But which one? I remember narrowing it down to 2 options back then, Unity and Cocos2d for iOS. I spent a night or two looking at Unity and quickly dismissed it as overly complicated and very intimidating. Cocos2d supported a language I was already familiar with (Obj-C) and the framework seemed pretty comprehensive. When I figured out how to create an animating character in just a couple lines of code, my mind was blown! So the winner was Cocos2d!
Shortly after releasing a few titles with Cocos2d (like our random, retro, platformer, Arcade Jumper), we realized there was a new sheriff in town…Android! Great, now how do I port my games? Easy... enter cocos2d-x! Despite have to convert all my code in a few games from obj-c to c++, it was an easy transition. The frameworks were all essentially the same, just a slightly different language. Several years later, I am still a huge advocate for cocos2d-x. We've used it in several projects and games, and for several clients. However, while it is great for mobile applications, what about console development?
Back to the future, (and then slightly to the past) to December of 2015. We applied to the Xbox One Developer program, were approved and received our dev kits. It was so exciting, except it hit us again…wtf engine are we going to use? Cocos2d-x doesn't fully support consoles, Unity was daunting last time I looked into it, and Unreal was expensive (well, now they have gone free-ish). So what route do we take? Which one will best suit our needs?
After reading a few tutorials about Unity and taking an online course or two through Lynda.com, we decided that Unity was just the best option for us. It offered full support of all the platforms we will need to deploy to, I can still use a c-based language, and there are plenty of resources to help us learn how to get the most out of it. Best of all, it took us just a few weeks to deploy a playable proof of concept to the dev kit. Unity was the winner now!
Even though we are shifting into console development, we have been and still are mobile devs, but will we ever make the switch completely to Unity? Cocos2d-x and Unity both have their strengths and weaknesses, so part 2 of this game engine discussion I'll weigh them out and see who comes on top. Stay tuned!