Several iterations later, I’m pretty happy with this!
Great news: Google accepted my game to be featured on the homepage of the Play Games app, in the Instant Games section!
The person who reviewed the game suggested that I increase the difficulty at the beginnning, to hook players better. Guess I’ll be tuning the math this weekend. I had it all carefully balanced to make the game possible at higher levels. To the spreadsheet!
Congrats!
Google gave me a date for the “game of the week” feature on the Play Games app. Let’s just say I’ve got a few months to keep improving the game to make the most of it!
I’ve also seen a huge uptick in people playing the game, mostly via the Android Instant version.
It’s really exciting, and super motivating.
Unfortunately, some Android 7.0 and 7.1 devices are crashing, but we’re tracking that on Github. If anyone else has seen this and found a fix, please speak up! The issue only affects the Instant version. Maybe @AGulev? I know you wrote about Instant games in the past.
In other bug fixing news, I managed to get the installable version working on and old Android 4.4 device. Thanks to Defold’s awesome perf, the game runs smoothly. I had to add an is_supported
method to the GPGS extension to detect if the device has up-to-date Play Services, and only trying to log in if the device supports it (to prevent runtime crashes). DefVideoAds worked perfectly as-is.
Great success
The game is proving to be MUCH more successful than I expected on the Android Instant Games! I’m seeing several thousand ad views per day, and it’s going up exponentially so far!
The Play Console says the instant version was launched nearly 6,000 times yesterday.
Not bad for zero marketing effort.
Feature updates
I keep thinking about the feedback Google provided, that I needed to make the game harder at the beginning.
I’ve increased the spider spawn rate again, so the game is now 3x faster than it used to be on level 1. This doesn’t change the higher levels much, due to the curve I used.
I also made the rewarded video start you at Level 15 now, instead of Level 10. I’m already seeing a lot of rewarded video impressions, but I’m hoping this makes it even more tempting.
Bugs…
I continue to analyze and experiment to prevent the crashes I see in the Play Console.
At this point, I’m fairly convinced that some of them are due to library conflicts (android.support vs androidx). I’ve tried downgrading the GPGS libraries to the support versions again, since I’m also using Unity Ads which use those libs.
As part of that update, I also updated Defold to 1.2.176.
Fingers crossed that this doesn’t end up causing more issues once it hits production!
I’m seeing some weird things occassionally, like the game will just be a black screen on startup. If you switch to another app and come back, it’s fine… In logcat, I see this. It’s not happening on my own devices anymore, but my friend is seeing it on his Pixel 4. Ughh.
11-27 14:30:57.945 1518 1600 D EventSequenceValidator: onActivityLaunchFinished during UNKNOWN.
11-27 14:30:57.945 1518 1600 D EventSequenceValidator: java.lang.Throwable: EventSequenceValidator#getStackTrace
11-27 14:30:57.945 1518 1600 D EventSequenceValidator: at com.google.android.startop.iorap.EventSequenceValidator.logWarningWithStackTrace(EventSequenceValidator.java:260)
11-27 14:30:57.945 1518 1600 D EventSequenceValidator: at com.google.android.startop.iorap.EventSequenceValidator.onActivityLaunchFinished(EventSequenceValidator.java:185)
11-27 14:30:57.945 1518 1600 D EventSequenceValidator: at com.android.server.wm.LaunchObserverRegistryImpl.handleOnActivityLaunchFinished(LaunchObserverRegistryImpl.java:175)
11-27 14:30:57.945 1518 1600 D EventSequenceValidator: at com.android.server.wm.LaunchObserverRegistryImpl.lambda$QcawcFcJtEX4EhYptq_Vb4j368Y(Unknown Source:0)
11-27 14:30:57.945 1518 1600 D EventSequenceValidator: at com.android.server.wm.-$$Lambda$LaunchObserverRegistryImpl$QcawcFcJtEX4EhYptq_Vb4j368Y.accept(Unknown Source:10)
11-27 14:30:57.945 1518 1600 D EventSequenceValidator: at com.android.internal.util.function.pooled.PooledLambdaImpl.doInvoke(PooledLambdaImpl.java:292)
11-27 14:30:57.945 1518 1600 D EventSequenceValidator: at com.android.internal.util.function.pooled.PooledLambdaImpl.invoke(PooledLambdaImpl.java:201)
11-27 14:30:57.945 1518 1600 D EventSequenceValidator: at com.android.internal.util.function.pooled.OmniFunction.run(OmniFunction.java:97)
11-27 14:30:57.945 1518 1600 D EventSequenceValidator: at android.os.Handler.handleCallback(Handler.java:938)
11-27 14:30:57.945 1518 1600 D EventSequenceValidator: at android.os.Handler.dispatchMessage(Handler.java:99)
11-27 14:30:57.945 1518 1600 D EventSequenceValidator: at android.os.Looper.loop(Looper.java:223)
11-27 14:30:57.945 1518 1600 D EventSequenceValidator: at android.os.HandlerThread.run(HandlerThread.java:67)
11-27 14:30:57.945 1518 1600 D EventSequenceValidator: at com.android.server.ServiceThread.run(ServiceThread.java:44)
Very cool! I’m happy to hear that!
May I ask how Google reached out to you?
We now support automatic migration of dependencies to Android X on the beta build server. More info here: Migrating to AndroidX
In the docs for instant games, they have a form you can fill out to be featured. As part of that review process, someone tests out your game and provides basic feedback. In my case, they just said to make it harder to keep players more interested.
Very exciting. Will that work if I’m still on 1.2.176, but using the beta build server?
Yes.
Still waiting for google to roll out my production release using 1.2.176 and/or the next one which uses 1.2.177… Quite slow this week.
Noticed a fun quirk while trying to add extension-review
, to request a review after users have used the game a while. On the installable version, it seems fine. On Instant, I can replicate an ANR reliably.
I made a special test version which attempts to request a review after 2 seconds of launching the game.
To ANR:
- Click “try now” from the Play Store or Play Games
- After it downloads, the game auto-launches.
- Wait for the 2 second timer, then watch the game freeze.
To not ANR:
- After the game exits, launch it again.
- Magically it’s okay…
The logcat messages are nice & cryptic, but the attached txt file shows some errors which precede the ANR. I don’t see these on the installed version, or upon second launch of the instant game.
ANR logcat.txt (10.3 KB)
Aren’t there restrictions on the APIs you may use for Play Instant? I’m thinking that the review API might not be available or something.
You do have to run in a sandbox, but I have the installable set to the same mode I think.
I’ve been searching all over, but haven’t seen any documentation on using the Play Core library within an instant game.
Since it doesn’t crash on the 2nd play, I feel this is something buggy with how Instant loads the game. If google ever finishes releasing my updates, I’ll hopefully have more data to look over.
My latest update on Defold 1.2.177 is live. Hopefully fewer crashes. Hopefully I’ll know more in a day or two after analyzing the crashes and ANR data that rolls in.
Made the front page of the Play Games app, as well. Super exciting!
Cool! Congrats!
Just so you know, we haven’t released 1.2.177 yet. It is still in beta
Meh, I have been using betas for a long time now, and they are super stable (and also you guys are incredibly fast at fixing)
Yep, I knew, but have a lot of confidence in your team’s work!
The change list (and some of the commits I understood) seemed safe enough to me to release in production. I tried out the jetifier build flag also.
Seeing all the crashes coming in was stressing me out, so I figured it was worth a try!
Been a while since my last update, so here goes!
I see a significant portion of ad views coming from Brazil, so I decided to invest some of the revenue and try my hand at localization! For now, using Defglot, but only for the get_text
function.
To get Brazilian Portuguese translations, I searched through options on Fiverr until I found a guy who seemed to be a good fit. I highly recommend his services! He was super fast and provided excellent translations, including helping me adapt some of my word play & expressions to sayings more common in Brazil.
Referral link if you need to make an account, we both get a discount: http://www.fiverr.com/s2/e2e4380ee1
His Fiverr listing: https://www.fiverr.com/joshua_igor/translate-from-english-to-portuguese
Hoping to wrap this up soon and get it released on the Play Store! I’m super curious if this will drive enough installs & ad views to justify the (small) expense.
Preview of the game over screen in PT-BR:
Congrats on the new localization! It will be interesting to hear if you see any difference in your numbers.
Localization is always a balancing act between players and cost I guess. I once had an app localized into many languages before launch, only for it to flop, so I like your approach of seeing where there is initial interest before making the investment. I hope it becomes a hit in Brazil and you make a bunch of money!
Thanks! I’ll be sure to post an update once I have it released.
So far my top 4 countries for revenue:
- USA
- Korea - driven by large ECPM
- Japan - driven by large ECPM
- Brazil - driven largely by large volume of impressions
And top 4 by number of ad impressions:
- Brazil
- Turkey
- Indonesia
- Mexico
The game is now featured as the Game of the Week on Play Games! I’m really excited to see the stats in the days to come. Please like and retweet if you are so inclined.
So far I’m seeing plenty of native crashes on Android 6 and 7 devices. My experience with Instant is that its way more buggy than actual installed apps.
In other news, my store ratings have been very positive overall! Makes me happy that people enjoy such a simple game.