VN Ren'Py Infinite Stars bug

Buletti

Well-Known Member
Nov 7, 2023
1,156
1,242
Since this section seems to be a bit free for all I just try my luck here as the dev does not seem to visit the VN threat any more.

Maybe anyone could lend me a hand with this?

Interesting developments so far :) Unfortunately this version is not running very stable for me.

I had some crashes while I went to the gym or medsec the first day. I could progress the story going to command.

Then on the planet we talked to Naaka. Now after this conversation I get this:

Code:
I'm sorry, but an uncaught exception occurred.

While running game code:
  File "game/src/controllers/Navigation.rpy", line 174, in <module>
  File "game/src/controllers/Navigation.rpy", line 58, in get_available_locations
  File "game/src/controllers/EventDispatcher.rpy", line 180, in get_events
  File "game/src/controllers/EventDispatcher.rpy", line 37, in check
  File "game/src/controllers/EventDispatcher.rpy", line 108, in eval
AttributeError: 'NPCStats' object has no attribute 'available'

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

Full traceback:
  File "src/story/script.rpyc", line 77, in script call
  File "src/controllers/Navigation.rpyc", line 174, in script
  File "/home/tillmann/Spiele/InfiniteStars-1.0425.0320p-linux/renpy/ast.py", line 827, in execute
    renpy.python.py_exec_bytecode(self.code.bytecode, self.hide, store=self.store)
  File "/home/tillmann/Spiele/InfiniteStars-1.0425.0320p-linux/renpy/python.py", line 1178, in py_exec_bytecode
    exec(bytecode, globals, locals)
  File "game/src/controllers/Navigation.rpy", line 174, in <module>
  File "game/src/controllers/Navigation.rpy", line 58, in get_available_locations
  File "game/src/controllers/EventDispatcher.rpy", line 180, in get_events
  File "game/src/controllers/EventDispatcher.rpy", line 37, in check
  File "game/src/controllers/EventDispatcher.rpy", line 108, in eval
  File "/home/tillmann/Spiele/InfiniteStars-1.0425.0320p-linux/renpy/python.py", line 1209, in py_eval
    return py_eval_bytecode(code, globals, locals)
  File "/home/tillmann/Spiele/InfiniteStars-1.0425.0320p-linux/renpy/python.py", line 1202, in py_eval_bytecode
    return eval(bytecode, globals, locals)
  File "<none>", line 1, in <module>
AttributeError: 'NPCStats' object has no attribute 'available'

Linux-6.11.0-19-generic-x86_64-with-glibc2.39 x86_64
Ren'Py 8.3.4.24120703
Infinite Stars 1.0425.0320p
Sat Mar 22 23:17:50 2025
I now have no way to advance as I have no choices to go back to.

It seems to have something to do with the NPCStats, but I have no idea how to change that.

Does any of you wizards out here a clue what to do now?

Help would be highly appreciated!

Cheers!
 

Winterfire

