Dreaded post-release exception bugs!

A place to discuss things that aren't specific to any one creator or game.
Forum rules
Ren'Py specific questions should be posted in the Ren'Py Questions and Annoucements forum, not here.
Message
Author
User avatar
AnnieTiamat
Regular
Posts: 50
Joined: Tue Dec 01, 2015 3:24 pm
Location: Seattle
Contact:

Dreaded post-release exception bugs!

#1 Post by AnnieTiamat » Fri Aug 19, 2022 4:50 pm

Hey folks - ages back I released a game, and in looking at it for a possible update, I was slammed by two bugs I had no idea how to fix, that never appeared in my own playthroughs.

#1 good ol "unsupported operand type(s) for +=: 'NoneType' and 'int'" (using the same scripting += I have dozens of times in the game with no issues

#2 dag-nasty "IOError: Couldn't find file '[NONSENSE]'" (and then CHAOS with rendering)

Looking through the clipboard output of each of these, I've no earthly idea what's causing them - my only advantage here is knowing how to trigger them. (And that ain't much)

I know the idea of helping sort through a codedump output is hardly exciting, but from what I can tell in searching for "unsupported operand" issues like this, there are solutions that seem easy, but a lot of posts like "NM I fixed it" or "do this" without showing HOW or WHY. If any kind soul is feeling up for helping me squash these bugs, I'm in your debt on the real!

User avatar
PyTom
Ren'Py Creator
Posts: 15892
Joined: Mon Feb 02, 2004 10:58 am
Completed: Moonlight Walks
Projects: Ren'Py
IRC Nick: renpytom
Github: renpytom
itch: renpytom
Location: Kings Park, NY
Contact:

Re: Dreaded post-release exception bugs!

#2 Post by PyTom » Fri Aug 19, 2022 6:38 pm

Can you post the tracebacks?
Supporting creators since 2004
(When was the last time you backed up your game?)
"Do good work." - Virgil Ivan "Gus" Grissom
"Silly and fun things are important." - Elon Musk
Software > Drama • https://www.patreon.com/renpytom

User avatar
AnnieTiamat
Regular
Posts: 50
Joined: Tue Dec 01, 2015 3:24 pm
Location: Seattle
Contact:

Re: Dreaded post-release exception bugs!

#3 Post by AnnieTiamat » Mon Aug 22, 2022 7:40 pm

I'm sorry, but an uncaught exception occurred.

While loading <'Twocolor' <'Image' '_theme_glow/gslider_thumb.png'> <Color #777777> <Color #777777> False>:
File "game/timer.rpy", line 162, in script
IOError: Couldn't find file '_theme_glow/gslider_thumb.png'.

-- Full Traceback ------------------------------------------------------------

Full traceback:
File "game/timer.rpy", line 162, in script
File "C:\Games\Passenger\The_Passenger-1.1-all\renpy\ast.py", line 1450, in execute
choice = renpy.exports.menu(choices, self.set)
File "C:\Games\Passenger\The_Passenger-1.1-all\renpy\exports.py", line 836, in menu
rv = renpy.store.menu(items)
File "C:\Games\Passenger\The_Passenger-1.1-all\renpy\exports.py", line 1023, in display_menu
rv = renpy.ui.interact(mouse='menu', type=type, roll_forward=roll_forward)
File "C:\Games\Passenger\The_Passenger-1.1-all\renpy\ui.py", line 278, in interact
rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
File "C:\Games\Passenger\The_Passenger-1.1-all\renpy\display\core.py", line 2496, in interact
repeat, rv = self.interact_core(preloads=preloads, **kwargs)
File "C:\Games\Passenger\The_Passenger-1.1-all\renpy\display\core.py", line 2850, in interact_core
self.draw_screen(root_widget, fullscreen_video, (not fullscreen_video) or video_frame_drawn)
File "C:\Games\Passenger\The_Passenger-1.1-all\renpy\display\core.py", line 1916, in draw_screen
renpy.config.screen_height,
File "renpy/display/render.pyx", line 416, in renpy.display.render.render_screen (gen\renpy.display.render.c:6685)
rv = render(root, width, height, 0, 0)
File "renpy/display/render.pyx", line 185, in renpy.display.render.render (gen\renpy.display.render.c:2857)
rv = d.render(widtho, heighto, st, at)
File "C:\Games\Passenger\The_Passenger-1.1-all\renpy\display\layout.py", line 661, in render
surf = render(child, width, height, cst, cat)
File "renpy/display/render.pyx", line 103, in renpy.display.render.render (gen\renpy.display.render.c:3319)
cpdef render(d, object widtho, object heighto, double st, double at):
File "renpy/display/render.pyx", line 185, in renpy.display.render.render (gen\renpy.display.render.c:2857)
rv = d.render(widtho, heighto, st, at)
File "C:\Games\Passenger\The_Passenger-1.1-all\renpy\display\layout.py", line 661, in render
surf = render(child, width, height, cst, cat)
File "renpy/display/render.pyx", line 103, in renpy.display.render.render (gen\renpy.display.render.c:3319)
cpdef render(d, object widtho, object heighto, double st, double at):
File "renpy/display/render.pyx", line 185, in renpy.display.render.render (gen\renpy.display.render.c:2857)
rv = d.render(widtho, heighto, st, at)
File "C:\Games\Passenger\The_Passenger-1.1-all\renpy\display\layout.py", line 661, in render
surf = render(child, width, height, cst, cat)
File "renpy/display/render.pyx", line 103, in renpy.display.render.render (gen\renpy.display.render.c:3319)
cpdef render(d, object widtho, object heighto, double st, double at):
File "renpy/display/render.pyx", line 185, in renpy.display.render.render (gen\renpy.display.render.c:2857)
rv = d.render(widtho, heighto, st, at)
File "C:\Games\Passenger\The_Passenger-1.1-all\renpy\display\screen.py", line 618, in render
child = renpy.display.render.render(self.child, w, h, st, at)
File "renpy/display/render.pyx", line 103, in renpy.display.render.render (gen\renpy.display.render.c:3319)
cpdef render(d, object widtho, object heighto, double st, double at):
File "renpy/display/render.pyx", line 185, in renpy.display.render.render (gen\renpy.display.render.c:2857)
rv = d.render(widtho, heighto, st, at)
File "C:\Games\Passenger\The_Passenger-1.1-all\renpy\display\layout.py", line 661, in render
surf = render(child, width, height, cst, cat)
File "renpy/display/render.pyx", line 103, in renpy.display.render.render (gen\renpy.display.render.c:3319)
cpdef render(d, object widtho, object heighto, double st, double at):
File "renpy/display/render.pyx", line 185, in renpy.display.render.render (gen\renpy.display.render.c:2857)
rv = d.render(widtho, heighto, st, at)
File "renpy/display/accelerator.pyx", line 108, in renpy.display.accelerator.transform_render (gen\renpy.display.accelerator.c:2027)
cr = render(child, widtho, heighto, st - self.child_st_base, at)
File "renpy/display/render.pyx", line 185, in renpy.display.render.render (gen\renpy.display.render.c:2857)
rv = d.render(widtho, heighto, st, at)
File "C:\Games\Passenger\The_Passenger-1.1-all\renpy\display\behavior.py", line 1614, in render
thumb = render(self.style.thumb, thumb_dim, height, st, at)
File "renpy/display/render.pyx", line 103, in renpy.display.render.render (gen\renpy.display.render.c:3319)
cpdef render(d, object widtho, object heighto, double st, double at):
File "renpy/display/render.pyx", line 185, in renpy.display.render.render (gen\renpy.display.render.c:2857)
rv = d.render(widtho, heighto, st, at)
File "C:\Games\Passenger\The_Passenger-1.1-all\renpy\display\im.py", line 478, in render
im = cache.get(self)
File "C:\Games\Passenger\The_Passenger-1.1-all\renpy\display\im.py", line 200, in get
surf = image.load()
File "C:\Games\Passenger\The_Passenger-1.1-all\renpy\display\im.py", line 987, in load
surf = cache.get(self.image)
File "C:\Games\Passenger\The_Passenger-1.1-all\renpy\display\im.py", line 200, in get
surf = image.load()
File "C:\Games\Passenger\The_Passenger-1.1-all\renpy\display\im.py", line 529, in load
surf = renpy.display.pgrender.load_image(renpy.loader.load(self.filename), self.filename)
File "C:\Games\Passenger\The_Passenger-1.1-all\renpy\loader.py", line 536, in load
raise IOError("Couldn't find file '%s'." % name)
IOError: Couldn't find file '_theme_glow/gslider_thumb.png'.

Windows-8-6.2.9200
Ren'Py 6.99.11.1749
The Passenger 1.1

User avatar
AnnieTiamat
Regular
Posts: 50
Joined: Tue Dec 01, 2015 3:24 pm
Location: Seattle
Contact:

Re: Dreaded post-release exception bugs!

#4 Post by AnnieTiamat » Mon Aug 22, 2022 7:40 pm

That's the main one, I'll ferret out the other.

User avatar
Imperf3kt
Lemma-Class Veteran
Posts: 3632
Joined: Mon Dec 14, 2015 5:05 am
Location: Your monitor
Contact:

Re: Dreaded post-release exception bugs!

#5 Post by Imperf3kt » Mon Aug 22, 2022 10:27 pm

Have you asked them to download it again, maybe their download got corrupted, that's what this looks like to me.
Warning: May contain trace amounts of gratuitous plot.
pro·gram·mer (noun) An organism capable of converting caffeine into code.

Current project: GGD Mentor
Free Android GUI - Updated occasionally
Twitter
Imperf3kt Blackjack - a WIP blackjack game for Android made using Ren'Py

User avatar
PyTom
Ren'Py Creator
Posts: 15892
Joined: Mon Feb 02, 2004 10:58 am
Completed: Moonlight Walks
Projects: Ren'Py
IRC Nick: renpytom
Github: renpytom
itch: renpytom
Location: Kings Park, NY
Contact:

Re: Dreaded post-release exception bugs!

#6 Post by PyTom » Tue Aug 23, 2022 9:26 am

Theme_glow doesn't exist in a released game by default. You can add the theme data back with:

Code: Select all

define build.include_old_themes = True
Supporting creators since 2004
(When was the last time you backed up your game?)
"Do good work." - Virgil Ivan "Gus" Grissom
"Silly and fun things are important." - Elon Musk
Software > Drama • https://www.patreon.com/renpytom

User avatar
AnnieTiamat
Regular
Posts: 50
Joined: Tue Dec 01, 2015 3:24 pm
Location: Seattle
Contact:

Re: Dreaded post-release exception bugs!

#7 Post by AnnieTiamat » Tue Aug 23, 2022 3:35 pm

Oh cool! Also, odd that popped up... I made this a while back but I don't recall it being that long since editions, but eyyyy I am ok with being wrong! :D

Whereabouts should I add that line?

User avatar
Imperf3kt
Lemma-Class Veteran
Posts: 3632
Joined: Mon Dec 14, 2015 5:05 am
Location: Your monitor
Contact:

Re: Dreaded post-release exception bugs!

#8 Post by Imperf3kt » Tue Aug 23, 2022 7:26 pm

Add it anywhere as long as it isn't indented or inside another block.

I'd suggest just dump it at the end of options.rpy or somewhere in there (don't forget to add a comment so you know what it does for future reference)
Warning: May contain trace amounts of gratuitous plot.
pro·gram·mer (noun) An organism capable of converting caffeine into code.

Current project: GGD Mentor
Free Android GUI - Updated occasionally
Twitter
Imperf3kt Blackjack - a WIP blackjack game for Android made using Ren'Py

User avatar
AnnieTiamat
Regular
Posts: 50
Joined: Tue Dec 01, 2015 3:24 pm
Location: Seattle
Contact:

Re: Dreaded post-release exception bugs!

#9 Post by AnnieTiamat » Wed Sep 21, 2022 12:50 am

Weird - put it at the end of options and got this:

```
I'm sorry, but errors were detected in your script. Please correct the
errors listed below, and try again.


File "game/options.rpy", line 508: invalid syntax
define build.include_old_themes = True
^


Ren'Py Version: Ren'Py 8.0.3.22090809
Tue Sep 20 21:49:22 2022
```

User avatar
AnnieTiamat
Regular
Posts: 50
Joined: Tue Dec 01, 2015 3:24 pm
Location: Seattle
Contact:

Re: Dreaded post-release exception bugs!

#10 Post by AnnieTiamat » Wed Sep 21, 2022 12:55 am

Whew, got another issue - good news is I managed to fix the previous ones, bad news is this jerk popped up again:

I'm sorry, but an uncaught exception occurred.

While running game code:
File "game/endings.rpy", line 1118, in <module>
TypeError: unsupported operand type(s) for +=: 'NoneType' and 'int'

-- Full Traceback ------------------------------------------------------------

Full traceback:
File "game/script.rpyc", line 2707, in script call

File "game/endings.rpyc", line 1118, in script
File "renpy/ast.py", line 928, in execute
renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
File "renpy/python.py", line 2245, in py_exec_bytecode
exec(bytecode, globals, locals)
File "game/endings.rpy", line 1118, in <module>
TypeError: unsupported operand type(s) for +=: 'NoneType' and 'int'

Windows-10-10.0.22000
Ren'Py 7.4.11.2266
The Passenger 1.2
Wed Sep 21 12:02:47 2022

User avatar
PyTom
Ren'Py Creator
Posts: 15892
Joined: Mon Feb 02, 2004 10:58 am
Completed: Moonlight Walks
Projects: Ren'Py
IRC Nick: renpytom
Github: renpytom
itch: renpytom
Location: Kings Park, NY
Contact:

Re: Dreaded post-release exception bugs!

#11 Post by PyTom » Thu Sep 22, 2022 9:39 am

That doesn't look like an issue with Ren'Py. What is line 1118 of endings.rpy? Are the variables there set all the time?
Supporting creators since 2004
(When was the last time you backed up your game?)
"Do good work." - Virgil Ivan "Gus" Grissom
"Silly and fun things are important." - Elon Musk
Software > Drama • https://www.patreon.com/renpytom

User avatar
AnnieTiamat
Regular
Posts: 50
Joined: Tue Dec 01, 2015 3:24 pm
Location: Seattle
Contact:

Re: Dreaded post-release exception bugs!

#12 Post by AnnieTiamat » Thu Sep 22, 2022 12:28 pm

Code: Select all

[i]scene black
    with fade_slow

    if not persistent.end_19:
        $ persistent.end_19 = True
        $ achievement.grant("ACH_END_19")
        $ persistent.end_any += 1
        jump end_check
    else:
        jump end_check[/i]

The "persistent.end_any +=1" is the line what offends. But that's kind of bonkers because 1) that kind of behavior happens EVERYWHERE and 2) it doesn't break in the slightest when running it in RenPy, only in the resulting build.

User avatar
PyTom
Ren'Py Creator
Posts: 15892
Joined: Mon Feb 02, 2004 10:58 am
Completed: Moonlight Walks
Projects: Ren'Py
IRC Nick: renpytom
Github: renpytom
itch: renpytom
Location: Kings Park, NY
Contact:

Re: Dreaded post-release exception bugs!

#13 Post by PyTom » Fri Sep 23, 2022 1:18 am

So, the problem is on a new game, the persistent file is empty. When you do:

Code: Select all

        $ persistent.end_any += 1
it's None, so you can't add to it. You could repeat the problem locally by using the launcher to delete persistent.

What you probably want is a line:

Code: Select all

default persistent.end_any = 0
To initialize it to 0, which should fix things.
Supporting creators since 2004
(When was the last time you backed up your game?)
"Do good work." - Virgil Ivan "Gus" Grissom
"Silly and fun things are important." - Elon Musk
Software > Drama • https://www.patreon.com/renpytom

User avatar
AnnieTiamat
Regular
Posts: 50
Joined: Tue Dec 01, 2015 3:24 pm
Location: Seattle
Contact:

Re: Dreaded post-release exception bugs!

#14 Post by AnnieTiamat » Fri Sep 23, 2022 12:07 pm

AHA! That would make a difference for real... I thought the persistents didn't need to be initialized in the same way.
I have a file that loads all the triggers at the start, I imagine I should hit up the "default persistent.end_any = 0" then, and it wouldn't rewrite it on each restart...?

User avatar
AnnieTiamat
Regular
Posts: 50
Joined: Tue Dec 01, 2015 3:24 pm
Location: Seattle
Contact:

Re: Dreaded post-release exception bugs!

#15 Post by AnnieTiamat » Fri Sep 23, 2022 3:27 pm

OK. Yeesh this has become a saga.

I have the "define build.include_old_themes = True" in screens. I have my 000_variables file properly dropping the "default persistent(blah) = False" to round things off.

Now I have this fun fun fun error when I try to start:

Code: Select all

I'm sorry, but an uncaught exception occurred.

While running game code:
  File "game/screens.rpy", line 1593, in script
    init +1 python:
  File "game/screens.rpy", line 1593, in script
    init +1 python:
  File "game/screens.rpy", line 1596, in <module>
    renpy.image (filter(str.isalnum, atlas_item) + "_text", Text("[atlas_item]",xalign=0.4,yalign=0.85,size=30,color="#bfbfbf"))
TypeError: unsupported operand type(s) for +: 'filter' and 'str'

-- Full Traceback ------------------------------------------------------------

Full traceback:
  File "C:\Design\RenPy\renpy-8.0.3-sdk\renpy-8.0.3-sdk\renpy-8.0.3-sdk\renpy\bootstrap.py", line 277, in bootstrap
    renpy.main.main()
  File "C:\Design\RenPy\renpy-8.0.3-sdk\renpy-8.0.3-sdk\renpy-8.0.3-sdk\renpy\main.py", line 558, in main
    renpy.game.context().run(node)
  File "game/screens.rpy", line 1593, in script
    init +1 python:
  File "/home/tom/ab/renpy-build/tmp/install.linux-x86_64/lib/python3.9/site-packages/future/utils/__init__.py", line 441, in raise_
  File "game/screens.rpy", line 1593, in script
    init +1 python:
  File "C:\Design\RenPy\renpy-8.0.3-sdk\renpy-8.0.3-sdk\renpy-8.0.3-sdk\renpy\ast.py", line 1131, in execute
    renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
  File "C:\Design\RenPy\renpy-8.0.3-sdk\renpy-8.0.3-sdk\renpy-8.0.3-sdk\renpy\python.py", line 1061, in py_exec_bytecode
    exec(bytecode, globals, locals)
  File "game/screens.rpy", line 1596, in <module>
    renpy.image (filter(str.isalnum, atlas_item) + "_text", Text("[atlas_item]",xalign=0.4,yalign=0.85,size=30,color="#bfbfbf"))
TypeError: unsupported operand type(s) for +: 'filter' and 'str'

Windows-10-10.0.22000 AMD64
Ren'Py 8.0.3.22090809
The Passenger 1.21
Fri Sep 23 12:24:35 2022
The offending chunk of lines in screens.rpy:

Code: Select all

init +1 python:
    # Here is where the idle and hover text overlays are created.  This will show whatever string is used in the atlas_gallery_items.
    for atlas_item in atlas_gallery_items:
        renpy.image (filter(str.isalnum, atlas_item) + "_text", Text("[atlas_item]",xalign=0.4,yalign=0.85,size=30,color="#bfbfbf"))
        renpy.image (filter(str.isalnum, atlas_item) + "_text_hover", Text("[atlas_item]",xalign=0.4,yalign=0.85,size=30,color="#ffffff"))

Post Reply

Who is online

Users browsing this forum: No registered users