QRR is yet another series, and it stands for “Quick, Random Rant”. Please don’t let me catch you translating QRR without adding that comma. Thanks.

The premise is to just push myself to blog more, so I open the editor without a topic in mind, and start typing.

The Topic

What comes to mind is something I’ve been recently working on, and that is of course, Cocos2d-x. Cocos is an excellent library, but I have learned the hard way that it was the worst possible choice for me. Let me enlighten you why.

It’s C++

C++ is a grownups language. It’s arguably the most powerful language, but it requires you to be mindful about every freakin detail that you write. Writing my game in such a language, over the span of two years, is a nightmare. I learned so many things, and realized how many mistakes I made in the past, as I desperately attempt to fix them.

That characteristic of C++ also implies that you have to write everything yourself. You need an observer pattern? Write it! You need a string formatter? Write it! Seasoned C++ programmers might argue that boost C++ is the way to go, since it implements most of these missing features from the language, but I only realized that after I decided never to write a personal game in C++ again.

It’s Turbulent

Almost every new version of the library comes with changes that break your sufficiently-complex project. Whether it is as simple as deprecations, all the way to core engine behaviors. These changes make a long lived project mostly about maintenance rather than focusing on making the game.

It’s Buggy

No matter what you hear, Cocos2d-X is supported by the community, and is bound to be buggy. It’s not horribly buggy, but you’ll find yourself looking for solutions to the engine every now and then, and you can’t afford that when running a one man show, now can you.


Well, am happy that I actually contributed something today, and by all means, I am not saying stay away from Cocos2d-x! Just be mindful about those issues, and choose a Javascript/Lua binding approach maybe. As for me, I’ll test drive the JS binding for my next game, and try a few other promising engines.