Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

KigyoDev

163
Posts
3
Topics
1,182
Followers
67
Following
A member registered Feb 03, 2019 · View creator page →

Creator of

Recent community posts

(1 edit)

Thank you so much for playing! :D



v— slight spoilers below —v

.

.

.

(you have been warned)

.

.

.

There is technically no singular true canon route, but I’d say Bea & Ricky are the strongest contenders for that, yeah!

Thank you Pri!! I hope you'll enjoy it when you get the time :D

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)

Oh yeah, I'm on the latest nightlies, so that's probably why. Thank you, I can confirm this fixed it!

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

Alright, so I did not forget about this!

One other thing that could be causing it is that the speech pauses function is being overwritten by something else.

Do you use "config.say_menu_text_filter" anywhere else in your game?

Hey, and thank you so much for this amazing plugin! I finally got around to testing the Bloom effect, and I'm running into the same issue (KeyError: 'a_tex_coord') there as well. It only happens when I try showing a displayable that makes use of "Solid("#000")" - regular image files work perfectly!

Hi, and thank you for asking! Feel free to use this for commercial projects.

Hmm, that's weird. Are you sure you put it inside the "game/" folder, and not the base folder?

No worries! As described in the "How to Use" section, just copy the whole file into your game's folder, and you'll be good to go!

Thank you for your kind words and for sharing your cute looks!! I hope you will enjoy Artificial Selection as well! :D

This is so cute! Unfortunately, some of the settings don't seem to take effect - particularly the window size (it always forces it to fullscreen) and volume controls. Otherwise, great game! Keep it up!

Thank you, that's a great point! I've now updated the file with different default names for the "focusing" variable and the "focus" image.

Let me know what kinds of tweaks you were thinking of, and I might add this additional functionality for everyone!

Woah, letting translators test and see their own work in action is going to be a real game changer. Thank you for this!!

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?

(1 edit)

Thank you so much for the quick reply, it works now!

(1 edit)

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!

Thank you so much! :D

We’re definitely planning on adding more options for the player - do you have any specific examples for what you’d like to see?

Ohhh, please note that wordcounter_hidden_files only hides those specific file statistics from your view - their word counts will still be included in the character-specific and overall totals.

To exclude unused labels entirely, you'd want to look at script_ignore_path instead. Unlike wordcounter_hidden_files, this one makes sure the words won't be counted at all. (Otherwise, they work exactly the same when it comes to file name matching.)

  1. Specifically, you'd want to put your unused script parts in a separate file, let's say "wip_route.rpy"
  2. You can then set script_ignore_path  = ["wip_route.rpy"]
  3. Or script_ignore_path  = ["wip"]
  4. Depending on your preferences, you can either name specific files or broadly exclude all files mentioning a certain keyword

Likewise, I have no idea if this would fully resolve your problem, but maybe simply adding ".rpyc" to script_ignore_path would do the trick for the second issue? I've personally never run into this issue, so I'm unfortunately not sure how to validate it.

(1 edit)

Thank you for pointing this out! I fixed this issue and also added some new features while I was at it. I hope you enjoy! :D

Thank you so much for your interest! I'm so glad you enjoyed the stream and had a good time with SpookY2K!

Regarding your question, the two endings that are already in the Demo will more or less stay as they are. We might decide to add more CGs or do minor edits, but no major story changes/additions are planned at the moment.

Haha I was definitely a little self-indulgent when conceptualizing this project, and I'm so proud of how our team put it all together! Thank you so much for your kind words!! 💗

I'm glad!!! Huge shoutout to Rosia for being our incredible web dev wizard

(1 edit)

I'm not sure what's going on with my Ren'Py right now, but since trying 8.4.1 and going back to 8.3.7 due to various errors, all my save files either jump back to the very start of a label, or immediately crash upon being loaded. One of the errors I get when loading a save is:

File "game/script/system/plugins/inline_conditions.rpy", line 544, in check_for_seen_conditional
     if store.just_seen_conditional:
