So glad to hear you enjoyed our game! ZetaKen and I had an absolute blast coming up with those choices hahaha
KigyoDev
Creator of
Recent community posts
Thank you for helping me reach the donation goal (or at least, I assume that was you)!
I've looked further into the bubble code, and while the text size scaling can now easily be applied to bubbles as well, unfortunately the bubble window (the image background) is a much more complex issue. The reason is that any change to the bubble screen is overridden by whatever bubble "area" is defined for each individual line of dialogue. Changing this behavior would require diving deep into the engine itself, which unfortunately is above my current skill level.
Therefore, my best recommendation for the moment is to simply make the bubbles big enough so they can fit your largest text setting. I'm sorry I couldn't deliver a perfect solution, but I hope the text size scaling by itself already helps!
Hey, and so sorry about the long wait! Unfortunately this issue still hasn't been fixed, but Feniks figured out a workaround: /__site/feniksdev.itch.io/inline-conditions-for-renpy/devlog/1723160/engine-tran...
If you add
if renpy.version(True) < (8, 6):
text_input = renpy.translate_string(text_input)
to the beginning of the add_speech_pauses function, this should hopefully work!
Hi! The plugin currently only works for the regular text box and was not designed for speech bubbles (but it’s possible it might work with just a few small adjustments – I haven’t tested this yet).
I’d be happy to take a closer look at speech bubble functionality since I’ve always wanted to include them in one of my own projects anyway. :D
OMG Nayru, I'm actually so relieved to hear my words back then encouraged you - I was lowkey worried I had overstepped and said too much!
Admittedly, your own announcement was a huge factor in getting me to reach a similar conclusion, and I'm genuinely thankful for that. You concluding you "didn't make it", yet continuing to make games and posting regular devlogs anyway, made me realize changing one's goals doesn't have to mean the end of the world. If anything, adapting to unfair and harsh realities is probably necessary to be able to sustainably keep going in the first place.
The past few days, I kept waiting for some form of sadness to kick in, but the main thing I've been able to feel is that a massive burden has been lifted. I'm pretty sure that confirms I made the right call, and that I'll be better off this way in the long run. It also helps that you and a bunch of others agree with that assessment. I will try to enjoy this break to the fullest, and look forward to coming back to gamedev with a more relaxed and healthy approach.
Thank you for your kind words, and just know I've also been lurking and keeping up with your works from the sidelines! It warms my heart to see how we all just want what's best for each other, and have each other's backs. I'm really grateful for this community, and that you're also still a part of it.
Thank you Hiromu, you're completely right. This doesn't have to be seen as the "end" of anything - just a change in my perspective.
And it's true that even after letting go of my grand ambitions, my odds off financial success still aren't zero. I'm just no longer going to focus on that, and will try to see every tiny win as a pleasant bonus, instead of a necessity. That should bring me a lot more happiness, while otherwise not affecting anything else haha
Thank you again, and I wish you all the best too!
Berin, that is really sweet of you to say. Thank you so much!
It really means a lot that no one (so far, lol) is disappointed in me because of the upcoming lack of updates. I will try to fully enjoy my break, and remind myself that those who care about Artificial Selection probably also want what's best for me.
I hope you are looking after yourself as well!
Hi Heiden! It both helps to know, but is also really sad, how common these feelings are among fellow creatives. Part of me will probably never be able to fully give up on my dream, but I think we owe it to ourselves to at least stop making our own lives harder by blaming ourselves for not being able to achieve it.
It's great to hear that your extended time off has brought such an "old" joy back for you! Makes me optimistic that I've made the right choice, too.
Thank you for your kind words, and I'm wishing you all the best as well!
Hi Carrot, thank you for saying that. Honestly, I've also had many crises before this one where I've questioned the point of everything I do, but I somehow always managed to force myself to carry on, business as usual. Having an existential meltdown every now and then almost seemed like another standard part of my routine, and maybe that's what got me to this point......
I'm glad to hear that pausing development during a hard time (if I'm interpreting your words right) has worked for you. Though I can't fully picture it at the moment, it helps to know that, with due time, maybe even that original spark I had 7 years ago will finally come back. Being able to feel that type of pure joy again sounds wonderful.
Thank you again for reaching out, and I hope you can also remember to show yourself the same kindness the next time you doubt yourself. I'll be rooting for you, too!
Hey! Thank you for that suggestion. Unfortunately, after looking into it, I don't think this is something I can do, since I would fundamentally have to change how my code works. (My code makes use of a built-in "Count" class, rather than scanning all the text itself.) I'm sorry...
It's true that a good use of variables and "extend" might already help a lot, though! If you can think of alternative workarounds, I'll try my best to support those!
On the other hand, your comment motivated me to finish up the last few features I've been cooking up, so now there's a different type of update for you to enjoy. Thank you again! :D
The new version is now live, and works as a compromise between Versions A and B. Thank you for sparking this idea!
If I'm understanding correctly, this isn't a bug, but simply how persistent variables work in Ren'Py. When the default of a persistent variable has been set once, updating it won't change anything. I might add a note within the plugin to make this clearer in the future!
Using Delete Persistent from the launcher should let your changes to the default value take effect. (Though keep in mind this might also reset some other settings for you.)
Otherwise, if you don't plan on using the preferences menu / having the player be able to change the values themselves, you can swap default for define (for example define persistent.speech_pause_comma = 0.15) and this will make the game always override it with the values you set!
OOF, I’m really sorry you had such a bad time, Pri.
I’m honestly more surprised others somehow DID manage to have a good experience with this company, because I immediately assumed it was a scam when I saw they didn’t list anywhere where they were based and had a laughable “about us” page, supplied a gmail address rather than their own domain (though I see they changed this in the meantime), and not to mention are creating bootleg merch of other franchises.
Still, I hope that you don’t give up, and that you can turn plushies into reality with a more reliable manufacturer someday!
Hey, just to let you know it's possible to run into a rare crash if the audio is muted and there is "No song playing", and you then hit the "previous song" button.
I fixed it by adding the same code from the next() function to the previous() function, right before "pos = renpy.music.get_pos(channel=self.channel)":
filename = renpy.music.get_playing(channel=self.channel) if filename is None: return self.play(None, 0)
Back with a new bug report! This time around it's related to self-voicing (normally activated with "v"). The game throws the following error when I hover over a choice menu making use of truncate_text.
(The same also happens in NVL mode and in the history screen, where i shorten the character names with truncate_text.)
I'm sorry, but an uncaught exception occurred. While running game code: File "game/script/routes/loye_3.rpy", line 1359, in script menu: TypeError: TruncateText._tts() got an unexpected keyword argument 'raw' -- Full Traceback ------------------------------------------------------------ Traceback (most recent call last): File "game/script/routes/loye_3.rpy", line 1359, in script menu: File "renpy/ast.py", line 1816, in execute choice = renpy.exports.menu(choices, self.set, args, kwargs, item_arguments) ~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "renpy/exports/menuexports.py", line 135, in menu rv = renpy.store.menu(new_items) ~~~~~~~~~~~~~~~~^^^^^^^^^^^ File "renpy/exports/menuexports.py", line 418, in display_menu rv = renpy.ui.interact(mouse="menu", type=type, roll_forward=roll_forward) ~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "renpy/ui.py", line 306, in interact rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "renpy/display/core.py", line 2164, in interact repeat, rv = self.interact_core( ~~~~~~~~~~~~~~~~~~^ preloads=preloads, ^^^^^^^^^^^^^^^^^^ ...<4 lines>... **kwargs, ^^^^^^^^^ ) ^ File "renpy/display/core.py", line 3259, in interact_core rv = renpy.display.focus.mouse_handler(ev, x, y) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^ File "renpy/display/focus.py", line 641, in mouse_handler return change_focus(new_focus, default=default) ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "renpy/display/focus.py", line 568, in change_focus set_focused(current, newfocus.arg, newfocus.screen) ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "renpy/display/focus.py", line 217, in set_focused renpy.display.tts.displayable(widget) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^ File "renpy/display/tts.py", line 428, in displayable s = d._tts_all(raw=False) ~~~~~~~~~~^^^^^^^^^^^ File "renpy/display/behavior.py", line 1204, in _tts_all rv = self._tts_common(alt(self.action), raw=raw) ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "renpy/display/displayable.py", line 625, in _tts_common speech = i._tts(raw=raw) ~~~~~~^^^^^^^^^ File "renpy/display/displayable.py", line 663, in _tts return self._tts_common(raw=raw) ~~~~~~~~~~~~~~~~^^^^^^^^^ File "renpy/display/displayable.py", line 625, in _tts_common speech = i._tts(raw=raw) ~~~~~~^^^^^^^^^ File "renpy/display/layout.py", line 1300, in _tts return self._tts_common(raw=raw) ~~~~~~~~~~~~~~~~^^^^^^^^^ File "renpy/display/displayable.py", line 625, in _tts_common speech = i._tts(raw=raw) ~~~~~~^^^^^^^^^ File "renpy/display/layout.py", line 1300, in _tts return self._tts_common(raw=raw) ~~~~~~~~~~~~~~~~^^^^^^^^^ File "renpy/display/displayable.py", line 625, in _tts_common speech = i._tts(raw=raw) ~~~~~~^^^^^^^^^ TypeError: TruncateText._tts() got an unexpected keyword argument 'raw' Windows-11-10.0.22631-SP0 AMD64 Ren'Py 8.5.3.26042304+nightly
Hey! So I finally gave this a shot by swapping out my existing flowchart viewport with zoom_viewport.
While zooming out immediately worked as expected, I ran into the following issues:
- Despite supplying "draggable True" and "pagekeys True", neither of these input methods seem to work. ("mousewheel "zoom"" however, does.) Is there anything in particular I should be looking out for that could be interfering here?
- Like I said, zooming out works perfectly, but whenever I scroll the mousewheel to zoom in, I run into the following error:
I'm sorry, but an uncaught exception occurred. While running game code: File "renpy/display/render.pyx", line 494, in renpy.display.render.render_screen File "renpy/display/render.pyx", line 267, in renpy.display.render.render File "renpy/display/render.pyx", line 170, in renpy.display.render.render File "renpy/display/render.pyx", line 267, in renpy.display.render.render File "renpy/display/accelerator.pyx", line 1020, in renpy.display.accelerator.RenderTransform.render File "renpy/display/accelerator.pyx", line 439, in renpy.display.accelerator.RenderTransform.render_child File "renpy/display/render.pyx", line 267, in renpy.display.render.render File "renpy/display/render.pyx", line 170, in renpy.display.render.render File "renpy/display/render.pyx", line 267, in renpy.display.render.render File "renpy/display/render.pyx", line 170, in renpy.display.render.render File "renpy/display/render.pyx", line 267, in renpy.display.render.render File "renpy/display/render.pyx", line 170, in renpy.display.render.render File "renpy/display/render.pyx", line 267, in renpy.display.render.render File "renpy/display/render.pyx", line 170, in renpy.display.render.render File "renpy/display/render.pyx", line 267, in renpy.display.render.render File "renpy/display/render.pyx", line 170, in renpy.display.render.render File "renpy/display/render.pyx", line 267, in renpy.display.render.render File "renpy/display/render.pyx", line 170, in renpy.display.render.render File "renpy/display/render.pyx", line 267, in renpy.display.render.render File "renpy/display/render.pyx", line 170, in renpy.display.render.render File "renpy/display/render.pyx", line 267, in renpy.display.render.render File "renpy/display/render.pyx", line 170, in renpy.display.render.render File "renpy/display/render.pyx", line 267, in renpy.display.render.render File "renpy/display/render.pyx", line 170, in renpy.display.render.render File "renpy/display/render.pyx", line 267, in renpy.display.render.render File "renpy/display/render.pyx", line 170, in renpy.display.render.render File "renpy/display/render.pyx", line 267, in renpy.display.render.render File "renpy/display/accelerator.pyx", line 1020, in renpy.display.accelerator.RenderTransform.render File "renpy/display/accelerator.pyx", line 439, in renpy.display.accelerator.RenderTransform.render_child File "renpy/display/render.pyx", line 267, in renpy.display.render.render File "game/script/system/plugins/zoom_viewport/01_zoom_viewport.rpy", line 383, in render File "game/script/system/plugins/zoom_viewport/01_zoom_viewport.rpy", line 319, in redraw_adjustments File "game/script/system/plugins/zoom_viewport/01_zoom_viewport.rpy", line 343, in adjust_pos_for_zoom IndexError: list index out of range
The error appears while the zoom-in animation is already happening, if that helps.
I'd also be happy to send a game build to figure this out in more detail in DMs! (My Discord username is kigyodev.)
That’s very kind of you, thank you! A link to my website (https://kigyodev.com/) should be fine for Steam. Glad my tool has been helpful! :D
I'm really sorry I missed your last comment!
I've personally been using Ren'Py 8 ever since the launch of this tool, but I downloaded 7.8.7 to test this, and I got it to work just fine in a fresh test project.
To make absolutely sure, is your wordcounter file inside of your project's game/ folder? (A screenshot of how your folder structure is set up might also help.)
I'll also admit Ren'Py not respecting your "character counts by speaking character" setting is very strange. Does it only do that if the wordcounter is there, or in general?
Thank you again for this awesome plugin!
Unfortunately, I can't seem to get it working with LayeredImageProxy. It always gives me one of two errors:
When using outline_transform() directly:
File "game/outline_shader.rpy", line 244, in <module> u_width float(width) ~~~~~^^^^^^^ TypeError: float() argument must be a string or a real number, not 'MultiBox'
When using a transform that makes use of outline_transform():
File "game/outline_shader.rpy", line 247, in <module> u_line_color Color(color).rgba ~~~~~^^^^^^^ TypeError: 'MultiBox' object is not iterable
I got these in a sample project simply by doing:
layeredimage eileen base:
always "eileen.png"
image eileen = LayeredImageProxy("eileen base", [outline_transform()])
I'm happy to provide more detail in case there's a specific part of the error message that would help!



















