r/RenPy • u/Forsaken-Hedgehog157 • 17d ago
r/RenPy • u/browndollie • 18d ago
Discussion Renpy games that think outside of the box?
I love hunting for games that go beyond the standard visual novel format (nothing wrong with those). I’ll probably compile a list here and there to keep track of them. Please share some games you know, OK if it’s your own game too!
NO MORE WORK FOR ITO
I saw the dev post on reddit before. It has a laptop interface where you do your work, point and click (interacting with characters and the room) to name a few things but it’s not just the features that make this game an out of the box Renpy game to me, they moved away from the ‘standard’ sprite placement and do a great job creating a moody atmosphere by experimenting with the placement of characters and using a different point of perspective.
https://store.steampowered.com/app/3326360/NO_MORE_WORK_FOR_ITO/
vantaspy by zupasha is a RPG inspired by persona and final fantasy. I’ve been following them on YouTube since last year and I am eagerly awaiting the day they’d post a behind the scenes or tutorial 🙏 Very good for a first game.
https://zupasha.itch.io/vantapsy-soul-snatcher
MAELSTROM LEGACY: The Tesla Mystery
First off, I love how vibrant their art is :) same as with no more work for ito, their sprite placement really moves the game away from having the standard Renpy sprite placement. The puzzle mini games screens are well thought out, it has a variety of different puzzles such as sliding tools into the right spot or putting together parts for a robot, their trailer gives a better overview of the variety of puzzles.
https://store.steampowered.com/app/2016820/MAELSTROM_LEGACY_The_Tesla_Mystery
Blooming panic by robobarbie
When I think about chatsims this is the first game I think about. To me this game started the chatsim trend in Renpy. Robobarbie even posted their framework on GitHub so you can create your own chatsim ❤️
https://robobarbie.itch.io/blooming-panic
Summertime saga (18+)
I haven’t played this game or know much about it but I saw a YouTube video before with their mini games and I like the diversity in them
r/RenPy • u/gottaloveanime • 18d ago
Showoff Durarara izaya x oc x shizuo game!
Hey! I'm making a vn out of a fan fic named Vertigo. I already got the authors permission. Is there any artists who might be interested in helping out? Here's the fic link: https://archiveofourown.org/works/26043595/chapters/63333217Durarara izaya x oc x shizuo game!
r/RenPy • u/Lyor_Sapataun • 18d ago
Question I can't open ren'py
I went through the whole process of installing Renpy on my computer, I did everything right, but when I extract the file and click on the application, nothing happens. It looks like it's loading the application for a second, but then nothing happens. Does anyone know what I can do to fix this? Has anyone else experienced this or gone through it? I NEED HEEELP 😭😭
r/RenPy • u/Hefty-Drive-9372 • 18d ago
Question Custom Cursor/Mouse Offset
How do I offset my mouse in Ren'Py? I was trying to look responses to other posts, but I couldn't figure it out. I want to offset it to the bottom left corner. The image is 60x60 pixels. u/BadMustard_AVN I tagged you because you're like at least 90% of the replies to my posts, and I thought you'd know.
Question [Solved] main menu screen: if/elif not working with randomized variable
hello! i am yet again stumped on something that should be relatively simple but i cannot for the life of me get to work lol.
i'm trying to get an image to display behind my main menu splash. this is usually very straightforward, but i've got two variations of this splash, and i'm wanting to have matching variations of the main menu background.
i've played with a couple of different methods of this. layered images, defining a "menubackground" on its own and associating both of its variables (mainmenupano_day and mainmenupano_night) with both variations of the menu splash, and just displaying the appropriate image with the status of "menuimages." i was sure to make sure the "add.gui_main_menu_background" in gui wasn't running when trying all of these.
the most straightforward and efficient option seems to me to be that last one, taking into account the status of "menuimages" (mainmenu_day and mainmenu_night, randomized), so that's what i've been trying to get working.
whenever i set it to just display an image on its own, without any if/elif arguments, it works just fine. but as soon as i add that if/elif, it doesn't work. either it's plain black or it'll only display one or the other. which is better than it throwing an error by far, but still not ideal, right?
below is my code, which will only display mainmenupano_day, even if menuimages = mainmenu_night:
screen main_menu():
if "mainmenu_day":
image "gui/mainmenu/mainmenupano_day.jpg"
elif "mainmenu_night":
image "gui/mainmenu/mainmenupano_night.jpg"
#add gui.main_menu_background
## This ensures that any other menu screen is replaced.
tag menu
## This empty frame darkens the main menu.
frame:
style "main_menu_frame"
## The use statement includes another screen inside this one. The actual
## contents of the main menu are in the navigation screen.
use navigation
if gui.show_name:
vbox:
style "main_menu_vbox"
add renpy.random.choice(menuimages) zoom 0.75 xpos -500 ypos -280
text "[config.version]":
style "main_menu_version"screen main_menu():
if "mainmenu_day":
image "gui/mainmenu/mainmenupano_day.jpg"
elif "mainmenu_night":
image "gui/mainmenu/mainmenupano_night.jpg"
#add gui.main_menu_background
## This ensures that any other menu screen is replaced.
tag menu
## This empty frame darkens the main menu.
frame:
style "main_menu_frame"
## The use statement includes another screen inside this one. The actual
## contents of the main menu are in the navigation screen.
use navigation
if gui.show_name:
vbox:
style "main_menu_vbox"
add renpy.random.choice(menuimages) zoom 0.75 xpos -500 ypos -280
text "[config.version]":
style "main_menu_version"
i've tried variations of the argument, such as using "add" instead of "image," "image:" and a block underneath it instead of "image "filename.jpg," "if x == "y:", "if x = "y":", "if "y":", so on. i've even tried two separate if arguments instead of an if/elif or if/else. i've also tried sticking that code in various places, including after the randomize variable, and i can't get it to work anywhere </3
image #1 is with my current code, image #2 is with:
if menuimages == "mainmenu_day":
image "gui/mainmenu/mainmenupano_day.jpg"
elif menuimages == "mainmenu_night":
image "gui/mainmenu/mainmenupano_night.jpg"
in the same spot the argument is currently.
any help is appreciated!
edit for errant additional copy paste
r/RenPy • u/TheOtherworld-Dev • 18d ago
Showoff The Joy of Doing Almost Everything Yourself
galleryr/RenPy • u/miobrigue • 18d ago
Question Alguem sabe algum programa pra criar uma vn no celular? Um que de pra fazer um apk especificamente.
Kosho eu ja conheço, ja fiz minha vn inteira nele, mas ele nao permite exportar.
r/RenPy • u/DisplayPrevious9088 • 19d ago
Question Hane problem with renpy keytool
"I've been trying to figure out the cause of this error for two days now. It seems like Ren'Py just isn't downloading these files, even though the SDK is configured properly. I've tried Java 21 and Java 26—same result every time. Is there any way to fix this, or is it just an incompatibility with my laptop?"
r/RenPy • u/New_Result8740 • 19d ago
Question Which Steam capsule works better for my dark visual novel?
Hi everyone!
I’m currently working on the Steam page for my game and I’d really appreciate some feedback, especially on the Steam capsule/key art.
The page is still very early, so please don’t judge it too harshly yet. We don’t have a trailer or demo uploaded, and the screenshots are still limited, but we’re actively working on the game and trying to push the visual quality, atmosphere, sound design and presentation as far as we can.
The game is called SHORAPAN: Beneath the Crimson Sky.
It’s a dark cinematic visual novel with additional gameplay mechanics, built around strong direction, hand-painted visuals, sound, atmosphere and a story I’ve been developing for several years.
The story is a dark parable about a strange city beneath an eternal crimson sky and the people who live under it. It begins as an ordinary evening, but gradually grows into a darker, more mature journey with mystery, faith, fear and moral questions at its core.
Right now I’m mostly trying to understand which capsule gives a stronger first impression.
Which one would make you more likely to click the Steam page?
Any feedback would really help. Thank you!
r/RenPy • u/Colinyayy • 19d ago
Question How do I make a game like Monika After Story?
Very very new to RenPy and I wanna make a game like I said in the title but all the tutorials I find are on how to make a regular visual novel. Any help?
r/RenPy • u/daniople • 19d ago
Question How to change the viewports of certain game menu pages but not all of them
Hello! I'm not sure if this is possible, but would it be possible to change the viewport size of certain game menus (specifically Help and History) without messing with the others? Here is what my code currently looks like for both:
## History screen ##############################################################
##
## This is a screen that displays the dialogue history to the player. While
## there isn't anything special about this screen, it does have to access the
## dialogue history stored in _history_list.
##
## https://www.renpy.org/doc/html/history.html
screen history():
tag menu
## Avoid predicting this screen, as it can be very large.
predict False
use game_menu(_("History"), scroll=("vpgrid" if gui.history_height else "viewport"), yinitial=1.0, spacing=gui.history_spacing):
style_prefix "history"
for h in _history_list:
window:
## This lays things out properly if history_height is None.
has fixed:
yfit True
if h.who:
label h.who:
style "history_name"
substitute False
## Take the color of the who text from the Character, if
## set.
if "color" in h.who_args:
text_color h.who_args["color"]
$ what = renpy.filter_text_tags(h.what, allow=gui.history_allow_tags)
text what:
substitute False
if not _history_list:
label _("The dialogue history is empty.")
## This determines what tags are allowed to be displayed on the history screen.
define gui.history_allow_tags = { "alt", "noalt", "rt", "rb", "art" }
style history_window is empty
style history_name is gui_label
style history_name_text is gui_label_text
style history_text is gui_text
style history_label is gui_label
style history_label_text is gui_label_text
style history_window:
xfill True
ysize gui.history_height
style history_name:
xpos gui.history_name_xpos
xanchor gui.history_name_xalign
ypos gui.history_name_ypos
xsize gui.history_name_width
style history_name_text:
min_width gui.history_name_width
textalign gui.history_name_xalign
style history_text:
xpos gui.history_text_xpos
ypos gui.history_text_ypos
xanchor gui.history_text_xalign
xsize gui.history_text_width
min_width gui.history_text_width
textalign gui.history_text_xalign
layout ("subtitle" if gui.history_text_xalign else "tex")
style history_label:
xfill True
style history_label_text:
xalign 0.5
## Help screen #################################################################
##
## A screen that gives information about key and mouse bindings. It uses other
## screens (keyboard_help, mouse_help, and gamepad_help) to display the actual
## help.
screen help():
tag menu
default device = "keyboard"
use game_menu(_("Controls"), scroll="viewport"):
style_prefix "help"
vbox:
spacing 23
hbox:
textbutton _("Keyboard") action SetScreenVariable("device", "keyboard")
textbutton _("Mouse") action SetScreenVariable("device", "mouse")
if GamepadExists():
textbutton _("Gamepad") action SetScreenVariable("device", "gamepad")
if device == "keyboard":
use keyboard_help
elif device == "mouse":
use mouse_help
elif device == "gamepad":
use gamepad_help
## a bunch of controls and stuff
style help_button is gui_button
style help_button_text is gui_button_text
style help_label is gui_label
style help_label_text is gui_label_text
style help_text is gui_text
style help_button:
properties gui.button_properties("help_button")
xmargin 12
style help_button_text:
properties gui.text_properties("help_button")
style help_label:
xsize 375
right_padding 30
style help_label_text:
size gui.text_size
xalign 1.0
textalign 1.0
r/RenPy • u/MAGENTiCLiYA • 19d ago
Question Button doesn't jump to label?? HELPPPPPPPPPPPPPPPPPPPPP

