So you wanna make an Android port of your visual novel?

If you’re following us on social networks, you already know that Being Beauteous and Ambre were both released on Google Play a few days ago. At first, I hesitated over giving you the technical details, but since Mystery Corgi dev asked me for precisions on Twitter, here’s my experience with Android ports. Warning: it’s gonna get ugly!

Ambre MM Android

It makes you proud to see your game working on a phone *__*

To get started
You finally finished your latest visual novel and you’re thinking that multimedia is the future. So, you want to make your work available on every platform possible in order to be read. The good news is that RenPy provides you with a small guide. So you start to download a succession of softwares that you will never open but that RenPy will use in your place.You’ll need Java Development Kit, Apache Ant and Android SDK. Once you’re done, you will still need to get the Ren’Py Android Packaging Tool, if you haven’t yet. This RAPT consists of a file that you’ll have to place in the Ren’Py directory you’re using. If you open RenPy, you will now be able to configure your project.

RenPy Launcher
Configuration of a Google Play Publisher Account
Here’s where things are going to get complicated. Because you can’t create a build yet, you’ll just make RenPy crash, as I did. Before going to the next step, you’ll need something important: a signing key. And nobody will explain you how to do it. From what I understood (but it’s really not clear), you’ll have to get a Google Play Publisher Account, even if you don’t want to publish your product in their store (?). In order to get that account, you have to sign in with a Google account (I think almost everybody has one) and pay a $25 USD registration fee.

Acces API

I couldn’t change the language setting on my Google Play account so you’ll have to bear with my French screenshots <_<

Once you got it, you’ll have a whole lot of options to configure. It seems that you absolutey need a OAuth client and a service account (see the API Access menu above) and for this, you’ll have to retrieve the SHA-1 certificate footprint. Which turned out to be quite a headache for me. I searched through the web how to get this from the android.keystore file generated by RenPy at the start of the operation, but in vain, nothing I tried worked. In desperation, I turned to Keul who suggested I download the HashCheck Shell. extension.Thanks to that tip, I only had to open the properties of the file to retrieve the SHA-1. I have no idea if iI did it the way it was intended to or not but configuring that account was annoying as hell. I rarely saw more uselessly complicated and it made me realize how life was easy with the community around RenPy: there’s always someone with an advice or a guide T_T.

Projets GPAt this point, you should be able to create projects and generate a key for each one (don’t lose it!).

RenPy takes care of everything…almost
Back with RenPy, you have to put the key in your game. Following the advices of Sleepy Agents I found on the net, I copypasted mine in the options.rpy file.

Clefs RenpyYou’ll also need another sequence of numbers, and once again you can’t find an easy generator to do that for you, so you’ll have to take care of it yourself (or use the simple but risky sequence that the RenPy guide is showing you as an exemple). Once those two lines are added to your code, you will finally be able to make a build.

RenPy Launcher2One last word concerning the configuration: RenPy will ask you if you want expansions for your Android port (depending of the size of the file). You will actually need both versions: the 1st one will allow you to install the game on any Android device to quietly go through your testing phase, whereas the 2nd one is crucial if you want to put the game on Google Play. The limit being of 50MB, it’s nearly impossible to have a smaller file, even with a short project.

Configuration of a Google Play store page
Let’s work on the basis that you want to put your game on Google Play, here are some tips that, I hope, will help you.

Google Store• To begin with, you need to upload your APK file. I suggest you do so by directly assigning it to the Alpha track, otherwise Google Play won’t allow you to upload an expansion file (thankfully, you’re still able to modify that anytime).
• When filling the description page of your project, you will quickly realize you have to be concise. Be careful, Google Play will try several time to encourage you to use the translation service. It may sounds harmless but those services are not free and you will soon be asked to pay an amount that isn’t that small! Unless you have money to spend, I’d advise you to do the translation yourself or just pass.
• The questionnaire you have to fill to get a rating really isn’t adapted when it comes to visual novel. And it isn’t always clear on top of that. It’s quite difficult to get what each option really means. Like this, the confusion caused me to get a 18+ rating with Garden of Oblivion on my first try because I didn’t know the difference between “far” and “close” portrayal of violence. Pay attention and don’t hesitate to fill the form again to compare the results!
• In order to sell a game, you have to use a Merchant account and for that, you’re asked informations about your company. If you don’t upgrade to Merchant account, your games will have to be free.

