A curated list of awesome goodies for RenPy visual novel engine. Originally this started as me dumping my bookmark folder, but since this accrued some interest, I decided to make this more of a thing. Things that were known to be obsolete at the time of writing -- which happens relatively often in the RenPy land -- did not make it into this list unless they were otherwise significant or were the only example of their kind.
Who am I kidding, this will languish in obscurity like every other attempt to produce an index of these things...
RenPy's own documentation is somewhat scattered, at times incomplete, and often, insufficiently detailed.
That is, of course, no excuse not to read it, but if that was not helpful:
- Lezcave - A set of basic tutorials
- VNCoder - Another set of basic tutorials.
- Working with RenPy - Almost a book, walking through much of the basics.
- Feniks Development - In-depth explanations of basic programming notions as they relate to RenPy.
- Python Tips - While not specifically RenPy related, so a number of sections dealing with the operating environment are not relevant, this book will aid people who already know the very basics of Python.
- getting your head around Ren'py: for coders - Explains the unusual things about RenPy for people with experience of more regular programming languages.
- Free Python Books - A list of Python books in English that are free to read online or download.
- Ren'Py Tutorial - LayeredImage - Complexities of
layeredimage
by example. - Reading Screen Language Documentation - A treatise on understanding screen language documentation.
- Implementing Translations - Detailed explanation of how to translate a project into multiple languages.
- Ren'Py Visual Novels on Steam Guide - A comprehensive guide with screenshots for getting your Ren’Py based game onto Steam.
- RenPy for Dummies - A Russian-language blog full of cookbook examples.
- Đнциклопедия Ren'Py - Russian-language RenPy wiki.
These are articles from PyTom's Patreon, most of which explain a certain feature in more detail than the manual does and provide example code.
Explain certain obscure, but sometimes critical implementation details.
- Under the Hood: Interactions - the only explanation of what an "interaction" is.
- What is a context? - A more in-depth explanation of what a context is.
- Porting your game to Python 3 - Some detail on what exactly is different between the 7.5 and 8.0 branches of RenPy and how to switch over.
- Under the Hood: .rpyc files - Describes the internals of an
.rpyc
file and their use. - Save Compatibility Through Repeated Releases
- Avoiding Framerate Glitches Caused By Image Prediction
Explanations on the use of a particular feature.
- Character Customization - Using character objects to apply textbox customizations.
- Multiple Dialogue Blocks
- Save Metadata - How to get your save/load screen to display more in-depth information about a save than it normally can.
- Decorators and gui.variant - On the proper usage of
renpy.variant
. - Adjust Attribute Example - How to use
config.adjust_attributes
and whether you need to. - Pausing movies - How to pause movies and music.
- Save on Quit - One of the actually numerous ways to automatically save on quit.
- Layered Image Conversion - Converting to use
LayeredImage
from the obsolete technique of usingComposite
/LiveComposite
.
menu:
statement has a lot more flexibility than you would think.
- Timed Choice Menus - How to make a choice menu that can time out.
- Shuffling choice menus - Shuffling items in the menu.
- Menu Arguments Cookbook - More advanced examples on using menus.
- Very Old Features - Three rarely used features - menu labels, menu sets and gameplay timer.
- Menu blurring - An example of overriding the built-in menu system to blur the image behind the menu buttons.
Details on what you need to do to get your project to run on a particular platform.
- Android Adaptive Icons in Ren’Py
- Notarizing Mac Applications - How to notarize your OSX releases.
- Steam Deck Guide - How to get your project to pass Steam Deck compatibility review.
Interoperability with the rest of the world.
- Requests - Using the bundled requests Python library to, among other things, save data to a Google Sheet. For the record, the bundled version in 8.0.3 is 2.20.0
- News From Your Website - Making HTTP requests from RenPy in examples.
- Adding Google Analytics to Your Visual Novel - See also the updated script in a later Patreon post.
Code examples implementing a particular feature.
- Automatic speech bubbles - A simpler take on speech bubbles than the Speech Bubbles framework.
- Three Creator Defined Statements
- Drop Down Menus - How to make drop-down menus.
- Multi-Key - Reacting to multiple keys pressed simultaneously.
- Marquee - How to make text that scrolls back and forth if it's longer than the area allocated to it.
- MultipleCallback - Example of how to use configuration variables that only permit one callback function to call multiple functions anyway.
- Label log - Example of using
config.label_callback
. - Flashing Messages on the Main Menu - Example of how to draw attention to new menu items by making them flash until investigated.
- Checking for Changes and Displaying A Message - How to automate displaying a message to a player when a variable changes without writing explicit checks.
- Python Tricks #1 - Simplifying long screen action lists, using
__unicode__
to create a string representation of an object for interpolation. - Python Tricks #2 - On using random number generation and queueing images for display.
- Title Screens
- In-Game Wiki-Like Glossary or Codex
- Custom Preferences - Adding more things to the Preferences screen and using them.
- Odometer - An antique style odometer displayable.
Templates to start off a new project containing commonly requested features a stock RenPy new project does not offer.
- All-in-one GUI Template
- renpy-awesome-template - An advanced starter project template.
- renpy-minimal-template - Actually the complete reverse: A minimal working template, which contains none of the default GUI. Also contains the example of using the scarcely documented explicitly loadable modules feature.
- Easy Ren'Py GUI - A template project intended to make it easier to deeply alter the default game UI.
Pieces of code big enough to be called libraries.
- Console - An in-game console for the player to use (i.e. distinct from the built-in developer console). Not well documented at all.
- DynamicSpriteManager - A high-level system for easily defining and compiling the RenPy native LayeredImage. Given a directory of images, it will automatically scan and categorize those images for use in a mix-and-match style sprite declaration language based on filenames. Documentation inline with code.
- Extra Animated Value - Extending
AnimatedValue
for bars. - Renpygame -- An attempt to resurrect the library that simplified porting Pygame code to RenPy.
- Puppitor - A complicated sprite animation library.
- renpy-color-picker - What it says on the tin.
- RADC - A framework to enable a RenPy project to download its own DLC. Documentation in Spanish only.
- RDAA - A fork of RADC with English and Russian documentation and extra features.
- Discord Rich Presence Support for Ren'Py Projects - Interact with Discord Rich Presence.
- Auto Weather Change - Access openweathermap API to acquire weather information from RenPy.
- Renpy Auto Highlight - A library to automatically highlight the currently speaking character.
- RenPy Lipsync Plugin - A plugin that stitches the Rhubarb automated lip sync engine into RenPy.
- Autofocus - A different technology to do the same.
- Speech Bubbles - A unique look presenting novel text as speech bubbles.
- FancyText - Text that can fade in letter-by-letter, and appear in other interesting ways.
- Kinetic Text Tags - Text that shakes, waves, bounces, scatters, etc.
- RPY-VNBE - A set of multiple libraries, including an achievement system and a number of text effects.
- Encyclopaedia Framework - Simplifies creating an encyclopaedia, bestiary, glossary, or similar system.
- renpy-rainbowtext - A rainbow text effect.
- renpy-word-description -- Text tooltips on hover over words.
- Dating Sim Engine - The fundamental code for a Tokimeki Memorial style dating simulation strategy planning game.
- Dating sim toolkit - A different take on same.
- Navigation Quest Time Routine System - A complete system introducing the concepts of location, time and event, producing the framework of a not-quite-point-and-click adventure game.
- Lezinventory - General purpose inventory system.
- Pink Engine - Tiled map framework capable of using Tiled maps.
- RPG Battle Engine - What it says on the tin.
- Sheepstorm Battle Framework - A different battle engine.
- Cardgame Framework - What it says on the tin. Ancient code, but still works well in current RenPy. Not very suitable for modification, due to relying exclusively on deprecated features.
- Candella - "Candella is a fork of the AliceOS framework, a Ren'Py framework that provides an operating environment to visual novels. This operating environment includes utilities, classes, and other code that lets developers and players write and use apps designed for the system." To put it less opaquely, this imitates a full window system with "applications" inside RenPy.
- Ren'Py Chat Log -- Library for displaying scrolling chat logs.
- Messenger Emulator - An advanced library for imitating Telegram Messenger in-game. Requires work to adapt to more modern versions of RenPy.
- phone message system for renpy - Another implementation of a phone, this one works as is.
- RenpyPhoneSMS - And another one.
- Elckarow/Phone - Imitating a phone is a very common task.
- albireo-games/renpy_phone - It is a wheel people keep reinventing.
In a classic Japanese title, these would go into making the contents of an "Extras" menu.
- GalleryPlus - Extends the functionality of RenPy's built-in Gallery class. Allows looping images, pages, navigation buttons.
- renpy-gallery-inject - Self contained gallery screen, and code to allow the screen and functionality to be patched into existing games without changing their code in any way.
- RPY-VNBE - A set of multiple libraries, including an achievement system and a number of text effects.
- Ren'Py Universal Player - An enhanced music room for Ren'Py projects that allows users to play tracks outside the game's story along with sideloaded songs.
- renpy-achievement - A screen to display an XBox-like achievement popup. Does not actually interact with any achievement backend, but the builtin one should serve.
Most useful RenPy code comes in the form of code snippets, examples, and other small pieces, rather than a well-packaged library. As such, many of these links link to Gists, forum posts, and other such locations wherein a given code snippet is presented in context. You can always wade the depths of Lemmasoft RenPy forums yourself for more.
Not all of these are confirmed to work in current versions of RenPy.
- Experiments in Ren'Py Heresy - Several undocumented text effects.
- Three alternate takes on how to give the player a preview of text printed with a certain given CPS: by Oliver, by Lezalith, by Feniks
- Subscript and superscript text tags
- Smallcaps text tag
- Pronouns class - A class to handle character pronouns.
- Window-fixed CTC - how to position a CTC relative to a window, rather than fixed on the screen or relative to the last printed line.
- Two-column NVL mode - How to have your NVL screen display two columns of text, filling one after the other in a semi-automatic fashion.
- X-Ray effect - This turns the mouse pointer into a device to see inside things.
- ChromaGlitch - Glitch effect.
- RenPyGlitch - A different implementation of a glitch effect. Documentation in Russian.
- SWHolo - Star Wars hologram effect.
- Parallax layer - Layer parallax based on mouse position.
- Rain effect - not particle, but rather texture based.
- Simple rain effect - describes a simpler, but less convincing technique to make rain.
- How to do a cloud animation with RenPy - A primer on animated backgrounds.
- Noir-Style Shadow/Lighting Effects - fun with AlphaMask.
- Gradient() - A Gradient() equivalent of Solid() that generates gradients in place using shaders.
- RenPyParticles - Custom particle motion classes. Documentation in Russian.
- Dust - a particle effect. Documentation in Russian.
- Projection starfield - Particle-based starfield.
- Ren-Py-Free-to-Use-Falling-Leaves - Particle-based falling leaves, complete with assets.
- Ren-Py-Free-to-Use-Moving-Clouds - Particle-based moving clouds, complete with assets.
- Static chessboard displayable - What it says on the tin. Can be used to produce a full AI-run chess game.
- Analog clock - A clock displayable.
- Simpo clock - Another clock
- Radar chart - Displayable for plotting data onto a radar chart.
- Scrollbutton - A button to scroll a viewport.
- Continue button - Multiple methods to create a 'Continue' main menu button that would load the most recent save game.
- One-screen visual novel - that is, how to disable the entire game menu and jump straight into the body of the novel.
- Main Menu with a Video Background - This gets asked on average once a week.
- Button "PRESSED" state - How to detect that an on-screen button is being held down, rather than just clicked.
- Conditional main menu background - An extensive tutorial on how to change a main menu background based on game state.
These are useful, but difficult to categorize.
- Free-hand draw - Draw on a canvas inside a Ren'Py game.
- MyShow - An example of overriding the built-in
show
statement to potentially add functionality, does so by directly editing the script in memory after loading. - screen_choice - How to apply transitions to the current scene behind a Ren'Py choice menu.
- afk.rpy - How to detect that a player didn't attend the game for a certain period.
- Differential image loader - Given two different sprites of the same character in the same pose, produce image files which use one of them as a base, store only the pixels that are different from that base for all others, and automatically make a
layeredimage
out of them. - Affection points An example of implementing the basic notion of affection points.
- A timer that would work and after leaving the project - Example code to account for time that passed while the game wasn't running.
- Buns with sound in renpy - Answers to multiple questions on how to do something with sound in RenPy.
- Scroll any background - by adding a mirrored copy to the side and repeating.
- How to add Google Ads(Admob) to Renpy - What it says on the tin. (YouTube video)
- Yandex Mobile ads in RenPy - What it says on the tin, but in Russian.
- Expanding Mobile Functionality With Pyobjus/Pyjnius - Invoking Android API when on Android.
- BPM in Ren'Py - Timing animations to your musics tempo - Describes the techniques to manually time an animation to music tempo.
- Making a Separate Content Patch - How to make an optional content patch.
- Ren'Py Lovense Boilerplate - Code examples for controlling Lovense vibrating devices from RenPy.
- Import Json Data Easier - A class decorator you can use to easily populate data storing objects from a JSON file.
- RenPy Extension Demo - Examples of using the scarcely documented engine extension mechanism.
Self-contained minigames can occasionally be found. Some assembly is usually required.
- Simon Says
- Rhythm game - Dance Dance Revolution style, well documented.
- RhythmBeats - A different take on rhythm game framework, documentation in Spanish.
- Rock Paper Scissors - A RPS game meant as a tutorial how to program one.
- renpy-go - Go in RenPy.
- Space Invaders
- Renpy-lockpick-minigame
- RenPyDraw - In-game graphics editing.
- Renpy_Shooter - A shooting minigame.
- 47 minigames - A forum post collecting links to minigame implementations on Lemmasoft forums, 47 as of last count. How many still work as written remains unknown.
Shaders are the most arcane part of RenPy, because they require branching into GLSL, while accounting for RenPy intricacies. Some of the effects achieved thereby are very useful, however.
- RenPy Shader Collection - waves, color picker.
- Wave shader - A better documented wave shader.
- Renpy-GLSL-Test - Experimental setup, contains a packaged "whirl" transition that originates from one of PyTom's patreon posts.
- renpy-blend-modes - Shader-based Photoshop-style blend modes for images. Only soft light is implemented.
- RGB Split - Chromatic aberration shader.
- Outline shader - Adds outlines to arbitrary objects.
- Round corners shader - Very neat, but why does it only work on
Solid()
for me, I have no idea. - Shader - Several animated image-generating shaders ported from Shadertoy.
- Circle crop - A shader way to make a square image circular.
- Drunk blur - Double vision "drunk" blur.
- Replacement blur - An alternative implementation of blur that overrides the stock blur.
Occasionally, entire games are published as open source, though not necessarily free. Whenever they contain anything useful as example code, they go in this section.
- Cute demon crashers - interesting examples of functional programming, well commented, even if dated.
- Learn to Code RPG - a complete RenPy title, showcasing some of the more obscure features, with full source and assets.
- Decompiled Doki Doki Literature Club - while this is presented only for the purposes of producing mods, this showcases the state of the art of RenPy programming from 6.99 era, and is of historical and educational interest.
- DW Klondike Solitaire - A complete Solitaire in RenPy, good as an example of using the Card Game Framework.
- Mysterious Messenger - An entire game built around a custom messenger imitation.
- carpe-diem - Complete source for Carpe Diem
- Without Romance - A SuNoFES 2020 project.
- KatawaShoujo-RenPy8 - A port of the classic Katawa Shoujo visual novel to run on modern versions of RenPy.
- MonikA.I - AI-based features for a mod for Doki Doki Literature Club, this is an advanced example of integrating RenPy with a chatbot.
- 1080p wipes - A collection of 1080p-sized ImageDissolve transition images, neither quite code nor quite an image by itself.
These are meant to be built into the project at least during development, and thus are a cross between libraries and standalone tools.
- Ren'Edit - A beta-tester support tool to easily acquire corrections and comments.
- ActionEditor - A powerful director tool for manipulating camera, viewing the results and generating code to produce the interactively-defined effects.
- MouseFinderTool - A set of developer tools to pinpoint mouse position of things. Documentation in Spanish only.
- RVRE - The editor provides a means to proofread your visual novel while running it and without leaving.
- Caption Tool - A tool to add image and sound captions for accessibility purposes.
- renpy-TranslationTools - Tools to aid in managing translations in certain corner cases. Also the rare example of embedding RenPy-script in Python, rather than the reverse as is usual.
- RenPy automatic translations - A tool to automate machine translation of your project.
- Demotools - An extension that can be used to produce automated demos, screencasts, and otherwise pretend there's a player at the keyboard.
- Expreviewer - A preview tool for layeredimage sprites.
- Image Tint Tool - An image tint preview tool.
These are software unto themselves.
- Ren'Py Language for Visual Studio Code - Currently the way to edit RenPy code.
- renpy-graphviz - Draws a flowchart of a RenPy project based on jumps, calls and labels. Has an online version.
- renpydeskgen - Shell script to generate Linux
*.desktop
files for RenPy games. - vnproofer - Project proofreading and spellchecking tool that works by passing scripts through cspell.
- renxel - Transmute RenPy translation files to Excel tables and back.
- Ren'Py VSCode Project Template - a configuration for Visual Studio Code to enable running, linting and building from the IDE.
- Visual glBlendFunc + glBlendEquation Tool - Not RenPy specific, this will be very helpful if you want to figure out
blend
transform property to get a particular visual effect. - Node based script editor - Kind of like Twine's dialogue tree view, but for RenPy.
- renpyfmt - A formatter for RenPy code. Work in progress, but looks promising.
- RenPy Maker - One more attempt to produce a visual script editor.
- Ren'py => Python Generator - An utility to convert pure Python files to Python-In-RenPy syntax, allowing for easier editing.
- Renpy Parser - Parses a lightweight text file markup format into RenPy script.
- renpyDialogToAudio - Automatically generates voice for your project based on text originals using elevenlabs TTS.
- renpy-counter -- Estimates the play-length for your project based on average reading speed. Requires node.js.
- renkit - A toolkit for managing Ren'Py instances via the command line, intended for build automation and continuous integration.
- renpy-lint-action - This GitHub action allows you to run the linter on a Ren'Py visual novel project in a workflow for testing purposes.
- renpy-build-action - This GitHub action allows you to make distributable builds of a Ren'Py visual novel project in a workflow and use the built files for distribution.
- renpy2flatpak - A tool to automate packaging a Linux release of your project into Flatpak format for distribution.
- unrpyc - The
*.rpyc
file decompiler. - unrpa - The most famous RPA archive extractor.
- RPA Explorer - Graphical explorer for RenPy Archives built around a C# library to manipulate them. Can also invoke
unrpyc
on the contents. - rpatool - The less famous RPA archive extractor.
- warpa - RPA archive manipulation tool written in Rust.
- arpy - Golang implementation of an RPA unpacker.
- RenPy-UnAPK - A tool to unpack and decompile an Android build's APK file. Sparsely documented, but there's not much to document.
- Twine to Ren'Py tool - A tool to port a Twine project to RenPy. Cross-platform, requires Python 2.7 on platforms other than Windows.
- articy2renpy - A converter for articy:draft JSON exports to Ren'Py *.rpy script files.
- articy3_renpy3 - Another variation on articy to RenPy converter.
- FDtoRenpy - Convert a FinalDraft script to RenPy.
These tools are made for end-users, rather than developers.
- Translator3000 - Runs RenPy games through automated translation. Trial version.
- rpycg - Injects RenPy code into published games to enable developer mode and manually poke at the internals. Windows only.
- renpy2linux - A script to convert Ren'Py releases to Windows, OSX and Linux-compatible ones, when the only thing you have is one of the three. Requires Linux or OSX to work.
No visual novel is complete without artwork and sound. Beware and carefully observe the license terms!
- Itch.io - Visual novel specific assets available on Itch.io, both free and paid.
- DLSite - A large variety of game assets for visual novels from Japanese artists, all of them paid.
- Pixabay - a variety of Creative Commons images, videos, music and sound effects.
- Free Music Archive - Royalty-free and CC music.
- OpenGameArt - assets for a variety of game types, many useful for visual novels.
- FreeSound - major source of free sounds of every description.
- SoundBible - A collection of sound effects.
- Soundimage - Specially aimed at game developers.
- GameSounds - Large library of sounds aimed for games.
- FreePD - Music
- Altphotos - CC0 stock photos ready to be mutated into artwork.
- Filmmusic
- Free Stock Music
- Shadertoy - Lots of publicly available GLSL shader code. Adapting it to RenPy remains on you, however.
- The Spriters Resource - A massive library of sprites, including visual novel sprites, ripped from published titles. While not legal to use per se, invaluable when making a fan-game.
- FontSquirrel - Free TTF/OTF fonts.
- FontStruct - a large library of decorative and special-purpose fonts, many of them permissively licensed. Also a web service to build fonts from scratch.
- OpenFontLibrary
While you can search through places like DeviantArt, Soundcloud and Bandcamp for artists offering their work under one or another variant of Creative Commons, there are certain prolfic ones, and knowing them in advance will make things easier.
- Incompetech - Kevin MacLeod's music. Everyone has heard it.
- caryoscelus
- PeriTune
- Alexander Zhelanov
- Savfk
- Silverman Sound Studios
- MaxKoMusic
- Audionautix
- ChipTone - online generator.
- FxTone - online generator.
- LabChirp
- SteosVoice - High quality AI-based speech synthesis useful for generating voice for visual novels.
- ElevenLabs - Online sound effect generator.
- Sutemo's Character Creator - online only.
- Mannequin - free and paid versions, multiplatform.
- Manga Maker ComiPo - has been used to produce sprites for at least one novel available on Steam. Windows only.
- VRoid Studio - Avatar generator meant for VTubers, can in a pinch be used to manufacture sprite images. Crossplatform, free as in beer. For posing them, you might want to use VRM Posing Desktop, which is Windows-only and not free.
- Charat Rouge / Charat Blanc - online character sprite generator, limited to portraits, license prohibits commercial use of the result.
- Stella Character Generator - paid, Windows only.
- Open Peeps - CC0 library of parts suitable for producing character art. Substantial assembly required.
- TextureLab - Procedural texture generator.
- Procgen Arcana - A collection of generators intended primarily for tabletop roleplaying which produce useful maps.
- Celestia - Produce correct images of the sky in space at a given time. Open source and cross platform.
- Space Engine - A more powerful commercial competitor to Celestia.
- Stellarium - For when you don't want to go to space.
Most of these are only useful to produce background images, as getting the detail and specificity required of anything else out of them is impractical. But free backgrounds are free backgrounds.
- ArtBreeder
- DreamStudio
- WaifuLabs - limited usefulness, good for inspiration.
- craiyon
- NeuralBlender
- SumoPaint - An online paint program that integrates a Stable Diffusion-based image generator.
- Krita - The best open source paint program.
- Generate Ren'Py Scripting - A plugin for Krita, outputs a block of Ren'Py script to display the images of the active Krita document as they appear on the canvas, working in tandem with the krita-batch-exporter.
- GIMP - The more arcane and ancient, but likewise powerful open source paint program.
- Synfig Studio - Free animation software.
- Inkscape - best open source vector image editor.
- Boxy SVG - free as in beer online-also vector image editor, cloud services require payment.
- IMGOnline.com.ua - a collection of online texture processing tools.
- Waifu2X - AI-based image upscaler.
- FotoSketcher - A better way of making photos look like paintings. Windows-only, runs under Wine.
- VanceAI - A number of online image processing tools that includes interesting photo-to-sketch implementations.
- Calligraphr - A web service that generates a TTF from supplied images, meant primarily to produce handwritten fonts.
- Homestyler - Online interior design tool, useful to produce an image of an interior that you will later torture with an AI painting tool.
- Audacity - Open source audio editor.
- Ocenaudio - Less powerful, but more convenient, free (as in beer) audio editor.
- Ardour - A complete free Digital Audio Workstation.
- LMMS - A loop-based Digital Audio Workstation.
- FFMpeg - the Swiss army knife of video and audio format conversion and filtering. If you need a GUI for it, there's QWinFF, Axiom, Videomass, to name but a few.
Things that are awesome but not really very useful go here.
- RenAI-Chat - A RenPy-based chatbot interface.
You can find a community of RenPy users in your language, provided it's one of:
Other amazingly awesome lists can be found in awesome, awesome-awesome and awesome-awesomeness.
Those should be of particular interest for RenPy users: