Skip to main content

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

Chrissy

6
Posts
1
Following
A member registered Feb 04, 2021 · View creator page →

Creator of

Recent community posts

Ohh, I see! That makes sense, also explains the issue. After replacing the icon buttons with imagebutton equivalents, the issue has now resolved itself. Thank you for all of your help!

I don't believe I've removed any custom events, though I did make 4 new .svg button images for the m, n and p keys, as well as all the arrow keys together. Defined them in the controller_icons.rpy as well, this is the relevant code I've added for them there:
 

define icn.mute = IconButton("ToggleMute", ["m", "M"], _(""), "key_m")
define icn.arrowkeys = IconButton("", ["K_LEFT", "K_RIGHT", "K_UP", "K_DOWN"], _(""), "key_arrowkeys")
define icn.n = IconButton("", ["n", "N"], _(""), "key_n")
define icn.p = IconButton("", ["p", "P"], _(""), "key_p")

The icons are actually still in the backend folder. I made a separate folder for a few certain files in your pack to be higher up in the sorting order as they seemed to be conflicting when further down in the backend folder, since I have several order numbered folders in my game folder.


These are the files I have moved higher so they execute early enough:


And these are the files left in the actual backend folder:


So the icons are actually still in the backend folder.
Still, I tried copying the controller_ui folder over into my higher priority folder real quick and changed the file path to that to see if this was maybe a priority issue too, but the error message remained.

That actually helped me fix the issue! While it was not directly an issue of me having two game_menu screens, looking over my game_menu screen made me find the root issue.
My game_menu screen was set up like this:

screen game_menu(title="", scroll=viewport, yinitial=0.0)

 
and that's where the game was asking me to capitalize the viewport, so I did:

screen game_menu(title="", scroll=Viewport, yinitial=0.0)


and that fixed it. That was just the pointer I needed.
---------------------------------------------------------------------------------------------------
Now for my second problem: When trying to open the help menu window specifically using a controller, I am getting this 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/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 320, in renpy.display.render.render_for_size
  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 "game/01_high priority/01_controller_cdsl.rpy", line 808, in render
    self.reset_child()
    ~~~~~~~~~~~~~~~~^^
  File "game/01_high priority/01_controller_cdsl.rpy", line 791, in reset_child
    self.set_saved_icon()
    ~~~~~~~~~~~~~~~~~~~^^
  File "game/01_high priority/01_controller_cdsl.rpy", line 798, in set_saved_icon
    self.saved_icon = self.get_icon(self.suffix, self.icon_only)
                      ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "game/01_high priority/01_controller_cdsl.rpy", line 822, in get_icon
    event = pad_config.get_event(self.pad_event)
            ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
  File "game/backend/controller_support/controller_functions.rpy", line 121, in get_event
    events = persistent.pad_bindings[event]
             ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
KeyError: None
-- 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 306, in interact
    rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "renpy/display/core.py", line 2154, in interact
    repeat, rv = self.interact_core(
                 ~~~~~~~~~~~~~~~~~~^
        preloads=preloads,
        ^^^^^^^^^^^^^^^^^^
    ...<4 lines>...
        **kwargs,
        ^^^^^^^^^
    )
    ^
  File "renpy/display/core.py", line 2833, in interact_core
    self.draw_screen(root_widget, fullscreen_video, (not fullscreen_video) or video_frame_drawn)
    ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "renpy/display/core.py", line 1279, in draw_screen
    surftree = renpy.display.render.render_screen(
               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        root_widget,
        ^^^^^^^^^^^^
        renpy.config.screen_width,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^
        renpy.config.screen_height,
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
    )
    ^
  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/layout.py", line 896, in render
    surf = render(child, width, height, cst, cat)
           ~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  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/transition.py", line 375, in render
    top = render(self.new_widget, width, height, st, at)
          ~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  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/layout.py", line 896, in render
    surf = render(child, width, height, cst, cat)
           ~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  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/layout.py", line 896, in render
    surf = render(child, width, height, cst, cat)
           ~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  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/screen.py", line 767, in render
    child = renpy.display.render.render(self.child, w, h, st, at)
            ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
  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/layout.py", line 896, in render
    surf = render(child, width, height, cst, cat)
           ~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  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/layout.py", line 1444, in render
    surf = render(child, width - cxmargin - cxpadding, height - cymargin - cypadding, st, at)
           ~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  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/layout.py", line 1104, in render
    surf = render(d, rw, height - y, cst, cat)
           ~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  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/layout.py", line 1444, in render
    surf = render(child, width - cxmargin - cxpadding, height - cymargin - cypadding, st, at)
           ~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  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/layout.py", line 1955, in render
    cwidth, cheight = sizeit("c", width, height, 0, 0)
                      ~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "renpy/display/layout.py", line 1952, in sizeit
    rend = renpy.display.render.render_for_size(pos_d[pos], width, height, st, at)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "renpy/display/render.pyx", line 320, in renpy.display.render.render_for_size
  File "renpy/display/render.pyx", line 267, in renpy.display.render.render
  File "renpy/display/viewport.py", line 283, in render
    surf = renpy.display.render.render(self.child, child_width, child_height, st, at)
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  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/layout.py", line 1159, in render
    surf = render(d, width - x, rh, cst, cat)
           ~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  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/layout.py", line 1159, in render
    surf = render(d, width - x, rh, cst, cat)
           ~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  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/layout.py", line 1104, in render
    surf = render(d, rw, height - y, cst, cat)
           ~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  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 "game/01_high priority/01_controller_cdsl.rpy", line 808, in render
    self.reset_child()
    ~~~~~~~~~~~~~~~~^^
  File "game/01_high priority/01_controller_cdsl.rpy", line 791, in reset_child
    self.set_saved_icon()
    ~~~~~~~~~~~~~~~~~~~^^
  File "game/01_high priority/01_controller_cdsl.rpy", line 798, in set_saved_icon
    self.saved_icon = self.get_icon(self.suffix, self.icon_only)
                      ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "game/01_high priority/01_controller_cdsl.rpy", line 822, in get_icon
    event = pad_config.get_event(self.pad_event)
            ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^
  File "game/backend/controller_support/controller_functions.rpy", line 121, in get_event
    events = persistent.pad_bindings[event]
             ~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^