Forum Fanatic
Respected User
Game Developer
Sep 27, 2018
5,719
8,366
Check line 108 of controllers/EventDispatcher.rpy and NPCStats class.
Seems like a typo to me, check how "available" is usually used, perhaps it's a function? Either way, it doesn't have that attribute (or if it does, it's called something else).
 

Buletti

Well-Known Member
Nov 7, 2023
1,156
1,242
Check line 108 of controllers/EventDispatcher.rpy and NPCStats class.
Seems like a typo to me, check how "available" is usually used, perhaps it's a function? Either way, it doesn't have that attribute (or if it does, it's called something else).
Thx a lot for your reply my friend. I Work in IT, but as a sales Dude :D So unfortunately my abilities to do anything with code are nonexistend unless someone would Tell me exactly how to do it. Weirdly I seem to be the only Person with this issue as no one on the threat or itch or Patreon seems to have mentioned it.

Really weird stuff. This is the first VN where I run into this issue.
 

peterppp

Erect Member
Donor
Mar 5, 2020
954
1,775
Thx a lot for your reply my friend. I Work in IT, but as a sales Dude :D So unfortunately my abilities to do anything with code are nonexistend unless someone would Tell me exactly how to do it. Weirdly I seem to be the only Person with this issue as no one on the threat or itch or Patreon seems to have mentioned it.

Really weird stuff. This is the first VN where I run into this issue.
have you modified the game (like using a mod) or save in any way?
 
  • Like
Reactions: Buletti

Buletti

Well-Known Member
Nov 7, 2023
1,156
1,242
have you modified the game (like using a mod) or save in any way?
No, I just downloaded the new Update from the OP in the VNs thread and copied over my old Savefiles. I do that with all VNs and never had issues.
 

anne O'nymous

I'm not grumpy, I'm just coded that way.
Modder
Donor
Respected User
Jun 10, 2017
11,576
17,788
Seems like a typo to me, check how "available" is usually used, perhaps it's a function? Either way, it doesn't have that attribute (or if it does, it's called something else).
Methods are attributes, therefore it's not due to the way it's used.


No, I just downloaded the new Update from the OP in the VNs thread and copied over my old Savefiles. I do that with all VNs and never had issues.
95% chances that it's a save compatibility issue. Either the "available" attribute have been added with the new version, or it have been removed. It's, alas, more frequent than it should.
 

peterppp

Erect Member
Donor
Mar 5, 2020
954
1,775
95% chances that it's a save compatibility issue. Either the "available" attribute have been added with the new version, or it have been removed. It's, alas, more frequent than it should.
that was my guess. it looks like "available" may have been added late. and then there's that comment at the top that may be relevant
You don't have permission to view the spoiler content. Log in or register now.
 
  • Like
Reactions: Buletti

Buletti

Well-Known Member
Nov 7, 2023
1,156
1,242
are you using a very old save?
Man, that sucks.

No, the save I use is the end of the content from the last update.

A little annoying that the dev did not mention anything about saves not working in devlogs and also does not visit the threat anymore.

I also still find it weird that I seem to be the only one with this. I think this weekend I will try a save esrlier in the story and see what Happens. Thank you so much for your Help so far!!!
 

infinitestarsdev

Member
Game Developer
Jun 17, 2020
127
460
Man, that sucks.

No, the save I use is the end of the content from the last update.

A little annoying that the dev did not mention anything about saves not working in devlogs and also does not visit the threat anymore.

I also still find it weird that I seem to be the only one with this. I think this weekend I will try a save esrlier in the story and see what Happens. Thank you so much for your Help so far!!!
Hey, thanks for summoning me with the 'DM'
Yeah, unfortunately it's a save compatibility issue. :(

It's been a chaotic time, and it should absolutely have been mentioned.
You definitely aren't the only one with this issue.

I try to shy away from any save breaking updates, but sometimes they can't be helped. In this particular instance, we needed to add the 'available' attribute to prevent the game having logic issues, with you running into a crew member that shouldn't be available.

There shouldn't be any more future save breaking bugs, with the exception of one that might still be added when we start adding more content with LI's reacting to you, depending on if you cheated on them or not. (Like Veera wouldn't mind, she'll definitely tease you and try to fish who was the 'better stress relief' vs Lebeny who would probably have silent and private breakdown.
 
  • Like
Reactions: Buletti

anne O'nymous

I'm not grumpy, I'm just coded that way.
Modder
Donor
Respected User
Jun 10, 2017
11,576
17,788
I try to shy away from any save breaking updates, but sometimes they can't be helped. In this particular instance, we needed to add the 'available' attribute to prevent the game having logic issues, with you running into a crew member that shouldn't be available.
For the next time/game/whatever:
Python:
label after_load:
    python:
        for atom in [ whateverObject, whateverOtherObject, [...] ]:
            if not hasattr( atom, "available" ):
                setattr( atom, "available", WHATEVERDEFAULT )

    return
I heard that someone wrote a whole whatever the changes they made in the code. It could worth being read I guess.
 

infinitestarsdev

Member
Game Developer
Jun 17, 2020
127
460
For the next time/game/whatever:
Python:
label after_load:
    python:
        for atom in [ whateverObject, whateverOtherObject, [...] ]:
            if not hasattr( atom, "available" ):
                setattr( atom, "available", WHATEVERDEFAULT )

    return
I heard that someone wrote a whole whatever the changes they made in the code. It could worth being read I guess.
Thanks for this! Yeah! We already use most of these techniques.
I can definitely start using the start and after_load labels method, but alas, that would not have prevented this break.
I can get a bit more technical to explain, but each character like Lebeny and Khalil etc are a 'container' with all of their stats, and we had to 'recreate' that 'container' instead of just adding a new variable to the game.

... Thinking some more about, by using the start and after_load labels, I might have been able to prevent the bug by creating the container and then adding the change in an after_load thingy.

... Thought some more. Not sure if that would have worked. Would need to test.

Regardless, thank you for this. I'll definitely have a deeper look for future updates. <3
 
  • Like
Reactions: Buletti

anne O'nymous

I'm not grumpy, I'm just coded that way.
Modder
Donor
Respected User
Jun 10, 2017
11,576
17,788
I can get a bit more technical to explain, but each character like Lebeny and Khalil etc are a 'container' with all of their stats, and we had to 'recreate' that 'container' instead of just adding a new variable to the game.
Python:
label after_load:
    
    python:
        renpy.dynamic( "tmp" )

        for atom in [ list of the object NAMES ]:
            if isinstance( getattr( store, atom ), previousClass ):
                tmp = NPCSTATS( [...] )
                tmp.oneAttribute = getattr( store, atom ).oneAttribute
                [...]
                setattr( store, atom, tmp )
                # Or if all attributes can actually be passed through the /__init__/ magic method:
                #setattr( store, atom, NPCSTATS( gender=getattr( store, atom ).gender, relationship=getattr( store, atom ).relationship,  [...] ) )

    return
Not to be critical or whatever, but there isn't a pure Python change that can't be handled through the "after_load" label to keep the game compatible.
 
  • Like
Reactions: Buletti

Buletti

Well-Known Member
Nov 7, 2023
1,156
1,242
Thank you all for chiming in!

Looks like best for me is to start over then.

I raise my glass to everyone trying to help and appreciate a lot that the dev even stopped by.

Have a good weekend, all you nice people!