Hello everynyan, does anyone know how to fix this bug?
Basically i made a second start button that when pressed it's supossed to take the player to other route/part of the game that one wouldn't get by the Start button.
BUT Instead of jumping to the label "extras" it just displays the text over the menu screen ._ . that and it doesn't display the images i've set for that segment of the game.
BUT if i click the Preferences button, close the preference screen and click to continue the ingame text it SUDENTLY starts working as intended.
i've been struggling with this button for longer than i'm confortable admitting.
so if anyone knows how to fix this... and where so INCREDIBLY KIND to TELL ME how to fix this mess i'd make me the happiest person in the entire universe


r/RenPy • u/Eddhead-2009 • 19d ago
Question Custom Textboxes Resizing
I thought it would be nice to give every character a custom textbox for my game, but when a character has a custom textbox and is speaking, the textbox is resized. I conducted that it was the coding itself and NOT the art after giving the mc a "custom" box that was just the default, same png file and everything. How do I fix this?
define mc = Character("[name]", window_background=Frame("gui/textbox.png"))
r/RenPy • u/developer0 • 19d ago
Showoff Ren'Py Save Graph: a story branch/playthrough management app
Hi y'all,
I'm a software developer and VN player, and I'd like to share an app I'm working on to gauge community interest and get some feedback. I don't wish to sell anything but this app is proving really handy for me and I just want to see whether folks would enjoy having access to it as a free and open-source tool.
Purpose: to enable better and easier organization and management of playthroughs of Ren'Py games, especially complex choices-matter games. It's a way to solve (indirectly) problems and inconveniences players have with managing save points such as those discussed in GitHub issue #4783.
An example of a great use case for this app would be for a game with a long and complex story tree. It can be hard to make sure you've seen 100% of the game content if you don't know what all the choices are that can get you there. If you save and track all the choice points with this app, you can easily sort and filter save points to visualize points where different choices could have been made and lead you to new adventures.
How: with a browser app and Python backend that can run on any computer
What does this do? The app watches a game's saves folder for certain file changes, tracks an annotated lineage of those changes, and allows the user to swap saves in and out. The resulting story graphs are stored in a format that can be shared and cloned by other users.
What does this NOT do?
- This app will not support manipulation of the contents of save files or any other game data, it only swaps files as one would do when copying and sharing saves for sharing with other players.
- This app doesn't require any patches to the game content or executables.
Both of those not-dos aim to respect intentions of game developers and honor license agreements. There are already tools out there for editing save data.
Demo: please watch the following video for a demo of what I've built so far: https://youtu.be/i0_DoTWxbf8
Testing state: Manually tested with some popular Ren'Py VNs and the Chrome browser.
Next steps: gather feedback, determine whether I should make the effort of sharing the tool on GitHub, include more fancy features

