ZAGS Planner Progress

ZAGS is going to be a more traditional stat-based dating sim, so an important part of the GUI is the planner and stats screens.

I spent part of today getting the screens up and running, with a ton of animation thanks to ATL. I think it turned out pretty nice!

Also managed to get the prologue to the game completed today, so actually managed quite a lot of progress.

Tomorrow we’ll start work on actually coding the planner.

ZAGS GUI Progress

I’ve made less progress than I wanted on ZAGS, but I’m in the process of building out the game GUI now.

Here’s an animation of the choice menus and how things move about the screen.

My goal is both to finish writing the prologue and to start on the scheduler/stat aspects of the game by the end of the week. We’ll see how far I get!

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 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 checks.

So it begins…

ZAGS has been a long time coming, so this is, in some ways, a continuation of the previous ZAGS posts.

But I think I’m actually starting up in earnest now. Spent yesterday both testing the cross-game persistent variables that will carry game state over from YAGS:

as well as starting to pull together the GUI (also Hi, stick figure Chris!):

More to come, including code explanations for the cross-game functionality and my usage of LayeredImage to replace YAGS’ convoluted sprite system.