Android Builds with RenPy

I spent most of today trying to figure out how to generate an Android build of YAGS. The RenPy documentation is pretty good, except if you want to have your own keystore for signing.

Start by opening RenPy and clicking the “Android” link for your game. If this is your first android build, it’ll download and install a bunch of tools and prompt you to install the Java JDK, if you haven’t already.

After all of that’s done, you can test your game by launching it (from that same "Android" link > Emulation > Phone (or Tablet)). You may need to make some tweaks, especially if you’ve done extensive GUI customization for the standard desktop form factor. In particular, note that the variant "touch" and variant "small" directives can be useful to update your screens, and that gui.rpy has several mobile-specific style overrides (such as font sizes) at the bottom of the file.

Once you’re happy with your game, it’s time to build a package. Before you do this, you may want to create and configure your own keystore and create custom icons (with thanks to Rob Colton for help with the keystore).

First, if you don’t want to use the keystore that RenPy creates for you, you can create your own with keytool:

C:\Users\Bob> cd "C:\Program Files\Java\jdk1.8.0_191\bin"

C:\Program Files\Java\jdk1.8.0_191\bin> keytool -genkey -v -alias yourkeystorealias -keyalg RSA -keysize 2048 -validity 10000

This will prompt you for various values involved in generation. You should set a keystore password, enter your name (i.e. “Bob Conway”), and your company (i.e. “bobcgames”) as the organization unit and organization. Then enter a key password. This will create a .keystore file in your user directory (i.e. C:\Users\Bob\.keystore).

(Alternately, you can use this tool, as recommended by Rob, do to keystore generation visually.)

Next, you’ll want to update your rapt settings. Navigate to renpy-7.x.x-sdk/rapt/project and open local.properties in a text editor. Edit these settings to match the values entered during keystore generation (alias, keystore and key passwords, and keystore location).

Finally, create images for the icons and presplash screen. The official documentation is pretty good about information on this, but note that the files should go in your base directory, not under /game. (This is the same directory where your icon.ico and icon.icns files go.)

You’ll also probably want your foreground image to be larger than the “minimum safe” size of 132×132 px. I just did 250×250 px for mine.

That should be enough to successfully build an apk, which you can then distribute!

Also worth noting: Multi-game persistence does not work with mobile builds. You should case all of your multi-persistence (including initializing the variable) with if not renpy.mobile: checks.

(Closed) Beta Release

This isn’t a release post in the normal sense, because this isn’t a public release. (You may also have noticed that I’ve taken down the download links.) But today is the “release” of the final beta for the game.

The game is basically done! I’ve done all the cleanup I want to do, all of the big sprites are in (leaving just Steve, Robert, and Ashleigh/Leigh), the final music is in, nudity is now patchable, and… we’re basically finished! So this beta is going to hopefully tease out any remaining issues.

I’ll get the remaining sprites in throughout January, and we’re looking at a late January final game release. Stay tuned to here (or, more preferably, my twitter) for more information as we approach mid-January.

Version: v0.202-beta
Release name: G is for Gay

Changes in this release:

  • Fixed a bug that deleted collectibles (sorry!)
  • Added a new scene for National Coming Out Day
  • Replaced Nikhil, Hannah, Elliot, Liz B., Liz G., and Nate sprites in game
  • Replaced music with final tracks
  • Replaced remaining CGs in game
  • Added some achievement hints
  • Added additional unlockable profile features
  • Added unlockable “placeholder” sprite style
  • Carlos now calls the main character by his name
  • Fixed a ton of typos
  • Censored sex scenes even more when censoring is enabled
  • Made game patchable for nudity/censoring

Stats for this release: 26,371 dialog blocks, 232,011 words, 1,222,701 characters 

Major kudos to @stollcomics for his herculean efforts in getting sprites done over the past few months and making this possible. The game (and the guys) are looking utterly gorgeous.