KeyError: None
 
This error notably does not appear when navigating to the help screen using mouse or keyboard, using these methods shows the help window just fine, it only throws this error when using a controller to try and open the help window. I should also note that I have the keybind images from the controller_ui folder visually displayed on the help screen, in case that might be relevant.

Hi, I have an issue - well, two issues, but I'm taking one at a time.

This first one is an error that pops up when I press the Escape key while in game:

I'm sorry, but an uncaught exception occurred.
While running game code:
NameError: name 'viewport' is not defined. Did you mean: 'Viewport'?
-- Full Traceback ------------------------------------------------------------
Traceback (most recent call last):
  File "renpy/common/00gamemenu.rpy", line 174, in script
    $ ui.interact()
  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/00gamemenu.rpy", line 174, in <module>
    $ ui.interact()
      ~~~~~~~~~~~^^
  File "renpy/ui.py", line 306, in interact
    rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "renpy/display/core.py", line 2154, in interact
    repeat, rv = self.interact_core(
                 ~~~~~~~~~~~~~~~~~~^
        preloads=preloads,
        ^^^^^^^^^^^^^^^^^^
    ...<4 lines>...
        **kwargs,
        ^^^^^^^^^
    )
    ^
  File "renpy/display/core.py", line 2700, 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 1 more time]
  File "renpy/display/screen.py", line 503, in visit_all
    callback(self)
    ~~~~~~~~^^^^^^
  File "renpy/display/core.py", line 2700, in <lambda>
    root_widget.visit_all(lambda d: d.per_interact())
                                    ~~~~~~~~~~~~~~^^ 
  File "renpy/display/screen.py", line 514, in per_interact
    self.update()
    ~~~~~~~~~~~^^
  File "renpy/display/screen.py", line 715, in update
    self.screen.function(**self.scope)
    ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "renpy/parameter.py", line 468, in apply_arguments
    return parameters.apply(args or (), kwargs or {}, ignore_errors)
           ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "renpy/parameter.py", line 401, in apply
    self.apply_defaults(arguments)
    ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^
  File "renpy/parameter.py", line 221, in apply_defaults
    val = param.default_value(locals=scope)
          ~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^
  File "renpy/parameter.py", line 58, in default_value
    return renpy.python.py_eval(self.default, locals=locals, globals=globals)
           ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "renpy/python.py", line 1305, in py_eval
    return py_eval_bytecode(code, globals, locals)
           ~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^
  File "renpy/python.py", line 1298, in py_eval_bytecode
    return eval(bytecode, globals, locals)
           ~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<none>", line 1, in <module>
NameError: name 'viewport' is not defined. Did you mean: 'Viewport'?
Windows-10-10.0.19045-SP0 AMD64
Ren'Py 8.5.2.26010301

I probably didn't set something up correctly somewhere, but I'm not exactly sure where. I could use a pointer on where I might have made a mistake.