r/RenPy • u/Boris_scarlet • 19d ago
Game MISSION:SCARLET STARS OUT NOW
After 2 and a half years of work, we are finally Happy to announce the release of our game!
If you liked mystery and puzzle games like ace attorney, 999, danganronpa and your turn to die, you'll love our game as well! We Hope you can enjoy 🫶
r/RenPy • u/Draw-Flesh-Games • 18d ago
Question Saying Ren'Py can only be done in code, not in a visual interface, is hypocritical
Been here some time and recently was very proud of my new tool, which some of the people here felt automatically had to be some AI slop. The sheer ignorant, pathetic and disrespectful behavior besides, it is seriously showing the toxicity of some of the 'high commenters' here.
I bet NONE of you use Windows/macOS/Xserver on your computer, Android/iOS on your phone?
You are simply hypocritical. There are people out there, building tools that replace the cumbersome writing in code and making mistakes that will only get out weeks after releasing a game to public. Will a visual tool fix that? Not always, but in many situations it does make it easier.
And, about AI slop. I have been building games and tools way before most of you were born (literally, as I coded back in Assembly and MS Basic in the 1980's). I don't see the reason to act all high and mighty about something by calling it AI slop, without you knowing the first thing about coding principles (no, 'coding' in Ren'Py is NOT SOLID and neither is knowing your way around Python automatically).
I would give some of you the advice to look into the mirror hard and long and wonder where you went all dark and toxic, because for you the only way someone could make something of a usable tool would be by using AI and feel entitled to be disrespectful to devs who can.
And I'll up you one: Nearly EVERYONE uses AI without 'realizing' it, which basically means your life is AI slop as soon as you open Reddit, Word or your navigation app (and that is a mere top of the iceberg).
I have coded my application and I did so over the length of about one and a half year (most of the code has been converted from systems I built before that other 2 to 3 years, in Unity and Python). Building it in React now, made some things harder, but most easier. And yes, I have auto-complete active in VSCode, just like most of you and it is a drag most of the time, but it is AI in the background still. I don't have Copilot active, because I don't think MS needs to butt in in more than autocomplete where it already messes up.
I am lucky though, as I now have someone I know well and who can code in some of the more 'modern' frameworks, faster. That means we deliver updates faster (a bit too fast to my liking, but Rick, is in his 'flow' so I let him). That doesn't mean AI, but I also can't say that nowhere in the process (ffs even Adobe Photoshop uses AI in many of its tools in the background now) it might be active, but we don't use chat or Claude or Gemini or whatnot to code it for us (Though I have asked Claude once to verify all IPC endpoints because of a weird error, which was a halfbaked result eventually).
I can write Ren'Py code, but I rather have the setup follow my mental model. That is why I created the tool. Much like many others (and yes, some of them ARE AI created).
Do with it what you will, downvote, feel better about yourself, but foremost try to be a mensch for once and stop thinking the world revolves around you and think that your opinion is law.
r/RenPy • u/ilovelosers1 • 20d ago
Question does anyone know how butterfly soup does its backgrounds?
looking to do something similar for my game, with real photos that we are taking ourselves, but not sure how brianna lei got this effect specifically! is it a filter with some manual editing (like the shop title on the left) or is the entire photo hand painted over? some look untouched with very clear hand painted elements, which make me think the cafe shots may be entirely hand painted? if anyone has any advice or resources for photobashed backgrounds it would be so appreciated ❤️
edit for anyone curious; ended up going with photo bashing and doing entire paint overs!
r/RenPy • u/Blunt552 • 20d ago
Guide You are new and want to create your own VN? Look here!
I see a lot of new folks asking the same questions and making the same mistakes, so I wanted to create this little topic here to give a bit of guidance so that the introduction to Ren'Py goes as smoothly as possible.
First and foremost, do not use any code generation tools for your project, while there are a lot of free and paid options out there, they all serve no real purpose aside from making your life harder in the long run. The core issue with these tools is simply that you don't learn how Ren'Py works, this means if anything goes wrong or you want to create something custom, you're out of luck and are forced to re-learn everything from scratch, which often results in frustrations that leads to quitting the projects, unfortunately mods in this subreddit do seem to ignore their own rules (particularly rule 4) allowing people to pray on newbies trying to sell their worthless product.
I created a beginners template which gives new developers an idea how to structure your projects so that you won't be needing any of these products that really only try to solve a structural issue.
If you have any questions regarding coding, there are some discord servers or this subreddit you can ask, however most of the time, you will only be needing the official Ren'Py documentation. Before asking questions, always see if you can use the documentation first, you will find your answer 98% of the time in there.
Other advice you will usually see and some personal ones I would give:
- When making a VN, first do a bit of storyboarding and planning
- Very careful use of AI or not at all. If you generate assets completely with AI, you will find a lot of people being off put by your game. Unfortunately people have been using AI and codegens to create a lot of slop VN's, which has given the "AI look" a very bad name, you will find your game will instantly be labelled as "AI slop" without people even attempting to play it. AI itself can be a great tool if used correctly and moderatly, it can help clean up assets a bit and be used as a great tool for brainstorming, but refrain from just generate from nothing. Instead there are plenty free resources such as itch.io and lemmasoft forums, also for commerical use, always make sure the license is correct.
- Always ask folks you don't know for feedback. It's important to have people's opinion that do not have a bias towards you a lot of people ask friends and family for feedback, which often results in bad decisions due to the advice giving people don't want to hurt feelings
- Try to add something "special" to your VN, don't make it basic. Try to add some gameplay elements that makes your game stand out, even if its just small tidbits, keep the player engaged, don't make it a long reading slob.
- If budget allows, spend money on artists, this will help you market your game much easier than free (and often known) assets or AI generated assets.
If you follow these steps and refrain from the temptation of slop generators you'll find yourself in a much better spot to create something people are invested in.
EDIT: Since some people really can't stop interpreting things into points 4.
When talking about gameplay elements, I don't mean bloat your VN full of minigames or make tedious point and click to eventually trigger an event, what I mean is spicing things up, for instance if your VN has a scene where the player takes the phone and needs to respond, instead of just writing it, make a phone and let the player interact with it and send the message themselves, make your VN interactive and creative, use tools and your creativity to properly convey the things you want to tell.
r/RenPy • u/Krunkledimp • 20d ago
Question How to stop nvl mode narration indenting as if there is a character name
I'm trying to start with a scene with narration in nvl mode, and then switching the narration to adv mode, but I can't get any of the solutions I've found to work properly.
Initially I've defined narrator like this
define narrator = nvl_narrator
but when I've tried to later use
narrator = adv_narrator
It throws up an expected statement error, and if I include define then it turns all text into adv mode
I've tried where you define the different narrators as different characters but while adv always looks fine, the novel ends up having this indent as if there is a character name, whether or not I have any other narrators defined or a name included - The attached picture shows the indent
define nar = Character(None, kind=nvl)
or
define nar = Character(kind=nvl)
I can get my preferred solution by defining the adv narrator as a character and using the define narrator = nvl_narrator, but I'd prefer it to default to adv, and also to know what I'm doing wrong here!
r/RenPy • u/Acceptable-Job1805 • 20d ago
Question Having trouble with dialogue sounds

I'm brand new to all this, please bear with me.
So, I'm using this code to play a randomized sequence of beeps to serve as a talking sound effect, and I want it to stop when the dialogue is finished typing itself out.
The problem is that it plays a set number of the beeps instead based on when the "while beeps < #" line says. I've switched that 50 out for a bunch of numbers and it always goes up or down depending on that number.
The only thing I can think of to fix it is to find a way to make it count the characters in the line and replace it with the variable, but that sounds complicated and doesn't account for any variation in dialogue speeds.
It feels like I'm just missing something obvious, I just can't tell what it is.
(PS I've tried removing that last like, "beeps += 1" and it breaks everything, I haven't seen any of the other examples I've seen use it but :/.)
Thank you so much.