AttributeError: 'StoreModule' object has no attribute 'just_seen_conditional'

It's the type of crash that doesn't just display an error screen, but fully shuts down the game and opens traceback.txt

just_seen_conditional is defaulted correctly, and I've (so far) used inline conditions only in one single line of my game, so I have no idea what's going wrong here. When I remove inline conditions, other variables of mine cause issues as well, but they don't fully shut down the game, so this seems to be the most "severe" one. I'd appreciate any help!

NVM: I did manage to restore my old .rpyc files and all the crash problems have been resolved. While I still don't get why this would affect defaulted variables, this is no longer really problem.

Elevator Rush is separate from the main game and therefore doesn't have access to the flowchart. To continue with the main game, select "Load" in the main menu and pick your latest save slot that doesn't say "Elevator Rush". 

Let me know if you run into any other problems!

That was it, thank you! It works perfectly now.

Alright, now I've successfully caused a new problem:

So far, truncate_text runs fine until it actually has to cut something off. Whenever I set ysize or a surrounding fixed to a value smaller than what could contain the full text, it throws the error above. For example:

truncate_text last_phrase text_size 20 ysize 30

Here, last_phrase gets information attached to each save file and is defined on the save screen:

$ last_phrase = FileJson(slot, "last_line", empty="", missing=" ")

While "last_line" is obtained like this:

def the_lastline(d):
      mylast_line = getattr(store, '_last_raw_what', '',)
      if not mylast_line:
          mylast_line = getattr(store, '_last_choice_what', '',)
      if mylast_line == "ending":
          line_take = str(len(true_endings))+ _("/14 Rehabilitated")
      else:
          line_take = renpy.substitute(renpy.filter_text_tags(mylast_line, allow=[]))
          line_take = line_take.replace("\n", "")
          line_take = line_take.replace("\\", "")
          line_take = "\"" + line_take + "\""
          if line_take == "\"\"":
              line_take = ""
      d["last_line"] = line_take 

I don't really know what's going on here, but I could imagine "_last_raw_what" is the issue (getting dialogue text instead of "normal" text). 

Any idea for a workaround to make it compatible with truncate_text?

Thank you, that did the trick!

(1 edit)

Hi there! No matter where I put 01_truncate_text.rpy, it doesn't seem to want to run before my "screens.rpy" file and causes the below error whenever I want to use it:


If I remove my own use case, I can try things out with test_truncate_text just fine, though. Any idea how to fix this?

Thank you for reporting this! Unfortunately, I won't be able to resolve this without a major rewrite of the plugin's code, I'm sorry...

The code pays attention to blank spaces after each period or comma, so as long as you avoid those within the shader tag, it should always be fine - not just temporarily.

Insane crossover, can’t wait!

Wow, thank you so much for all your kind words! I’m glad to hear you’ve enjoyed everything so far and that the love and care I put into this game is noticed and appreciated. :D 

I’ll keep working hard and hope you’ll enjoy the coming routes as well. Every character is important to me, so I’m definitely hoping to give Absen and Sed some chances to shine soon. Thank you again!!

This looks incredible, can't wait to play!

Thank you!

Such a wonderful improvement!

I see, yeah after checking, this function was introduced in 8.3.4, so you would need to update. 

Otherwise, you could also replace the function with a variable of your own and manually turn it “on” or “off” whenever you want the pauses active or not. I hope this helps!

It could be that this is a newer function you would need to update Ren’Py for. What version are you running?

This should be doable if you add 

 or renpy.get_statement_name() == "say-nvl"

to the bigger conditional inside the "add_speech_pauses" function. So it should look like:

def add_speech_pauses(text_input):
    if prev_filter:
        text_input = prev_filter(text_input)
    if persistent.speech_pauses is not True or preferences.text_cps == 0 or renpy.get_statement_name() == "say-nvl":
        return text_input
    return speech_pause_adder(text_input)