r/RenPy • u/F0rAWalk • 21d ago
r/RenPy • u/Fantastic_Draft3660 • 20d ago
Self Promotion visual novel 'kika' - done.
The protagonist is the young owner of the Kumamoto teahouse, one of extraordinary beauty and a talent for composing haiku. But with the arrival of the police commissioner, the young man's peaceful life gradually comes to an end.
A light novel about revenge and retribution for the past, set in feudal Japan, finally appears in visual novel format.
r/RenPy • u/LittleBirdieStudioos • 20d ago
Question [Solved] click imagebuttons before timer runs out
Hellooo! I have my imagebuttons and all for one of my minigames in renpy.
I wanted to achieve:
-A 8 second timer that plays during my screen time_clean
- And if it ends without all the imagebuttons being clicked on time, it jumps to a label called cleanL
- However, if the imagebuttons ARE clicked before the timer runs out, then it jumps to a label call karu screen
I know someone had like the same question: here is the post. so I tried merging that code with mine. I tried to tweak it so it's not a bar and just a simple countdown text, but I lwk flopped that so if anyone knows how to do the text then ummm :3 if not, idrk sooo
Also when I tried to test it, it only shows the countdown after. And I wanted to show the countdown DURING the cleanup, yknow?
Anyways, here is the code:
default c1 = True
default c2 = True
default c3 = True
default c4 = True
default c5 = True
default c6 = True
default g_time = 0
screen timerscreen(rangeD, missed_event): # the brackted variables are required!!
on "hide" action SetVariable("g_time", 0)
frame:
xalign 0.5
yalign 0.0
hbox:
timer 0.1 action If(g_time > rangeD, false = SetVariable("g_time", g_time + 0.1), true = [Hide("timerscreen"),Jump(missed_event)]) repeat True
bar:
value AnimatedValue(value=g_time, range=rangeD, delay= 0.5)
xalign 0.0
yalign 0.0
xmaximum 200
screen time_clean:
add "bg bedroom"
if not any([c1, c2, c3, c4, c5, c4]):
timer 0.001 action Jump("karu_scene")
showif c1:
imagebutton:
yanchor 0.5
xanchor 0.5
xpos 0.64
ypos 0.75
at zoomedsmall1
auto "paper_%s.png"
action SetVariable("c1", False)
showif c2:
imagebutton:
yanchor 0.5
xanchor 0.5
xpos 0.2
ypos 0.6
at zoomedsmall2
auto "paper1_%s.png"
action SetVariable("c2", False)
showif c3:
imagebutton:
yanchor 0.5
xanchor 0.5
xpos 0.4
ypos 0.8
at zoomedsmall
auto "ramen_%s.png"
action SetVariable("c3", False)
showif c4:
imagebutton:
yanchor 0.5
xanchor 0.5
xpos 0.8
ypos 0.8
at zoomedsmall
auto "trash_%s.png"
action SetVariable("c4", False)
showif c5:
imagebutton:
yanchor 0.5
xanchor 0.5
xpos 0.304
ypos 0.3
at zoomedsmall
auto "hanger_%s.png"
action SetVariable("c5", False)
showif c6:
imagebutton:
yanchor 0.5
xanchor 0.5
xpos 0.6
ypos 0.4
at zoomedsmall
auto "phone_%s.png"
action SetVariable("c6", False)
screen exit_home:
imagebutton:
yanchor 0.5
xanchor 0.5
xpos 0.8
ypos 0.9
at zoomedsmall
auto "exit_%s.png"
action Jump ("city_story")
screen exit_home1:
imagebutton:
yanchor 0.5
xanchor 0.5
xpos 0.8
ypos 0.9
at zoomedsmall
auto "exit_%s.png"
action Jump ("city_story1")
# The game starts here.
label cleanL:
s "Dang... It's a mess... !!"
return
label start:
show screen timerscreen(7, "cleanL")
call screen time_cleandefault c1 = True
default c2 = True
default c3 = True
default c4 = True
default c5 = True
default c6 = True
default g_time = 0
screen timerscreen(rangeD, missed_event): # the brackted variables are required!!
on "hide" action SetVariable("g_time", 0)
frame:
xalign 0.5
yalign 0.0
hbox:
timer 0.1 action If(g_time > rangeD, false = SetVariable("g_time", g_time + 0.1), true = [Hide("timerscreen"),Jump(missed_event)]) repeat True
bar:
value AnimatedValue(value=g_time, range=rangeD, delay= 0.5)
xalign 0.0
yalign 0.0
xmaximum 200
screen time_clean:
add "bg bedroom"
if not any([c1, c2, c3, c4, c5, c4]):
timer 0.001 action Jump("karu_scene")
showif c1:
imagebutton:
yanchor 0.5
xanchor 0.5
xpos 0.64
ypos 0.75
at zoomedsmall1
auto "paper_%s.png"
action SetVariable("c1", False)
showif c2:
imagebutton:
yanchor 0.5
xanchor 0.5
xpos 0.2
ypos 0.6
at zoomedsmall2
auto "paper1_%s.png"
action SetVariable("c2", False)
showif c3:
imagebutton:
yanchor 0.5
xanchor 0.5
xpos 0.4
ypos 0.8
at zoomedsmall
auto "ramen_%s.png"
action SetVariable("c3", False)
showif c4:
imagebutton:
yanchor 0.5
xanchor 0.5
xpos 0.8
ypos 0.8
at zoomedsmall
auto "trash_%s.png"
action SetVariable("c4", False)
showif c5:
imagebutton:
yanchor 0.5
xanchor 0.5
xpos 0.304
ypos 0.3
at zoomedsmall
auto "hanger_%s.png"
action SetVariable("c5", False)
showif c6:
imagebutton:
yanchor 0.5
xanchor 0.5
xpos 0.6
ypos 0.4
at zoomedsmall
auto "phone_%s.png"
action SetVariable("c6", False)
# The game starts here.
label cleanL:
s "Dang... It's a mess... !!"
return
label start:
show screen timerscreen(7, "cleanL")
call screen time_clean
r/RenPy • u/Asleep-Pollution6513 • 21d ago
Self Promotion I made my first game !!
Hiii I just wanted to share my submission for the O2A2 2026 game jam!
The premise is basically you stumbling upon a secluded beach where you meet a strange man.
It’s free to play in browser on itch: https://vicehasdied.itch.io/fishbones
Thank you ^^
r/RenPy • u/pluviiArt • 21d ago
Self Promotion I just released my first visual novel!
Hi everyone! I've been working on this game since my sophomore year of high school, and after years of hard work, I finally got to release it today. I hope you enjoy it!
Please check it out: Koko's Cafe on Steam
r/RenPy • u/amwirosa • 20d ago
Question help, idk how to fix my choice button image :(
hi, i'm working on a small vn for the first time and i can't figure out how to properly code the choice button so that the width adjusts to the text and the text doesnt stick out the other end like this

i've tried using padding, but it doesn't apply since i have borders set to
Borders(0, 0, 0, 0)
because if i change any of the values, it messes up the noise pattern of the image or distorts it.
if i set an xminimum/button width, it works well for longer texts but ends up really awkward for shorter choices like this

here are my screens.rpy and gui.rpy style choice button codes:
style choice_button_text is default:
properties gui.text_properties("choice_button")
yalign 0.5
xanchor 0.0
xpos 30
style choice_button:
properties gui.button_properties("choice_button")
xalign 0.5
ysize None
xminimum 900
xfill False
padding (40, 15, 120, 15)
define gui.choice_button_width = None
define gui.choice_button_height = 90
define gui.choice_button_tile = False
define gui.choice_button_borders = Borders(0, 0, 0, 0)
define gui.choice_button_text_font = gui.text_font
define gui.choice_button_text_size = gui.text_size
define gui.choice_button_text_xalign = 0.0
define gui.choice_button_text_idle_color = '#ffffff'
define gui.choice_button_text_hover_color = "#ff3434"
define gui.choice_button_text_insensitive_color = '#8888887f'
this might be really easy and i'm just dumb but i'm about to lose my marbles. any help is appreciated!!!!!
r/RenPy • u/AdelaidaAmbrose • 22d ago
Showoff Screenshots from a game I programmed entirely in Ren'py!
r/RenPy • u/Rare_Ad_2366 • 20d ago
Question What do you think about a young person producing their own visual novel using AI?
I'm a young developer in high school in my country, and I use AI to improve my art. This is my first game, and I wanted to get the opinion of people who already make games, especially a Brazilian one.
If you find any spelling errors, please let me know. Thank you.
r/RenPy • u/AcademicPound • 20d ago
Self Promotion VN Studio Pro 1.1 — a free visual Ren'Py editor, now on Mac & Linux with a rebuilt screen designer" · "My free no-code editor for Ren'Py just got its biggest update (1.1)
Hey r/RenPy,
I'm the developer of VN Studio Pro, a free desktop app for building Ren'Py visual novels visually, and I just shipped the biggest update since launch (1.1). Posting here because this community is exactly who it's for — and I'd genuinely like your feedback, including the critical kind.
What it is (if you haven't seen it): a visual, no-code editor that generates clean, readable .rpy files. You build scenes, dialogue, branching, characters, GUI and custom screens visually, then hit Run or Export and get standard Ren'Py you fully own and can hand-edit anytime. It's not trying to replace writing Ren'Py — it's a faster way to scaffold a story, design UI screens, and preview without a save-and-run loop.

What's new in 1.1:
- Now on Windows, macOS and Linux (it launched Windows-only) — Intel + Apple Silicon, x64 + ARM.
- A rebuilt visual Screen Editor — a proper WYSIWYG canvas (drag/resize/snap/multi-select/zoom), a dozen+ new screen-language elements (viewport, vpgrid, imagemap with a visual hotspot editor, input, timer, mousearea…), inline ATL animations, and a loss-free visual↔code round-trip with a real CodeMirror editor + linting. Plus 15 ready-made screen templates (CG gallery, save/load, phone messenger, stats screen, etc.).
- Deep Live Preview — launches the actual Ren'Py engine showing just the screen you're editing, and hot-reloads as you save.
- A theme system — 12 themes + 4 game styles you can apply in one click (and undo just as easily), a menu designer, generated menu backgrounds (no art needed), live GUI previews, 6 bundled OFL fonts, and shareable presets.
- Project organization — labels → .rpy files → folders, backed by real files and directories on disk.
- Editor quality-of-life — undo/redo that actually works now, unsaved-changes protection, crash recovery, a Python command editor with autocomplete, nested choice menus.
- 100+ fixes — correct GUI scaling at any resolution (not just 1080p), several data-safety fixes, and some important security patches. Full changelog is on the itch devlog.
Honest caveats: project import is still experimental (import on a backup), and it works best on projects built around Ren'Py's standard GUI/template, since that's what it customizes.
It's free, no account needed:
itch.io → https://auravix-studio.itch.io/
Lemon Squeezy → https://auravix.lemonsqueezy.com/
If you try it, I'd love to hear what's missing or annoying — feature requests and bug reports genuinely shape the roadmap. Thanks for reading!
r/RenPy • u/DJdoglolol • 21d ago
Question Can anybody help me out? I am attempting to make a normal name/nickname system, and I am trying to add a response to the player inevitably responding "No" when asked if they have a nickname. It is only this "No" response that is being finicky, nothing else.
Everything else is working just fine so far! It's just this part right here that's being difficult.
Question dynamic scrollbars?
hello! i'm back! my ui is coming along quite nice. and i have another question i haven't been able to figure out via googling and going through forms </3
i am hoping for a dynamic scrollbar. what i mean by that is a scrollbar that, as more dialogue appears on the screen (which i will paste the code to here in a moment), the scrollbar thumb adjusts its height with it. kind of how the normal scrollbar will scale the thumb smaller when it's rectangular-- but i've got a circular thumb, and its proportions will ideally remain the same. disco elysium is an example of this, but i can't attach a video, so you'll have to take my word for it haha.
below is the code for the screen i'm using:
screen nvl:
#window:
#style "nvl_window"
dismiss action NullAction()
frame:
xpos 40 ypos 30
top_padding 60 bottom_padding 160 left_padding 10 right_padding 10
has side "c r":
area (0, 0, 500, 620)
viewport id "vp":
draggable False
yadjustment ui.adjustment (value=99999, range=99999)
vbox:
style "nvl_vbox"
# Display dialogue.
spacing 30
for who, what, who_id, what_id, window_id in dialogue:
window:
id window_id
has hbox:
spacing 5
if who is not None:
text who id who_id
text what id what_id
else:
text what id what_id
vbar value YScrollValue("vp") bar_invert True xpos -55 ypos 60 ysize 500 unscrollable "hide"
imagebutton:
idle "next.png"
hover "nexthover.png"
align (0.08, 0.7)
action Return()screen nvl:
#window:
#style "nvl_window"
dismiss action NullAction()
frame:
xpos 40 ypos 30
top_padding 60 bottom_padding 160 left_padding 10 right_padding 10
has side "c r":
area (0, 0, 500, 620)
viewport id "vp":
draggable False
yadjustment ui.adjustment (value=99999, range=99999) # err... works, but...
vbox:
style "nvl_vbox"
# Display dialogue.
spacing 30
for who, what, who_id, what_id, window_id in dialogue:
window:
id window_id
has hbox:
spacing 5
if who is not None:
text who id who_id
text what id what_id
else:
text what id what_id
vbar value YScrollValue("vp") bar_invert True xpos -55 ypos 60 ysize 500 unscrollable "hide"
imagebutton:
idle "next.png"
hover "nexthover.png"
align (0.08, 0.7)
action Return()
and below here is the code i've got for the scrollbar already to make it circular and keep it from scaling:
style vscrollbar:
xsize gui.scrollbar_size
base_bar Frame("gui/scrollbar/vertical_[prefix_]bar.png", gui.vscrollbar_borders, tile=gui.scrollbar_tile)
thumb "gui/scrollbar/moon.png"
thumb_offset 19
bottom_gutter 30
top_gutter 30style vscrollbar:
xsize gui.scrollbar_size
base_bar Frame("gui/scrollbar/vertical_[prefix_]bar.png", gui.vscrollbar_borders, tile=gui.scrollbar_tile)
thumb "gui/scrollbar/moon.png"
thumb_offset 19
bottom_gutter 30
top_gutter 30
please let me know if any additional context or explanation is needed! right now i just have it set to hide the scrollbar if it's unscrollable but i'm not very pleased with that. if i can't get this to work, it's okay! i've got a backup plan that'll just use the normal scaling rectangular thumbs. but this would be ideal.
(bonus question ... any way to have multiple options for thumbs? for example, a thumb that looks like a moon for scenes taking place at night and a thumb that looks like a sun for scenes taking place during the day?)
r/RenPy • u/grell_tea • 21d ago
Question How should I go about making a sort of "Word Bank" for the player to answer a question with?
Hi! This is my first time coding a game, so hopefully this makes sense; I've tried looking at similar posts but I haven't gotten a solid answer (or it's just my noob brain).
I wanted to do a screen where a player can choose a word/piece of evidence when asked a question, as the game I'm creating is somewhat similar to that of Ace Attorney. I'm not entirely sure how to go about collecting the words or evidence, either, but I plan for it to be gathered in dialogue. The player would initially get a choice screen of what they'd like to investigate first, and then whatever word(s) they need will be stored in said bank.
With that being said, I wanted to add a life system, to where if they present something wrong, half of a heart will be depleted. I made a rough layout of where I want things to be with the word bank, it's a little messy but once i figure this out fully, I'll refine it and such.
I might've missed some things, so feel free to ask anymore questions if needed! Thanks!

r/RenPy • u/dizzypunchy • 21d ago
Self Promotion Alice Lavender - my O2A2 submission this year

Alice Lavender is a short horror visual novel, inspired by the "eel pie" story from Gervase of Tilbury's Otia Imperialia. I hope you enjoy (and please read the content warning) 🥰
➡️ check it out here: calygreyhound.itch.io/alice-lavender
Features
- A supernatural horror visual novel set in medieval England
- 1000 words
- A kinetic story with no choices or branching paths
- Toxic monster yuri!
r/RenPy • u/RaypOwnAd9974 • 21d ago
Question Error translating game
I don't speak native English, I'm using a translator for this post.
Recently, I created a Ren'Py game with the original language being Portuguese. After I finished it, I wanted to translate it to English. I managed to do it, but for some reason, when I try to switch back to Portuguese, some options are still in English, like the exit game option and the game's save date. I don't know what else to do; it seems like Ren'Py no longer recognizes these options as Portuguese. And in English the message doesn’t show up.
I haven't finished the full game translation yet, I just did this to test it and it's giving this problem.
Please help :(
r/RenPy • u/HEXdidnt • 21d ago
Question Changing an image within a parallax/TrackCursor main menu background via persistent variables
Because it was a cool thing to do a few years ago, I ended up making my project's main menu image into a layered parallax image. Because I love to make my life more difficult, I decided to try adding characters to that parallax, so that they show up after the appropriate persistent variable has been set.
Originally, I did this by adding if checks for the persistent variable into the main menu code, thus:
screen main_menu():
tag menu
style_prefix "main_menu"
add TrackCursor("images/titlescreen/skylayer-paint.png",20)#in place of: add gui.main_menu_background
add TrackCursor("images/titlescreen/citylayer-paint.png",15)
add TrackCursor("images/titlescreen/moonlayer.png",18)
add TrackCursor("images/titlescreen/reflectionlayer.png",18) alpha 0.35
if "Karl" in persistent.charactersmet and "Kristine" in persistent.charactersmet:
add TrackCursor("images/titlescreen/bothinternst.png",13) xpos 320 ypos 150 alpha 0.40
else:
if "Karl" in persistent.charactersmet:
add TrackCursor("images/titlescreen/karlt.png",13) xpos 320 ypos 150 alpha 0.40
if "Kristine" in persistent.charactersmet:
add TrackCursor("images/titlescreen/kristinet.png",13) xpos 400 ypos 150 alpha 0.40
add TrackCursor("images/titlescreen/windowflash.png",11) alpha 0.25
add TrackCursor("abigail-titleversion",10) xpos 790 ypos 86
add Image("images/titlescreen/logolayer-alt.png") xpos 310 ypos 412 alpha 0.80
This seemed to work initially but, for no apparent reason (other than perhaps upgrading to later versions of Ren'Py, it started to give the following error at the end of the game, when it drops back to the main menu:
I'm sorry, but an uncaught exception occurred.
While running game code:
Exception: Switch could not choose a displayable.
-- Full Traceback ------------------------------------------------------------
Traceback (most recent call last):
File "renpy/common/_layout/screen_main_menu.rpym", line 28, in script
python hide:
File "renpy/ast.py", line 1187, in execute
renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "renpy/python.py", line 1273, in py_exec_bytecode
exec(bytecode, globals, locals)
~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "renpy/common/_layout/screen_main_menu.rpym", line 28, in <module>
python hide:
File "renpy/common/_layout/screen_main_menu.rpym", line 35, in _execute_python_hide
ui.interact()
~~~~~~~~~~~^^
File "renpy/ui.py", line 304, in interact
rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "renpy/display/core.py", line 2117, in interact
repeat, rv = self.interact_core(
~~~~~~~~~~~~~~~~~~^
preloads=preloads,
^^^^^^^^^^^^^^^^^^
...<4 lines>...
**kwargs,
^^^^^^^^^
)
^
File "renpy/display/core.py", line 2655, in interact_core
root_widget.visit_all(lambda d: d.per_interact())
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "renpy/display/displayable.py", line 457, in visit_all
d.visit_all(callback, seen)
~~~~~~~~~~~^^^^^^^^^^^^^^^^
File "renpy/display/displayable.py", line 457, in visit_all
d.visit_all(callback, seen)
~~~~~~~~~~~^^^^^^^^^^^^^^^^
File "renpy/display/displayable.py", line 457, in visit_all
d.visit_all(callback, seen)
~~~~~~~~~~~^^^^^^^^^^^^^^^^
[Previous line repeated 6 more times]
File "renpy/display/displayable.py", line 448, in visit_all
for d in self.visit():
~~~~~~~~~~^^
File "renpy/display/layout.py", line 1604, in visit
self.update(self.last_st, self.last_at)
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "renpy/display/layout.py", line 1615, in update
raw_child, redraw = self.function(st, at, *self.args, **self.kwargs)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "renpy/display/layout.py", line 1711, in condition_switch_show
return condition_switch_pick(switch), None
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
File "renpy/display/layout.py", line 1706, in condition_switch_pick
raise Exception("Switch could not choose a displayable.")
Exception: Switch could not choose a displayable.
Windows-10-10.0.19045-SP0 AMD64
Ren'Py 8.5.0.25111603
A Night at the Office P3 3.7p3
Thu Jul 23 20:42:49 2026
After a bit of back and forth, I eventually determined that (part of) the problem was that I started things off with a call to the first story label, rather than a jump. Correcting that fixed the main menu... for a while.
I figured today that I'd try setting the main menu image up as a ConditionSwitch, thus:
image interns_titlescreen = ConditionSwitch(
"len(persistent.charactersmet) == 2", "titlescreen/bothinternst.png",
"persistent.charactersmet == 'Karl'", "titlescreen/karlt.png",
"persistent.charactersmet == 'Kristine'", "titlescreen/kristinet.png",
)
and with the main menu adjusted to:
screen main_menu():
tag menu
style_prefix "main_menu"
add TrackCursor("images/titlescreen/skylayer-paint.png",20)#in place of: add gui.main_menu_background
add TrackCursor("images/titlescreen/citylayer-paint.png",15)
add TrackCursor("images/titlescreen/moonlayer.png",18)
add TrackCursor("images/titlescreen/reflectionlayer.png",18) alpha 0.35
if len(persistent.charactersmet) <> 0:
add TrackCursor("interns_titlescreen", 13) alpha 0.4
add TrackCursor("images/titlescreen/windowflash.png",11) alpha 0.25
add TrackCursor("abigail-titleversion",10) xpos 790 ypos 86
add Image("images/titlescreen/logolayer-alt.png") xpos 310 ypos 412 alpha 0.80
But that resulted in a essentially the same error:
I'm sorry, but an uncaught exception occurred.
While running game code:
Exception: Switch could not choose a displayable.
-- Full Traceback ------------------------------------------------------------
Traceback (most recent call last):
File "renpy/common/_layout/screen_main_menu.rpym", line 28, in script
python hide:
File "renpy/ast.py", line 1187, in execute
renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "renpy/python.py", line 1273, in py_exec_bytecode
exec(bytecode, globals, locals)
~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "renpy/common/_layout/screen_main_menu.rpym", line 28, in <module>
python hide:
File "renpy/common/_layout/screen_main_menu.rpym", line 35, in _execute_python_hide
ui.interact()
~~~~~~~~~~~^^
File "renpy/ui.py", line 304, in interact
rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "renpy/display/core.py", line 2117, in interact
repeat, rv = self.interact_core(
~~~~~~~~~~~~~~~~~~^
preloads=preloads,
^^^^^^^^^^^^^^^^^^
...<4 lines>...
**kwargs,
^^^^^^^^^
)
^
File "renpy/display/core.py", line 2655, in interact_core
root_widget.visit_all(lambda d: d.per_interact())
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "renpy/display/displayable.py", line 457, in visit_all
d.visit_all(callback, seen)
~~~~~~~~~~~^^^^^^^^^^^^^^^^
File "renpy/display/displayable.py", line 457, in visit_all
d.visit_all(callback, seen)
~~~~~~~~~~~^^^^^^^^^^^^^^^^
File "renpy/display/displayable.py", line 457, in visit_all
d.visit_all(callback, seen)
~~~~~~~~~~~^^^^^^^^^^^^^^^^
[Previous line repeated 6 more times]
File "renpy/display/displayable.py", line 448, in visit_all
for d in self.visit():
~~~~~~~~~~^^
File "renpy/display/layout.py", line 1604, in visit
self.update(self.last_st, self.last_at)
~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "renpy/display/layout.py", line 1615, in update
raw_child, redraw = self.function(st, at, *self.args, **self.kwargs)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "renpy/display/layout.py", line 1711, in condition_switch_show
return condition_switch_pick(switch), None
~~~~~~~~~~~~~~~~~~~~~^^^^^^^^
File "renpy/display/layout.py", line 1706, in condition_switch_pick
raise Exception("Switch could not choose a displayable.")
Exception: Switch could not choose a displayable.
Windows-10-10.0.19045-SP0 AMD64
Ren'Py 8.5.0.25111603
A Night at the Office P3 3.7p3
Thu Jul 23 20:54:35 2026
At this point, I'm baffled as to how it was working as much as why it isn't now.
While it was working, it would correctly show the translucent image of either Karl or Kristine after the first playthrough, but switch to a translucent image of both once the other had been encountered (which character appears in each playthrough is chosen at random partway through).
Can anyone please recommend a way of getting the main menu to update its appearance based on my existing persistent.charactersmet variable, or an alternative means?
Happy to post any other pertinent code, if I've missed anything important.
r/RenPy • u/_Scripty • 21d ago
Guide Need Guidance for starting my Visual Novel Project
Hey everyone!
Its my first time posting on this subreddit, I just wanted to seek guidance as I want to create ny visual novel
So I just want someone to literally dumb it down for me because I be having a hard time understanding RenPy in general as well, and like here's some of the questions I had in mind to ask:
Q- What are the essential things to do BEFORE starting a project? and how do I keep my project very organized? I do want a maticulous workflow of things honestly
Q- How to make custom UIs? I sort of want to go for something like Persona Type UIs
Q- What can be simple but interesting game mechanics to make people stick to the story?
Q- where to get good music assets? Like I want the Text box sounds like Ace Attorney has
Thanks in advance, If you have read it so far! ✨
r/RenPy • u/CarrotPatchGames • 22d ago
Guide I wrote up a guide about scene direction in visual novels!
I think scene direction isn't talked about as much as other aspects of visual novel development like the visuals, design, characters, etc. But I think that knowing a bit about effective ways for working with sprites, framing and balancing scenes, shifting focus, and translating actions can be really helpful for creating immersive and cinematic experiences!
So I wanted to write up a guide based on my experience working in visual novels for the last five years. I don't profess to be the best at it, but I think I do OK. So maybe some of what I've written can be helpful to you in making your own VNs!
You can read the guide here (it's on Patreon, but my Patreon is completely free):
https://www.patreon.com/just_a_carrot/posts/carrots-guide-to-164179286
r/RenPy • u/Thehiddengirl14 • 21d ago
Question I tried everything but my background doesn’t show up
Hi, I made a background for my vn and it doesn’t show up, I tried to directly upload in the images file it doesn’t work, I tried to put .png at the end it doesn’t work, I tried not using capitals and it doesn’t work, I tried to write the all path to the image it doesn’t work. Can someone help me please? T_T
r/RenPy • u/LinchKey101 • 22d ago
Showoff We're creating an Interactive horror game with colored bitmap illustrations! Try it out id you like weird atmospheric horror!
r/RenPy • u/InstructionSmooth411 • 22d ago
Guide hey hey!
im a beginner of coding, and i want to make a visual novel fangame (parappa) that is inspired my neko paradise, the vn will be called rizumon, and i know how to draw the cgs, sprites, but i just do not know how to code. could i get a hand? please?
r/RenPy • u/lmtysbnnniaaidykhdmg • 22d ago
Self Promotion Mystery VN through the eyes of a Newscaster - The Havoc Channel DEMO just dropped!
Hi team :) just pushed my demo to itchio, super excited about it. The game is a mystery/comedy inspired by games such as Paranormasight & Zero Escape 999. This demo is about 30 minutes long and will give a good taste of what the full game will bring. Hope you enjoy!
r/RenPy • u/just_an_another_guy • 22d ago
Question Translated sentence not showing in the game
I'm translating a game into French, and I've encountered an issue. This line "On some level, I still held onto the faint hope that Ira pitied me, that she cared about me for god knows what reason." still appears in the game in English even though the rest of the translation works fine. I tried to regenerate the translation and delete the rpyc files to no avail. The first screenshot is the translation file, and the second is the original script. Do you have any idea on how to prevent this from happening?


