Game Released : Dragonfall Tactics

Hey Everyone !

After one year of development with a team of ~10 people, we released our latest Cocos game : https://play.google.com/store/apps/details?id=com.gameparkstudio.dragonfall.gameapp

Have a look and enjoy !
And if you have any questions, dont hesitate to ask, I ll be happy to answer !

1 Like

what about the iOS version ?
can you describe the development process ?
Thanks game looks great

Congrats on the release!

The game looks good. Congratulations!

Looks awesome!

Congratulations! I dig the art especially, very detailed characters.

Thanks guys!

So about the iOS version… well we started porting, but since we already used up all our resources ( money and time and people ) I m not quite sure when it will be happening…

Development process… Hmm if you want to know about the pipeline here it is :

  1. Artists make concepts and basic sprites in photoshop with layers.
  2. Artists make animations in cocos studio ( v1.4) animation tool
  3. Designers integrate art assets in UI tool to make the UIs and Scene Editor to make the maps
  4. Designers use googlesheets to collaborate on game data and balancing. Exporting to excel and embedding in game.
  5. Developer integrate these into main game. We work mainly on win32 with visual. But Linux is much faster for thoese who are comfortable with it. system features and other needed libraries worked on separately on a test app (WkCocos)
  6. Android build with Android studio. Test on phone made easy with airdroid and wifi adb.
  7. continuous integration and google play autopublish with Jenkins.

Let me know if you have more questions !

oh good lord, can you tell us more about that?
I would love to have a small guide how to set up jenkins to build the game for android. Would be also lovely if it’s possible to build it via jenkins with api 15, 16, 17, 18, … (android) to see if something isn’t working anymore in a newer/older api version.

BTW: Lovely game ^^

+1 for continuous integration with googlepley.

+1 for using Jenkins.

Well I have been doing Continuous Integration setup for a few years, and setting up Jenkins was quite straight forward :

  • get your game to build from command line ( you do not want to automate UI-based/IDE actions ). First basic step that many people sadly ignore : use command line, all the time, for everything you may want to automate.
  • put these commands needed to build the game in a build script
  • get your game to build with the script properly out of a fresh checkout from your VCS, on a fresh machine, every time.
  • Install jenkins, and have it run the build script.
  • Jenkins has a google play publish plugin, that you just need to install and give him the apk path.
    And “voila!”.

The trick is to know how much of your build you put in the machine setup ( your VM that you can clone around, if you need to scale your build slaves ) versus how much you put in the script ( that needs to be fast, but completely deterministic, that is have a 100% reproducible behavior ).
In my case for example, I have Android SDK and NDK installed in the VM, as well as python, etc.

But then this is not really related to testing.
Android build ( at least with gradle that I am using ) is based on a minimum API and a target API. There is no need to build for each API.
BUT you should test all the APIs you support, in theory. And you should test all possible devices where you game is going to run…
On most games, you cant really automatically test much, so my jenkins setup is not related to that part.
Automatic testing for mobile apps is a whole other story…

I m not sure this is helpful or answer your questions, but then I am not using the current cocos build system ( I forked a while ago, and made my own ) , so I might not see what problems you might face. Anyway, let me know if something is still unclear.

1 Like

Thanks for the insight!
I am just curious how “easy” it is to setup this. (Any maybe use very basic tests like “open this game in an emulator” but I don’t know if something like this is possible with jenkins (calling 3rd party emulators for example)). And yeah yeah, I know, emulator for testing is bad. It’s just for a “is it starting” test ^^

We had the problem that our game which has minimum api 17 wasn’t working on android 5 devices. Problem was JNI. On android 4 everything worked, 5 crash. It’s fixed, we now need to call JNIHelper everytime we want to work with the java objekt in C++.

@Michael basically anything you can do with command line is doable with jenkins. Feel free to do your research about how to open and manipulate the emulator via command line :smile:
That being said, I don’t think testing with the google emulator is worth it ( except maybe at the very beginning maybe ). From what I have seen, it is too different from actual devices to be useful, and anyway you will need to test on actual devices as well… Some publishers in some countries use http://www.bluestacks.com/ , so that might be worth to test on when you don’t want to be bothered by devices, but still…

Game starting up or not is not the only problem you will have with your game… Whether people who buy things in game actually get them, whether or not the save of v42 doesnt crash when you update on v43, and many other cases that you need to test manually, and ideally on each and every device you want to support…

Android is troublesome that way, and our game is getting some bad reviews like " it doesnt work on my device ". Then the only option for you as a developer is go find and buy that device to be able to debug it. And there are more than 7000 android devices out there…

FYI making jenkins build your game takes only a couple of weeks maximum. Then tuning the configuration to improve your build time, make maintenance easy, etc. is an ongoing task while the project is being developed. But this is totally worth it, because it frees you from the task of making the clean build that you want to push on google play and test with all features enables ( in app purchase, google services, etc. ), everytime you want to do it. And If you re making the game for other people (and not just yourself), you want to do that as much as possible.

You should still build locally everytime to make sure everything builds before you commit ( so you don’t fill in your repository with broken code), so if you re making the game only for yourself, jenkins will not help you much. Having a build script building out of the clean checkout definitely will though, but this is about good development practices, not continuous integration.

If you want to add automatic testing to the automatic build, it is another endeavor that will take some amount of time, and I personally think it is not worth it, since it doesn’t free you from anything at all. You still need to actually test the whole game, on all supported devices.

Note that I am making this statement for a complete game.
If you work on a library (like a specific cocos feature or some other reusable game component) automated unit testing might be easier to do, and absolutely worth the trouble. In my case I did automated testing for our encryption/decryption class, as well as our save/load behavior. But I am automatically testing it only in the PC version. The main goal being that I want to make sure that everyone in the dev team knows if it ever change by chance at some point in development, since it will break backward compatibility. For everything else, our best option was still to test the game manually.