With all that, your app should be ready to be published. But before clicking on that fateful button, you really should make a small verification: is your game adapted to Android?

Ergonomics issues
In order to make you think a bit, here’s a sequence of issues I got when I asked Keul to test the games on his phone for me.

Finger issue

As you can admire, thanks to Keul’s finger, it’s difficult to click with the original GUI…

• Most quickmenu (you know, the navigation buttons above the textbox or below in NVL mode) were way too small. So I needed to turn some pictures into text in order to increase their sizes as I wanted (it was the case with Ambre) but also increase the space between each button.
• Needless to say the font in general had to be increased as much as possible as well to allow some reading comfort.
• It got more complicated when the games were using lots of pictures. HVNCML, especially, took me a whole afternoon to get fixed; I had to increase the background picture to put bigger buttons and space them out, which lead to text collisions since the text was scrolling under that picture. Same with the PM system. Only after many tests was I able to balance everything.
• Just as bothersome, Garden of Oblivions icons were too small and too close to each other, which meant I had to increase them and adjust their positions. Another problem: the button that should be used to make the pause menu with all the options appear was, according to Keul, not really used by people anymore. So he advised me to add a quickmenu and I had to create new buttons inspired by the existing GUI and place them accordingly. For exemple, I had to keep an eye on whether the quickmenu was running over the sprites (it was the case with the rabbit). I also had to hide that quickmenu during the puzzle phases in order not to bother the player.
• Since you can only play a game in fullscreen on Android, the Fullscreen/Window button in the Options menu became completely useless! However I decided to keep it because I didn’t want to make a hole X).

Anyway, if you don’t have to remake entirely your visual novel for an Android port, you will still need to adjust the GUI!

To conclude
Here you are, finally ready to publish your app! You still need to wait for Google Play validation (it can take a couple of hours) and your game will be available. You suffered but it was for a good cause! Fortunately for you, I’m here to tell you all I did wrong so that you’ll suffer less than I did =’D.

pythonw 2015-09-15 22-37-28-53

Screenshot of the Android version: look at the new quickmenu on the right =’)

Don’t forget that HVNCML will be released wednesday and GoO the week after that! If you have some time, try out our Android ports and tell us what you think about it, it’ll make me happy :3.

4 commentaires sur “So you wanna make an Android port of your visual novel?

  1. Is there any other way to get signing? Registering for Google Play Developer account is not really an option because the registration fee $25 in USD when converted to local currency (MYR) will be impossible for me to pay as a student who only depends on study loan and part-times are not option since I’m living in a dormitory…

    the currency exchange is currently 1:4 which means $25 is RM100, even higher than my internet plan (RM40 per month) and I just barely able to pay them… :/

    • Technically, you don’t have to get a Google Play account to make an APK but I’ve never managed to because of a weird bug. So if you try (don’t forget to tell RenPy you don’t want an expansion BTW) and it works, good for you. If it doesn’t, well, I’m sorry but I can’t really help you considering I was unable to figure out the problem in the first place =/. I can only wish you good luck!

  2. Hello, i wish you could help me. I’m also creating a vn in renpy. I finished editing everything like in gui and stuff the problem is it wont apply in the android ver. The gui goes back to default exept for fonts, color and menu background.

    How would i apply my design to the android ver?

    • You’re lucky because I think I see what your issue is.

      The newest versions of RenPy include blocks of code in screens.rpy specifically dedicated to mobile. If you don’t touch them your game’s GUI will indeed revert to the default one once you try running it on mobile. Just use the search tool of your script editor and find those blocks (they’re usually at the very end of screens.rpy). You then have to apply the same changes as the ones you did in the main block of code and remove the parts you don’t want. Good luck!

Leave a Reply to Ethan Cancel reply

Your email address will not be published. Required fields are marked *