SakeTami
Naughty Road
Naughty Road

patreon


Ren'Py: The little engine that could

It's been a while (as usual) since I posted something, so today I figured I'd talk a bit about a little program that makes the majority of the indie VNs like Light of my Life possible. I'm talking about the engine, of course, which in this case is called Ren'Py.

It apparently takes it name from the Japanese ren'ai (恋愛), which, if the wiki page is to be believed, stands for romantic love. Changing 'ai' to 'py' is a reference to the programming language Python, which it is based on, and in some ways, is an extension of.

It was first released by Tom "PyTom" Rothamel over 19(!) years ago, and if ever there was a creator that deserved a bit of love, it is Tom, for making all those fantastic VNs we play possible completely free of charge. But I digress.

Coming back to ren'ai, romantic love is a common theme in Visual Novels, and indeed, Visual Novels is what Ren'Py excels at. It is, in fact, such a great tool for creating Visual Novels that I shudder to think about having to create one in a more generic programming language or engine.

So, why is that exactly? In this post, I'd like to shed bit of light on why Ren'Py is such an overwhelmingly popular choice for making Visual Novels.

I mean, even Denise boots it up when she sets out to make a game of her own.

For me, what makes Ren'Py great at what it does begins with the novel part of Visual Novels. With this engine, writing a story is the heart of the workflow. You just boot it up, open a file, and after some minimal housekeeping to define some characters having a dialog, you start writing that dialog. In fact, something like this is perfectly valid Ren'Py code:

denise "Hey, Macy. What are you doing?"

macy "Trying to hack the MC's phone. He changed his code."

denise "Well, if he did that, it's because he values his privacy..."

denise "...and you should respect that."

macy "Pssh, yeah, as if."

denise "Macy! Stop it!"

mc "What's all this?"

I mean, it doesn't get more natural than that, right? It feels like writing a dialog for any kind of written story. And in this form, you can already execute it, and see how the words flow.

Of course, it's a Visual Novel, not a Kinetic Novel, so we want some choice.

denise "Hey, Macy. What are you doing?"

macy "Trying to hack the MC's phone. He changed his code."

menu:

      "Denise says: 'Respect his privacy.'":

            denise "Well, if he did that, it's because he values his privacy..."

            denise "...and you should respect that."

            macy "Pssh, yeah, as if."

            denise "Macy! Stop it!"

      "Denise says: 'Let me have a go.'":

            denise "Oh, right. Well, let me have a go."

            macy "Sure. Knock yourself out."

            denise "Heehee."

            macy "I've been at it for hours. I doubt you'll have any more luck."

            denise "Beep-beep-bob. And we're in."

            macy "Sonofa-"

mc "What's all this?"

All of that is still very readable as a coherent dialog.

Let's put one more flourish in and let the dialog respond to a previous choice:

denise "Hey, Macy. What are you doing?"

if mc_changed_his_code_before:

      macy "Trying to hack the MC's phone. He changed his code. AGAIN."

else:

      macy "Trying to hack the MC's phone. He changed his code."

menu:

      "Denise says: 'Respect his privacy.'":

            denise "Well, if he did that, it's because he values his privacy..."

            denise "...and you should respect that."

            macy "Pssh, yeah, as if."

            denise "Macy! Stop it!"

      "Denise says: 'Let me have a go.'":

            denise "Oh, right. Well, let me have a go."

            macy "Sure. Knock yourself out."

            denise "Heehee."

            macy "I've been at it for hours. I doubt you'll have any more luck."

            denise "Beep-beep-bob. And we're in."

            macy "Sonofa-"

mc "What's all this?"

So as you can see, all of this is first and foremost about writing up a dialog, and even when you start adding in branches and responsiveness to choice, it's still easy to read from top to bottom.

This also makes it extremely easy to review and edit the dialogs you've written. And you can test drive those dialogs right away. Even if there's no images displayed yet, the dialog part works, and you can try it out for pacing, test the branching and the logic, etc. I imagine you could even send it out to your editor for review in this form.

So it's story first, then come images. It is a Visual Novel after all. And as you'd expect, you simply put those into the dialog, keeping the existing structure intact and whole, and still easy to follow. For instance:

scene kitchen_background

show denise happy

show macy playing_with_phone concentrating

denise "Hey, Macy. What are you doing?"

show macy holding_phone eyeroll

if mc_changed_his_code_before:

      macy "Trying to hack the MC's phone. He changed his code. AGAIN."

else:

      macy "Trying to hack the MC's phone. He changed his code."

menu:

      "Denise says: 'Respect his privacy.'":

            show denise smug

            denise "Well, if he did that, it's because he values his privacy..."

            denise "...and you should respect that."

            show macy holding_phone sneer

            macy "Pssh, yeah, as if."

            show denise angry

            denise "Macy! Stop it!"

      "Denise says: 'Let me have a go.'":

            show denise hold_out_hand

            denise "Oh, right. Well, let me have a go."

            show macy handover_phone neutral

            macy "Sure. Knock yourself out."

            show denise take_phone impish_smile

            show macy neutral

            denise "Heehee."

            show macy condescending

            macy "I've been at it for hours. I doubt you'll have any more luck."

            show denise hold_phone happy

            denise "Beep-beep-bob. And we're in."

            show macy annoyed

            macy "Sonofa-"

show mc entering_kitchen

mc "What's all this?"

 

Of course, those "show" statements each reference an image you first have to create and put in. Creating the vast amount of images you may need to bring your vision to life is a ton of work for sure. But after you have those images, the process of putting them into the dialog is really straightforward, and it doesn't lose the focus on creating dialog first.

So, why isn't every indie lewd game made in Ren'Py then?

Well, Ren'Py does Visual and Kinetic Novels real well, but it's not geared towards some other types of gameplay. Which is not to say it can't implement it. If you pop the hood and aren't afraid to get your hands dirty with some Python, there's not a lot you can't do with patience and dash of skill.

There's other engines that are easier to use if you want to make a different type of game. Say, a platformer, or a dungeon crawler. Or if you have an issue with its open-source nature and the fact that anyone can snoop around in it, and its eagerness to accept external modifications. And in some cases, developers just have existing experience with other engines they want to leverage of course.

But it excels at those Visual and Kinetic Novels, and, with some frameworks (or custom code) in place and a touch of programming skill, it does a pretty decent job at sandboxes too.

Alright, that's is it for my ode to Ren'Py. I hope this helped shed a light as to why it's so ubiquitous. I glossed over a ton of details to be sure, but I really intended to show what makes Ren'Py the principal choice for so many VNs, not do a tutorial, as there's plenty of those out there.

If you've been thinking about making your own Visual Novel, know that this engine will help make some parts of it pretty straightforward and easy.

Comments

Second popular motor It was also founded in 2004 by the Icelander David Helgason, the Dane Nicholas Francis and the German Joachim Ante under the name Over the Edge in Copenhagen and renamed Unity Technologies in 2007.

lukumo

Renpy celebrated its 20th birthday on August 24th, and there are now thousands of games using Renpy as an engine. My number 1 because it's free. Original author Tom "PyTom" Rothamel Developer Tom "PyTom" Rothamel First published August 24th, 2004

lukumo

Oh yeah, it's one of those easy to get in to hard to master things for sure.

Naughty Road

Great post. As a relative Ren'Py novice I have found the basics to be easy to pick up and dialoging in a breeze. I'm slowly expanding my abilities but it's gonna take a while.

Blacklabyrinth


More Creators