Hey guys, I just launched Epic Battle Fantasy 5 on Android, and it's currently in Early Access. It's a turn-based RPG with over 50 hours of content, and the entire story mode is free to play, with some extra DLC content behind a paywall.
It was originally a PC game that was designed around mouse controls. But with some changes to the interface (making UI elements bigger, etc), and some optimization (removing filters and making good use of cacheAsBitmap) the game works great on mid-range Android devices. The whole game uses the oldschool Flash display list with vector graphics - so it's under 150MB! I wrote about the porting process in this thread from a few months ago.
I'm using the Distriqt ANEs for In-app Purchases, Adverts, and Game Services/Achievements - and all of these features are working correctly.
But there's a few serious issues that I need your advice for.
First of all - cacheAsBitmap doesn't work on some devices if the user selects a MEDIUM or HIGH stage quality. The cached graphics simply do not display (so the user sees mostly a black screen). I'm guessing this is due to the GPU not having enough memory or something like that. Is there a convenient way to check the specs of the user's device, and disable the MEDIUM and HIGH options if the specs are not high enough?
The second issue is that my Android Crash Rate is incredibly high - 16% of sessions!
The crashes usually happen randomly when the user selects an action, or when a large function is called by the timeline. Around 90% of the crashes are the following:
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR)
libCore.so (offset 0x1000)
pid: 0, tid: 0 >>> air.EpicBattleFantasy5 <<<
backtrace:
#00 pc 0000000000457728 /data/app/AkFcr96S-mGRBBgNVVQpg==/air.EpicBattleFantasy5-zhneu-priR6KM-5BNPAoig==/split_config.arm64_v8a.apk!lib/arm64-v8a/libCore.so (offset 0x1000)
#00 pc 00000000004309e8 /data/app/AkFcr96S-mGRBBgNVVQpg==/air.EpicBattleFantasy5-zhneu-priR6KM-5BNPAoig==/split_config.arm64_v8a.apk!lib/arm64-v8a/libCore.so (offset 0x1000)
#00 pc 00000000004308c4 /data/app/AkFcr96S-mGRBBgNVVQpg==/air.EpicBattleFantasy5-zhneu-priR6KM-5BNPAoig==/split_config.arm64_v8a.apk!lib/arm64-v8a/libCore.so (offset 0x1000)
#00 pc 00000000002ec9b0 /data/app/AkFcr96S-mGRBBgNVVQpg==/air.EpicBattleFantasy5-zhneu-priR6KM-5BNPAoig==/split_config.arm64_v8a.apk!lib/arm64-v8a/libCore.so (offset 0x1000)
#00 pc 000000000031fda4 /data/app/AkFcr96S-mGRBBgNVVQpg==/air.EpicBattleFantasy5-zhneu-priR6KM-5BNPAoig==/split_config.arm64_v8a.apk!lib/arm64-v8a/libCore.so (offset 0x1000)
#00 pc 000000000031f7e4 /data/app/AkFcr96S-mGRBBgNVVQpg==/air.EpicBattleFantasy5-zhneu-priR6KM-5BNPAoig==/split_config.arm64_v8a.apk!lib/arm64-v8a/libCore.so (offset 0x1000)
#00 pc 000000000031fe78 /data/app/~AkFcr96S-_mGRBBgNVVQpg==/air.EpicBattleFantasy5-zhneu-priR6KM-5BNPAoig==/split_config.arm64_v8a.apk!lib/arm64-v8a/libCore.so (offset 0x1000)
#00 pc 00000000000b1028 /apex/com.android.runtime/lib64/bionic/libc.so (pthread_start(void*)+64)
#00 pc 0000000000050998 /apex/com.android.runtime/lib64/bionic/libc.so (start_thread+64)
This crash is the 2nd most common, about 5% of crashes:
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR)
split_config.arm64_v8a.apk!libCore.so
pid: 0, tid: 0 >>> air.EpicBattleFantasy5 <<<
backtrace:
#00 pc 0000000000457728 /data/app/dEAdRE7M3RqJlnOJ4g7vhg==/air.EpicBattleFantasy5-oHB1yi_w_u-Zbjyz9ZWe1A==/split_config.arm64_v8a.apk!libCore.so
#00 pc 00000000004309e8 /data/app/dEAdRE7M3RqJlnOJ4g7vhg==/air.EpicBattleFantasy5-oHB1yi_w_u-Zbjyz9ZWe1A==/split_config.arm64_v8a.apk!libCore.so
#00 pc 00000000004308c4 /data/app/dEAdRE7M3RqJlnOJ4g7vhg==/air.EpicBattleFantasy5-oHB1yi_w_u-Zbjyz9ZWe1A==/split_config.arm64_v8a.apk!libCore.so
#00 pc 00000000002ec9b0 /data/app/dEAdRE7M3RqJlnOJ4g7vhg==/air.EpicBattleFantasy5-oHB1yi_w_u-Zbjyz9ZWe1A==/split_config.arm64_v8a.apk!libCore.so
#00 pc 000000000031fda4 /data/app/dEAdRE7M3RqJlnOJ4g7vhg==/air.EpicBattleFantasy5-oHB1yi_w_u-Zbjyz9ZWe1A==/split_config.arm64_v8a.apk!libCore.so
#00 pc 000000000031f7e4 /data/app/dEAdRE7M3RqJlnOJ4g7vhg==/air.EpicBattleFantasy5-oHB1yi_w_u-Zbjyz9ZWe1A==/split_config.arm64_v8a.apk!libCore.so
#00 pc 000000000031fe78 /data/app/~dEAdRE7M3RqJlnOJ4g7vhg==/air.EpicBattleFantasy5-oHB1yi_w_u-Zbjyz9ZWe1A==/split_config.arm64_v8a.apk!libCore.so
#00 pc 00000000000de0d4 /apex/com.android.runtime/lib64/bionic/libc.so (pthread_start(void*)+264)
#00 pc 000000000007a890 /apex/com.android.runtime/lib64/bionic/libc.so (start_thread+68)
I have no idea what any of this means, so any input would be appreciated.
I saw in the other thread that disabling music might help - is it just the Sound class that is problematic, or are sounds on the timeline bad too? Because I have a LOT of sound effects attached to animations in the game...
I don't have much data from earlier, but I was getting a lot of crashes even before I added the ANEs.
I'm currently using AIR 33.1.1.712 - is it worth trying the other versions of AIR?
Is there somewhere I can download older versions that I missed?
Thanks.