I have encountered an issue in the latest version of my game where if a user attempts to load certain save files from an older version, an exception occurs. It seems to happen at many points throughout the game, particularly later in the game, although it does not occur 100% of the time. When it does not occur, the user is placed at a slightly earlier part of the game. This point seems to be consistent for that section of the game, and saves that are created far enough away from that stable point are the ones that seem to crash. After doing some reading, it is my understanding that this rollback is a feature that was implemented expressly to maintain more saves from previous versions. Is this true?
As far as the actual error goes, the actual script does not seem to be changed between versions at the points where the load error is occurring, leading me to believe something different might be the cause. I am not personally that experienced with Ren'Py so I was hoping that one amongst you may be able to give me a hint at what might be causing these issues or give me a hint on how to create more of these "stable points" throughout the game so as to allow players to load their save files without crashing the VN. Any other advice would be more than welcome as well!
Here is the traceback.txt it provides every time, regardless of where in the game the issue occurs:
Code: Select all
I'm sorry, but an uncaught exception occurred.
While running game code:
File "renpy/common/00action_file.rpy", line 463, in __call__
renpy.load(fn)
Exception: Couldn't find a place to stop rolling back. Perhaps the script changed in an incompatible way?
-- Full Traceback ------------------------------------------------------------
Full traceback:
File "renpy/common/_layout/screen_main_menu.rpym", line 28, in script
python hide:
File "E:\Erodev\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 "E:\Erodev\renpy-8.0.3-sdk\renpy\python.py", line 1061, 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 "E:\Erodev\renpy-8.0.3-sdk\renpy\ui.py", line 299, in interact
rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
File "E:\Erodev\renpy-8.0.3-sdk\renpy\display\core.py", line 3377, in interact
repeat, rv = self.interact_core(preloads=preloads, trans_pause=trans_pause, pause=pause, pause_start=pause_start, pause_modal=pause_modal, **kwargs) # type: ignore
File "E:\Erodev\renpy-8.0.3-sdk\renpy\display\core.py", line 4258, in interact_core
rv = root_widget.event(ev, x, y, 0)
File "E:\Erodev\renpy-8.0.3-sdk\renpy\display\layout.py", line 1175, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "E:\Erodev\renpy-8.0.3-sdk\renpy\display\transition.py", line 53, in event
return self.new_widget.event(ev, x, y, st) # E1101
File "E:\Erodev\renpy-8.0.3-sdk\renpy\display\layout.py", line 1175, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "E:\Erodev\renpy-8.0.3-sdk\renpy\display\layout.py", line 1175, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "E:\Erodev\renpy-8.0.3-sdk\renpy\display\screen.py", line 743, in event
rv = self.child.event(ev, x, y, st)
File "E:\Erodev\renpy-8.0.3-sdk\renpy\display\layout.py", line 1175, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "E:\Erodev\renpy-8.0.3-sdk\renpy\display\layout.py", line 1175, in event
rv = i.event(ev, x - xo, y - yo, cst)
File "E:\Erodev\renpy-8.0.3-sdk\renpy\display\layout.py", line 279, in event
rv = d.event(ev, x - xo, y - yo, st)
File "E:\Erodev\renpy-8.0.3-sdk\renpy\display\behavior.py", line 1073, in event
return handle_click(self.clicked)
File "E:\Erodev\renpy-8.0.3-sdk\renpy\display\behavior.py", line 1008, in handle_click
rv = run(action)
File "E:\Erodev\renpy-8.0.3-sdk\renpy\display\behavior.py", line 329, in run
return action(*args, **kwargs)
File "renpy/common/00action_file.rpy", line 463, in __call__
renpy.load(fn)
File "E:\Erodev\renpy-8.0.3-sdk\renpy\loadsave.py", line 769, in load
log.unfreeze(roots, label="_after_load")
File "E:\Erodev\renpy-8.0.3-sdk\renpy\rollback.py", line 1078, in unfreeze
self.rollback(0, force=True, label=label, greedy=greedy, on_load=True)
File "E:\Erodev\renpy-8.0.3-sdk\renpy\rollback.py", line 889, in rollback
self.load_failed()
File "E:\Erodev\renpy-8.0.3-sdk\renpy\rollback.py", line 807, in load_failed
raise Exception("Couldn't find a place to stop rolling back. Perhaps the script changed in an incompatible way?")
Exception: Couldn't find a place to stop rolling back. Perhaps the script changed in an incompatible way?
Windows-10-10.0.19045 AMD64
Ren'Py 8.0.3.22090809
Sun Nov 20 19:24:33 2022