Apple Spider (Casual arcade action)

Since release, my wife has been playing the game quite a lot. I asked her how she likes the gameplay, and she said something like: “I don’t know, I just want to beat your high score!”. :rofl:

She did manage to beat my score, and also reach a higher level!

In marketing news, I still didn’t have any time or desire to make promotional materials, but decided to Tweet about it anyway. I’d really appreciate any follows/retweets/hearts!

I think my next move will be porting this to Amazon devices. From my past experiments, this will mean replacing the Unity ads extension with Enhance, which allows me to use Vungle and Amazon ad networks. The Fire devices don’t have Google Play services, so compatibility with most ad networks is non-existent.

Last time I was able to manage this by a git branch, but I may just completely copy the project and try to sync up any gameplay changes.

Has anyone seen if Amazon has an actively maintained service for leaderboards & achievements? GameCircle is gone.

2 Likes

I finally started working on porting to Amazon Appstore!

My previous post explains the extension differences, and I did end up creating a duplicate project.

My experience with Enhance has been pleasant so far. That service is really a clever idea. Adding both Amazon & Vungle add a lot of weight to the project, but it should be okay.

Right now I’m mostly troubleshooting.

  • I experienced some crashes when switching to the Amazon IAP provider (made a PR to the Defold IAP extension to fix).
  • The Enhance Amazon Ads integration is logging errors about HTTP requests instead of HTTPS, so I’ve sent Enhance support a message about it. Seems to be preventing Amazon ads from working.
  • Vungle is logging messages that it can’t fill my ad placements, so I’m unable to test if the rewarded ad & interstitials are even configured correctly. The app is set up in “test mode” on the Vungle site, so no idea why it’s failing right now… This worked really well on the last game I had experimented with.

I will likely also package up a stripped-down “Premium” version with no ads or IAP. Doubt I’ll bother releasing that to Google Play, since I know it will do better on Amazon.

3 Likes

Well… mysterious errors really bother me, so I couldn’t leave this alone. I’m sure I could work with Vungle or Enhance support to solve this, but… I’m not that kind of programmer.

Instead, I forked DefVideoAds and made a Vungle ads native extension. My first idea was to make it a drop-in replacement with the same API, but the SDKs seem different enough that I abandoned that idea. I’ve got the extension working on a test app (after much debugging!), so I’m quite pleased.

Next I’ll test it out on my real game!

2 Likes

In the last 24 hours, I’ve learned something very important about how Vungle works.

If you tell them your app will be released on the Amazon Appstore, they are making a big assumption that you are only intending to run on Amazon Fire devices. If you attempt to load those ads on a regular Android phone, error messages get logged and ads (even test ones) will not be served.

If you want to use their ads, release on Amazon, and also support non-Amazon devices, you will need to set up 2 apps in Vungle’s dashboard, and upload 2 APKs to Amazon (selecting device compat).

As soon as I tried the game on a Fire Tablet, the ads worked great. Might have a bug or two to work out with the extension, but it’s 90% there!

UPDATE: The extension seems to work, I just needed some code changes in my game to check for the ad loading status more often.

Bonuses of building my own Vungle extension vs relying on Enhance: Smaller APK. The apk from enhance w/ Amazon and Vungle was over 20MB. I’m at ~14.5MB right now with only Vungle. The Amazon ads SDK is ~500KB if I choose to add it later.

4 Likes

The Vungle extension seems to work great on Fire tablets, so it’s now in the Asset Portal!

I also managed to get the game released to production on Amazon! If anyone has a Fire tablet, please check it out. Feedback is very welcome.

A moment of panic today:
After promoting my release from Testing to Production, I noticed my IAPs were still not working (Amazon doesn’t seem to let you test them without using some weird side loaded apk…). Logcat showed error messages that it couldn’t launch some Amazon testclient intent.

  • I tried changing proguard file to match the docs… no luck.
  • I carefully read the docs and compared to the extension-iap source… nothing obvious.
  • I uninstalled the app, then reinstalled… it works now.

The lesson here: users on in your testing program will need to re-install the app after it’s released. Amazon does stuff to your uploaded APK to inject the IAP libraries, and they are not present in the test version. Google Play is sooooo much better at this workflow!

4 Likes

I finally upgraded to Defold 1.2.174 last night (from 1.2.172)!

Had a bit of a rough start, since I had to hunt down Britzl’s post on converting an existing certificate into a keystore, but it wasn’t too difficult thanks to his shell script. I’m on Windows, but it worked great using Git Bash.

I then encountered crashes a second or two into the game launching, which turned out to be a known problem with DefVideoAds that was already fixed. Once I updated that, everything seems to run great.

Next up was upgrading extension-gpgs to 2.0.0, which was recently announced. No issues there, worked first try.

Finally I decided to try the latest DefReview, which added support for Android in-app reviews. Previously, I had a star button that would open a dialog asking the user to review, with a button that launched the Play Store page. The extension worked perfectly, and I really like the UX!

Many thanks to @AGulev for the great extensions!

I’m hoping to explore Instant Apps soon, but need to figure out what modifications are necessary to be compatible. UPDATE: Just skimmed the official Instant Play Games checklists, and this will be interesting… Seems worth it, but definitely requires some effort to meet their guidelines.

4 Likes

I’ve published my first Internal Test with Android Instant!

The requirements are odd, and the manifest & version numbering have to be different than the main game, so I ended up copying the project (again).

Luckily the game logic and assets are unchanged between these 3 versions (Play Store, Instant, and Amazon), so updating them isn’t so bad.

Here’s what I had to do for Instant Games, per their checklist:

  1. No fullscreen video ads. I just commented out the code that shows video ads, and implemented a banner ad. This required moving some UI elements down a bit.
  2. No ads until 3 minutes into the gameplay session. (except for rewarded ads) To accomplish this, I used a timer.delay(180,.....) before showing the banner ad.
  3. Followed the defold docs for the instant extension. No issues there, it was very complete and accurate.
  4. Set version number of my normal game to 1000+ (was in the 50’s), and set the Instant one to 100+. Instant games need a smaller version than the full installable game to allow android to consider it an update. I released the normal version with the larger version number ahead of this instant release.

That’s about all it took. Seems to work okay in testing, but the game did randomly close once. Need to figure out why, and get more of my testers to try it out.

3 Likes

I’m really close to releasing on Google Play Instant!

One of their recommendations is to have a good video of gameplay footage. Up to now, I just had a short 5 second clip.

I’ve edited skateboarding videos in the past, so I knew I could do better. Here’s my first draft of a trailer, using Davinci Resolve 16.

Can I get some feedback and suggestions? I feel like I should do something more dynamic with the phone and text popups. That main logo transition is too slow as well.

2 Likes

Several iterations later, I’m pretty happy with this!

1 Like

Great news: Google accepted my game to be featured on the homepage of the Play Games app, in the Instant Games section! :partying_face:

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! :nerd_face:

image

10 Likes

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. :partying_face:

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.

6 Likes

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! :grin:

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)
6 Likes

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:

  1. Click “try now” from the Play Store or Play Games
  2. After it downloads, the game auto-launches.
  3. Wait for the 2 second timer, then watch the game freeze.

To not ANR:

  1. After the game exits, launch it again.
  2. Magically it’s okay… :upside_down_face:

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!

7 Likes