Cocos2d-x is open source cross platform gaming engine to develop games for mobile. Because this is gaming engine so this have different strategy, design patterns, problems and bugs. for example native apps have many libraries to download, cache and reuse images from url but it would be a difficult task in cocos2d-x. On the other hand, to develop games for any resolution screen is easier in gaming platform.
Why did i choose.
I have many reasons to defend my decision.
1- Open source :
Cocos2d-x is free and open source library. No matter how many downloads your game get, its still free unlike Unity and UnReal(you have to pay some amount to UNREAL after specific number of downloads). Due to open source community, its growing day by day.
2- C++ environment :
C++ is strongest and second largest language by number of developers. C++ is faster in rendering than any native language as well as algorithm works faster in this.
3- IDE :
I use Xcode , eclipse and android studio to develop games for cocos2dx. I came from mobile application development and these tools are my daily sausage and make my life easy.
4- 2D Engine :
COCOS2D-X is 2D gaming engine so its faster and relatively easy to develop games than 3D games.
5- Top Developer choice
Many top developer rely on cocos2d-x like “Igg” , “Tinyco” and Cheetah Games. World top ranking games was developed on this platform like “Hill Climb Racing” , “Don’t Tap The White Tile” and “Castle Clash: Age of Legends“
We face different problems in cocos2d-x
1- Community :
Gaming engine’s community is smaller than app’s community. We face many problem due to lake of help . you stuck in different places and sometimes you have to change strategy and even features. My suggestion would be “Always have Plan B if you are working on Cocos2d-x”. Like i stuck in loading images in tableView dynamically and i resolved it by using native code. Although developer of engine response quickly with positive attitude but its still a big problem.
Another problem is “Getting start tutorial” is not enough to learn and understand cocos2d-x. I read book “Cocos2d-X by Example Beginner’s Guide” to understand concept of cocos2d-x. I would highly recommend this book.
2- Changing in every version :
Cocos2d-x is growing platform and they are improving it day by day but it creates problem for developer. They even change languages. Code on Version 2.2 may not run on Version 2.2.1. So code reusability is an issue for gamers.
3- JNI Integration :
cocos2dx supports native Android as well but you have to integrate JNI for this. Is a hectic process. SDKBox support many libraries to help you but still you have to do something by your own like ads integration.
4- Layout :
We don’t use Storyboard or XML file and another GUI tool for designing. In cocos2d-x , we have to create all design programatically so its a patience process to run and check layout every time on every device. It takes more time.
Points to remember:
- You must have some basic knowledge of gaming
- Must hands on C++ or python
- We don’t use storyboard or XML file for layout. So must have knowledge of programatically designing.
- Must have a B plan to implement any feature just in case