Ren'Py Question about RenPy save compatibility

anne O'nymous

I'm not grumpy, I'm just coded that way.
Modder
Respected User
Donor
Jun 10, 2017
10,131
14,810
Okay. I can't explain why it's working for you in 6.99.12.4... but it's not working for me.
Ren'py is easy, but also very capricious. Most of the time it's the explanation of the problem.
For some things, there's a really strict way to do it, and if you don't stay inside the lines, it will don't like it. The bad part being that it will not always complain, or at least not complain in the way you expect it to do. There's too few validation step in the code, which lead to silent errors or wrong error reports.
One of the most famous example is when you define the same label twice. If you don't activate the developer mode, Ren'py will just overwrite the first label (which depend of the order it will load the files). But if you activate the developer mode, it will complain... that the "_menu" label do not exist !!!!


Edit: ... and not for the first time, I'm an idiot...
If I add a genuinely new variable... it's fine.
If I add a variable that is already in the .rpa as a "default" too, it decides it doesn't need it - despite the fact that variable doesn't have a value either in the active program or the save file I loaded.
Yeah, default is an added statement to correct a problem (the fact that define don't make the variable savable). But to do this, it trick Ren'py itself, because the list of savable variables is reset when the game start.
So, the default statement create the variable and give it a value... but first it check if the variable name is in its own list of variable to add in the "save this variable" list. And that's where your problem happen. The name is already in the list, so default do nothing at all ; this while throwing an error would have been more useful.


I was trying to build it as a patched type archive, where someone unpacks a ZIP over the top of their existing installation to override the existing version. In real world logic and save files - it would have been fine.
It can works like this (that's how I mod), but only if you don't touch of the rpy/rpyc files of the game. Else you can have some issues.


Edit2: Or not. Different behaviour between 14.3 and 12.4. Even brand new variable aren't available in the older version. I officially give up.[/I]
There's difference in the behavior, but in 99% of the case, what's possible in an older version is still possible in the newer ones. And I know for sure that what you try should works with the 6.99.12.4. There's something you are missing, something related to the capricious side of Ren'py I talked about above. But honestly I don't see what it can be.
Personally, in these cases I restart from scratch, slowly adding layer until I reach the situation which don't works. So in your case, something like : starting by just your own code, adding just the part of the game you changed (which will be difficult), adding the whole code of the game, then putting it in a rpa archive.
Doing this you can more easily find what make Ren'py suddenly act as a brat, and so perhaps find a way to make it being a good boy again.