Tuesday, July 26, 2016

Fly Assault! HTML5 version

Fly Assault! for Android was released couple of weeks ago, and there has been little interest on it. Now we decided to put HTML5 version of Fly Assault! to public distribution.

If interested to test how game feels and looks, please try HTML5 version on our server.

In principle, this HTML5 version should run on all devices. But it is always possible that someone finds a browser and device combination where game does not run smoothly...:) And if you like HTML5 version, please try native Android version too.


Tuesday, July 12, 2016

Introducing Fly Assault! game

Edit 16.7.2016: Fly Assault! game for Android was released on Google Play Store couple of days ago. So go and get your own free copy by using this link

After releasing Battlecards Android game, we started working on a game concept that was invented couple of years ago. At that times, I created quick&dirty prototype for testing basic game mechanics. Also, main characters were also drawn then. But for some reason we did not continue to work on it.

The working title of this game has been "Fly Attack". But after some not-so-careful thinking we decived to rename it to "Fly Assault!". At least there are not too many games with same name in Google Play. :)

Game itself is very simple and easy to play: There are flies coming from top of the screen and player tries to catch them before flies get in touch to muffins in the bottom of the screen. There are couple of special "weapons" available to boost killing the files: Fly poison and Frog.

Please watch attached video clip from Youtube to get understanding of this game:

Fly Assault! will be available at Google Play Store in July 2016.


Saturday, July 2, 2016

Corrupted Android keystore file

Last week I ran into situation where I noticed that my Android Keystore file used for signing e.g. Battlecards game was somehow corrupted. Obviously, I had  not done any backups of my keystore file, so there was no way to fix it. So I decided to generate new keystore and compile my app again with cocoon.io.

But that was not so easy: After cocoon.io compilation was finished, I was not able to load new .apk to my testing device. Tablet complained that previous version of app has been signed using different key and refused to install new version. So I removed old version of Battlecards from tablet, and realized that I had to do same for all my test accounts that were created to that tablet. Only then I was able to install new version (signed with new key).

After some struggling I was able to install new version generated with new keystore file and started the app. But then I noticed that all Google Play Game Services, including leaderboards, achievements, etc. were not working at all with new .apk. Now I understood that I was not able to publish updates for Battlecards with the new keystore. Great.

Needless to say, I tried to find some solution for this situation desperately. But I soon came into conclusion that only feasible way for me was to publish Battlecards as a new application and use new keystore for further updates. So I created new application to Google Play, filled all required fields, uploaded new .apk (signed with new keystore), and finally created new application entry to Google Play Game Services. This took about 1 hour for me, so after all it was not so big task. It was mostly copy&paste from old app entries.

You have also keep in mind that same package name can't be used for two apps, because they must to be unique. For example, Battlecards original package name (old keystore) was "com.gamaan.battlecards", and the new package name is "com.gamaan.battlecard". So there is just the difference of one character in package names.

Luckily, there were not yet too many downloads for Battlecards, so informing existing players was not too big problem. But if there were thousands (or millions) of active players for a game, then it would be wise to find a way to tell them to download new version.

And what was the root cause for keystore corruption? I can not say for sure, but I suspect it had something to do with the Android Studio version update I did some time ago. I googled this a bit, and found out that there are some other people whose keystore were broken after updating to newer Android Studio or JDK version. So maybe that is the reason?

Anyways, I strongly suggest you to have a backup or two of your Android keystore file. That might help resolving this kind of a situation. :)


PS. If you run into similar situation and want try to recover your corrupted keystore, this article might be a good startpoint to get deeper understanding what is going on.