If you want to make a Visual Novel, chances are you’ve heard of Ren’Py. It’s free, even for commercial use, open source, and is specifically tailored to making VNs, containing a lot of basic functionality like saving and skipping out of the box. It’s also designed to be as friendly as possible to people who aren’t veteran coders.
Those of you who know me know that I make tutorials for Ren’Py, and it may seem that I am biased towards it. Well, I am. It’s a great tool, and it’s kinda hard to beat truly free.
However I am aware that Ren’Py has some shortcomings compared to other options out there (Unity, Unreal, and some others). I want to discuss those honestly, and the cases in which those shortcomings might outweigh Ren’Py’s advantages and make it not the ideal engine for you. Ultimately, you’ll have to make the decision yourself, but I’d like to be able to help you make it.
One of the great things about Ren’Py is that it’s based in the Python programming language, and allows you to just insert Python code as you please. This means that despite having an easy learning curve for basic functionality, you can go as deep into the rabbit hole of mechanics as you are willing. You want to make minigames? Ren’Py can do that. An RPG? It’s been done in Ren’Py before and surely will again.
The main limitation of this is that Ren’Py is a bit behind when it comes to some of the fancier graphics options. For instance, shaders, which are a standard in more sophisticated engines like Unity, are not supported (though Tom is working on that). Another thing missing is native Live2D SDK support, which Unity has. There are workarounds, but it’s still not the best solution.
The next big win for me is that I can just script in a text editor and not have to screw around with some UI that gets changed every release. I find that if you have to click and move your mouse around that much it slows down my productivity. This is my main beef with Unity, and Unity plugins for Visual Novel creation like Fungus (free) and Utage (not free). I just can’t work as fast.
However, that’s me. I’m a veteran coder and being able to drag, drop and so forth don’t give me much if any further insight than I can get from reading my script. When things get complicated enough that I need a visual, I can check to see if things work properly in Ren’Py pretty easily by launching the game, or reloading it with Shift+R.
If you’re inexperienced or a very visual learner, the UI elements of mainstream engines might be very appealing and helpful to you. And that’s okay. But the UI is never going to be a full substitution for what you can get via coding, even in Unity, so if you want more advanced features you’re going to have to cross that bridge at some point, or pay someone else to do it for you.
I’ve already mentioned that Ren’Py is free for commercial use, and that’s probably one of the things that draws new people to it the most. Most engines are either pay up front or free until you make enough money off it that you’d be worth suing if you don’t buy a license. Out of those that are truly free, Ren’Py is pretty much the runaway 1st place in terms of quality. (Disclaimer: I heard Unreal went to the MIT license lately, but I’m not familiar enough with it to know how it competes).
If you want me to list a downfall for this point, too bad. I can’t think of one. Maybe later.
Another big advantage that a lot of people don’t realize is that Tom, the creator of Ren’Py, is very accessible. He runs a public Discord server for the engine and is there daily answering people’s questions about how it works, all while continuing the improve the engine and holding down a day job. I’ve made feature requests to him and if they’re relatively simple and make sense to be added, he might get them implemented within a day or two. Now I know Tom and I’m an admin on the Discord so you might think that I have an unfair advantage in this, but he’s usually quite receptive to suggestions that are made with real thought behind them, and if he decides not to do them he will explain why. For most larger engines with a company behind them, you don’t even have a hope of talking to someone in charge, let alone getting them to do anything, without needing a huge public opinion backing you up.
And finally, the last main advantage I haven’t covered. Ren’Py is specifically tailored towards non-programmers who want to make Visual Novels. Upon generation of a new project you will already have a fully functional game, albeit a very short placeholder one. But all of the menus and navigation, saving, loading, volume controls, etc, they all exist already. You don’t have to add those, but you can make them look different if you so choose. The Ren’Py documentation specifically has a guide for customizing your UI elements and unless you want to drastically change the structure of things, you can do that with very minimal coding. It’s very fast and easy to get up and running.
Now, let’s talk about some disadvantages. First: Ren’Py does not port to consoles. It can do PC/Mac/Linux out of the box, and getting an Android version isn’t too hard, but even iOS can be hairy to get working, and there’s no support for any specialized gaming hardware. People are clamoring for a Switch port option, but Ren’Py is not a “big enough” name to even get Nintendo interested.
Second: If you wish to do anything too far from a Visual Novel (mainly timing-intensive games or fancy graphics as discussed before), Ren’Py is not as well suited to them as its competitors. So a VN/FPS hybrid, should you wish to make one, would take quite a bit of work. Even one of the most common hybrids of Point-and-Click can be tricky if you haven’t got a good knowledge of programming.
So if you’re considering Ren’Py, ask yourself this:
- How much specific customization do I need in how my game works? If the answer is a high amount, Ren’Py can support that very well, often better than other engines. If the answer is low, you’re still welcome to use Ren’Py, but it might not be as valuable to you.
- Do I want to make a Visual Novel or something close to it? If the answer is no, then Ren’Py is probably not ideal. But if the answer is no, how did you find this page, anyway?
- Do I want 3D graphics support? If yes, then Ren’Py is probably a very bad idea (for now). You can certainly use 3D images, but there’s no native support for models allowing precise animation adjustments without re-rendering the entire image. Unless of course you homebrew it yourself, which let me tell you, is not a trivial endeavor.