Today I decided to get started with Renpy. How better to do this than to make a game in one day?
RenPy makes visual novels, so I downloaded it from the website and set to work.
Luckily for me, it was a very simple set up and install: it even had links to ATOM, their preferred IDE (text editor for writing code). I was up and running in minutes.
Update 1: What to make
Of course, my first step was to poll Twitter to see what kind of game I would make:
Alright, so I’ve decided to make a visual-novel game with Renpy today.
I want YOU, to help me choose what the game will be! RT because we’ve only got an hour before this poll’s over!
— Finlam Elman (@FinlamElman) April 16, 2018
It was a close call but “Trapped in a MMO” won. You just can’t fight the popularity of Sword Art Online, Log Horizon, .Hack, etc…
Now all that was left was making the game….
Update 2: Setting up the title screen, etc…
Now that I knew what I was going to make, I set about making a title screen and an icon.
Fortunately, the docs for RenPy are amazing (approx 1 mil X better than the docs for Java, though that’s not saying much and just thinking about java docs makes me want to drink).
I ended up with this sweet icon
and this sweet title screen:
I’d already mapped out the plot.
Update 3: The Plot
The raucous dun of the tavern fills your ears; another day in the ale stained land of Dwarf Arte Online. Suddenly the lights dim and a flourish of graceful leaves fills the tavern. As the air clears a majestic Elf appears before you:
Look at you little Dwavres drinking your ale, singing your quaint drinking songs. You can’t handle your liquor, not really, not like I can.
With that the elf throws back a mug of ale so fast you begin think you had imagined it, then another, then another. In no time at all the table is stocked up full of bottles. The room is silent.
The elf belches gracefully.
I’ve put a spell over the tavern. None of may leave until you’ve defeated me in a drinking contest.
And so begins our story….
Will you raise your fortitude and defeat the elf or will you win the androgynous’ elf heart, seducing your way to victory. Love or combat; battle or seduction: how will you win your freedom?
The fate of Dwarf Arte Online is in your hands.
Update 4: Getting into the swing of things
There are only 3 challenges with this project:
- Art – the eternal challenge
- Writing – the other eternal challenge
- Technology – the third eternal challenge
Fortunately, Renpy was pretty easy to get up and going. It has convenient syntax for defining characters and writing dialog, scenes, etc… it’s fairly seamless. In fact, writing the dialog is just like writing out the lines to a play or a script: it’s all right there, easy to easy and easy to see who’s talking and what’s going on in the scene.
Honestly, I haven’t seen an organization of form and content this useful and seamless since my days writing LaTeX code. As I’m a HUGE fan of Donald Knuth, he is my favorite computer scientist, I don’t say that lightly.
Thanks to RenPy, technology has been all of no obstacle in this project.
Also thanks to a protracted visit by the muse “Insomnia” last night, writing has not been an obstacle either!
I decided to stick to a simple MC + 3 character model with short dialog so I can finish in my 1 day timeframe.
Art still proved a bit of challenge, but thanks to parody as protected speech and the full on awesomesauce that is the wikimedia foundation, with a little bit of help from GIMP, that soon proved to be little obstacle:
Update 5: Nearly there
After numerous delays, I’m near to complete with my first Renpy project: Dwarf Arte Online. I initially intended on it being a quick turnaround, but once I started writing the dialog and the characters I decided it needed to be done right.
It is a testament to the design of the Renpy system that less than 5% of my time has been spent coding and the rest has been spent writing dialog. I can think of no other development framework that simplifies the making of game to such a fine degree.
It was also really, really, easy to implement all the features that I wanted to test.
- Stats/Inventory system
- Dynamic menus and dialog based off
- Event Triggers
- Recursive menus that continue until all options are exhausted
- Theme music
I think these are all interesting and a little outside the scope of this post, so I’ll be doing a series of micro-acrticles throughout the next week to lay out the code and explain how to implement each of these in your own game.
After the dialog was written, the next step was to compile the game for as many platforms as possible.
Update 6: Final Update – Game Release
It turns out packing a RenPy game for Windows is fairly easy, but packaging it for Android takes just a little bit more work.
Most of this work is just software installs which, with the notable exception of the JDK, RenPy takes care of for you so you don’t have to worry or learn 4 bizarre and specialized frameworks to compile your app. Like all of what RenPy does: you just let it do it’s work, and it makes your life easy.
Getting the APK on the Android Play Store was considerably more complicated, involving a $25 fee, multiple pages of forms and verification in a non-obvious order, and interface for deploying apps that is clearly designed for experienced professionals rather than hobbyists.
Still, if I can stumble through you can too!
This project was initially intended to be an crash course in RenPy and it worked pretty well for that. Throughout this week I’ll be posting a series of micro-articles on some of the techniques and patterns I used in Renpy. I’m particularly proud of the two-line scrolling credits.
The other articles are listed below: