Mod Ren'Py Universal Ren'Py Mod / URM [2.5] (mod any Ren'Py game yourself)

5.00 star(s) 44 Votes

endoscopic

Newbie
Oct 7, 2018
55
100
hey man, thanks for this awesome mod! its pretty awesome how the newer versions now are able to detect and track paths, its such a great feature being able to rollback and check out alternate paths with your mod.
however i've just updated to using the 1.13.1 version, with this version i seem to have issues with rollback, my game tends to crash when i tried to roll back to select the other detected paths. This occurs with all games ive used with this version.
I've tried using the 1.12 version and this issue does not occur. Wondering if anyone else has this issue?
 

0x52

Ren'Py Magician
Modder
Donor
Game Developer
May 23, 2019
1,725
6,802
Android use help please
Please be more specific. To use this on Android you could use JoiPlay or use an Android port supporting mods.

hey man, thanks for this awesome mod! its pretty awesome how the newer versions now are able to detect and track paths, its such a great feature being able to rollback and check out alternate paths with your mod.
however i've just updated to using the 1.13.1 version, with this version i seem to have issues with rollback, my game tends to crash when i tried to roll back to select the other detected paths. This occurs with all games ive used with this version.
I've tried using the 1.12 version and this issue does not occur. Wondering if anyone else has this issue?
What is the error you get? Could you maybe share the "traceback.txt" file?
 

0x52

Ren'Py Magician
Modder
Donor
Game Developer
May 23, 2019
1,725
6,802
Important fix

I've just published 1.13.2. This fixes an issue where frozen variables could be erased when loading a save.

In more detail:
This only happened when the frozen variable has no default value and you loaded the save after you've already loaded another save or started a new game.

Thanks Belzeebub and Kata for reporting.
 

Kata

Newbie
Feb 17, 2017
68
871
If I understand correctly. URM says the updated has finished and you need to apply it? After applying you still have the old version and a .tmp file in the game folder?
Do you have this on a/some specific game(s) or on all games? Which platform are you on?
Yep, it'll say it's finished updating and reload the game, but it'll ask to update again. It's not really a big issue as I can just download the file from here, but it seems like something is preventing it from updating.

Windows, and I think it's there for most games. Updates are periodic so it's hard to remember exactly which games I was playing when trying to update, but I'm pretty sure it's only worked for me one time. I'm trying to remember what game that was exactly (it might have been Hard to Love or the Roommate). For pretty much every other game, I get the update loop.
 

jasad

Well-Known Member
Dec 14, 2021
1,207
912
View attachment 587373

Overview:
Easiest installation, open mod by pressing Alt+M

This mod is a great tool to cheat or debug Ren'Py games. See full Features list below for details.

Some features in short:
Find, change, freeze and monitor variables, detect hidden choices, detect paths, rename any character, find/save/replay scenes, watch variables, skip splashscreen

Updated: 2022-12-18
Game/Creator: Any Ren'Py game using Ren'Py engine 6.99.14 or newer
Modder: 0x52 -
Mod Version: 1.13.2

Features:
You don't have permission to view the spoiler content. Log in or register now.

Roadmap:
You don't have permission to view the spoiler content. Log in or register now.

Installation:
You don't have permission to view the spoiler content. Log in or register now.

Change-Log:
You don't have permission to view the spoiler content. Log in or register now.

After developing Ren'Py mods for almost a year now. I thought is was time to create the mod of all mods.
So here is what I call URM (or Universal Ren'Py Mod). The goal of this mod is to enable anyone (even without any programming knowledge) to be able to quickly and easily mod any Ren'Py game.
Just drop the mod file into your favorite game's "game" directory and start modding!

Please let me know what you think. I really appreciate any feedback, so I know I'm not doing this for nothing.
Or maybe consider supporting me or .

WARNING!
You could break your game modifying any variable. Use at your own risk!
Breaking the game depends on the game's programming. You could create set of values the game doesn't expect. Which for example could prevent you to progress in the game or miss certain scenes. I would recommend saving before modifying. So you could always go back if something unexpected happens.


Screenshots:
View attachment 1083993 View attachment 2227883 View attachment 1083995 View attachment 1083998 View attachment 1556197 View attachment 1084000 View attachment 1781739


You don't have permission to view the spoiler content. Log in or register now.

Download:
or Attachment below​
thx for the update~ ^_^
 

xtr3mx7

Member
Feb 10, 2019
304
314
Getting this error with the latest version 1.13.2:

Exception: Could not load image u'0x52/images/dialog.x52': error(u'Unsupported image format',)
 
Jan 21, 2021
158
191
found a bug in Rewind that makes the game throw an exception whenever you remember a variable and go to the variables tab. this happens for every single line of text, so clicking rollback or ignore has little to no effect

The following bug happened with the games first line of text after you click start

I'm sorry, but an uncaught exception occurred.

While running game code:
File "game/prologue.rpy", line 7, in script
r "Hey, I know you got things planned, but we need you to stay tonight. It's crunch."
File "renpy/common/00action_data.rpy", line 186, in SetLocalVariable
return SetDict(sys._getframe(1).f_locals, name, value)
AttributeError: 'ADVCharacter' object has no attribute '_getframe'

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

Full traceback:
File "game/prologue.rpy", line 7, in script
r "Hey, I know you got things planned, but we need you to stay tonight. It's crunch."
File "renpy/ast.py", line 921, in execute
renpy.exports.say(who, what, *args, **kwargs)
File "renpy/exports.py", line 1373, in say
who(what, *args, **kwargs)
File "renpy/character.py", line 1266, in __call__
self.do_display(who, what, cb_args=self.cb_args, dtt=dtt, **display_args)
File "renpy/character.py", line 930, in do_display
**display_args)
File "renpy/character.py", line 666, in display_say
rv = renpy.ui.interact(mouse='say', type=type, roll_forward=roll_forward)
File "renpy/ui.py", line 299, in interact
rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
File "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 "renpy/display/core.py", line 3810, in interact_core
root_widget.visit_all(lambda i : i.per_interact())
File "renpy/display/core.py", line 582, in visit_all
d.visit_all(callback, seen)
File "renpy/display/core.py", line 582, in visit_all
d.visit_all(callback, seen)
File "renpy/display/core.py", line 582, in visit_all
d.visit_all(callback, seen)
File "renpy/display/screen.py", line 451, in visit_all
callback(self)
File "renpy/display/core.py", line 3810, in <lambda>
root_widget.visit_all(lambda i : i.per_interact())
File "renpy/display/screen.py", line 462, in per_interact
self.update()
File "renpy/display/screen.py", line 653, in update
self.screen.function(**self.scope)
File "0x52/screens/main.rpy.x52", line 54, in execute
File "0x52/screens/main.rpy.x52", line 54, in execute
File "0x52/screens/main.rpy.x52", line 68, in execute
File "0x52/screens/main.rpy.x52", line 86, in execute
File "0x52/screens/main.rpy.x52", line 124, in execute
File "0x52/screens/main.rpy.x52", line 126, in execute
File "0x52/screens/main.rpy.x52", line 128, in execute
File "0x52/screens/main.rpy.x52", line 131, in execute
File "0x52/screens/vars.rpy.x52", line 5, in execute
File "0x52/screens/vars.rpy.x52", line 5, in execute
File "0x52/screens/vars.rpy.x52", line 19, in execute
File "0x52/screens/vars.rpy.x52", line 41, in execute
File "0x52/screens/vars.rpy.x52", line 51, in execute
File "0x52/screens/vars.rpy.x52", line 52, in execute
File "0x52/screens/vars.rpy.x52", line 53, in execute
File "0x52/screens/vars.rpy.x52", line 81, in execute
File "0x52/screens/vars.rpy.x52", line 84, in execute
File "0x52/screens/vars.rpy.x52", line 90, in execute
File "renpy/ast.py", line 342, in evaluate
value = renpy.python.py_eval(v, locals=scope)
File "renpy/python.py", line 1092, in py_eval
return py_eval_bytecode(code, globals, locals)
File "renpy/python.py", line 1085, in py_eval_bytecode
return eval(bytecode, globals, locals)
File "0x52/screens/vars.rpy.x52", line 90, in <module>
File "renpy/common/00action_data.rpy", line 186, in SetLocalVariable
return SetDict(sys._getframe(1).f_locals, name, value)
AttributeError: 'ADVCharacter' object has no attribute '_getframe'

Windows-10-10.0.19041 AMD64
Ren'Py 7.5.3.22090809
Rewind v0.3.0.5
Mon Dec 19 20:16:11 2022
 
  • Sad
Reactions: Belzeebub$

0x52

Ren'Py Magician
Modder
Donor
Game Developer
May 23, 2019
1,725
6,802
Sorry. I'm unable to reproduce this. Do you maybe have some other mods installed?

Yep, it'll say it's finished updating and reload the game, but it'll ask to update again. It's not really a big issue as I can just download the file from here, but it seems like something is preventing it from updating.

Windows, and I think it's there for most games. Updates are periodic so it's hard to remember exactly which games I was playing when trying to update, but I'm pretty sure it's only worked for me one time. I'm trying to remember what game that was exactly (it might have been Hard to Love or the Roommate). For pretty much every other game, I get the update loop.
Quite strange. Could it be your antivirus software?

Getting this error with the latest version 1.13.2:

Exception: Could not load image u'0x52/images/dialog.x52': error(u'Unsupported image format',)
Seems like your "0x52_URM.rpa" file is corrupt.

found a bug in Rewind that makes the game throw an exception whenever you remember a variable and go to the variables tab. this happens for every single line of text, so clicking rollback or ignore has little to no effect

The following bug happened with the games first line of text after you click start

I'm sorry, but an uncaught exception occurred.

While running game code:
File "game/prologue.rpy", line 7, in script
r "Hey, I know you got things planned, but we need you to stay tonight. It's crunch."
File "renpy/common/00action_data.rpy", line 186, in SetLocalVariable
return SetDict(sys._getframe(1).f_locals, name, value)
AttributeError: 'ADVCharacter' object has no attribute '_getframe'

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

Full traceback:
File "game/prologue.rpy", line 7, in script
r "Hey, I know you got things planned, but we need you to stay tonight. It's crunch."
File "renpy/ast.py", line 921, in execute
renpy.exports.say(who, what, *args, **kwargs)
File "renpy/exports.py", line 1373, in say
who(what, *args, **kwargs)
File "renpy/character.py", line 1266, in __call__
self.do_display(who, what, cb_args=self.cb_args, dtt=dtt, **display_args)
File "renpy/character.py", line 930, in do_display
**display_args)
File "renpy/character.py", line 666, in display_say
rv = renpy.ui.interact(mouse='say', type=type, roll_forward=roll_forward)
File "renpy/ui.py", line 299, in interact
rv = renpy.game.interface.interact(roll_forward=roll_forward, **kwargs)
File "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 "renpy/display/core.py", line 3810, in interact_core
root_widget.visit_all(lambda i : i.per_interact())
File "renpy/display/core.py", line 582, in visit_all
d.visit_all(callback, seen)
File "renpy/display/core.py", line 582, in visit_all
d.visit_all(callback, seen)
File "renpy/display/core.py", line 582, in visit_all
d.visit_all(callback, seen)
File "renpy/display/screen.py", line 451, in visit_all
callback(self)
File "renpy/display/core.py", line 3810, in <lambda>
root_widget.visit_all(lambda i : i.per_interact())
File "renpy/display/screen.py", line 462, in per_interact
self.update()
File "renpy/display/screen.py", line 653, in update
self.screen.function(**self.scope)
File "0x52/screens/main.rpy.x52", line 54, in execute
File "0x52/screens/main.rpy.x52", line 54, in execute
File "0x52/screens/main.rpy.x52", line 68, in execute
File "0x52/screens/main.rpy.x52", line 86, in execute
File "0x52/screens/main.rpy.x52", line 124, in execute
File "0x52/screens/main.rpy.x52", line 126, in execute
File "0x52/screens/main.rpy.x52", line 128, in execute
File "0x52/screens/main.rpy.x52", line 131, in execute
File "0x52/screens/vars.rpy.x52", line 5, in execute
File "0x52/screens/vars.rpy.x52", line 5, in execute
File "0x52/screens/vars.rpy.x52", line 19, in execute
File "0x52/screens/vars.rpy.x52", line 41, in execute
File "0x52/screens/vars.rpy.x52", line 51, in execute
File "0x52/screens/vars.rpy.x52", line 52, in execute
File "0x52/screens/vars.rpy.x52", line 53, in execute
File "0x52/screens/vars.rpy.x52", line 81, in execute
File "0x52/screens/vars.rpy.x52", line 84, in execute
File "0x52/screens/vars.rpy.x52", line 90, in execute
File "renpy/ast.py", line 342, in evaluate
value = renpy.python.py_eval(v, locals=scope)
File "renpy/python.py", line 1092, in py_eval
return py_eval_bytecode(code, globals, locals)
File "renpy/python.py", line 1085, in py_eval_bytecode
return eval(bytecode, globals, locals)
File "0x52/screens/vars.rpy.x52", line 90, in <module>
File "renpy/common/00action_data.rpy", line 186, in SetLocalVariable
return SetDict(sys._getframe(1).f_locals, name, value)
AttributeError: 'ADVCharacter' object has no attribute '_getframe'

Windows-10-10.0.19041 AMD64
Ren'Py 7.5.3.22090809
Rewind v0.3.0.5
Mon Dec 19 20:16:11 2022
See this:
Unfortunately this dev caused an issue within Ren'Py itself. I could only fix this by overruling Ren'Py's build-in function SetLocalVariable(), which I don't want to do.

I have a work-around for you:
  1. Open the file renpy/common/00action_data.rpy
  2. Find the line def SetLocalVariable(name, value): (line 161)
  3. Add a line bellow that one containing: import sys
You don't have permission to view the spoiler content. Log in or register now.

Details:
They assigned a character to the variable sys, which is a because it's use by Ren'Py internally.
Be doing this they broke a function inside Ren'Py that URM needs.
 

zerozip0

Member
May 23, 2018
387
626
I am experiencing several errors with renaming today. It happens both when trying to do it just after loading a save (CollegeBound), but I also get an error when starting fresh in a different vn where I wanted to change the mc's surname...
The issues seem to be different from each other:
You don't have permission to view the spoiler content. Log in or register now.
and
You don't have permission to view the spoiler content. Log in or register now.


Edit: I circumvented both by finding the variables I wanted to change manually.
 
Last edited:

0x52

Ren'Py Magician
Modder
Donor
Game Developer
May 23, 2019
1,725
6,802
It doesn't support the Suspicious game
Posting the error you're getting would be extremely helpful.
Anyhow... the error says "Incompatible Ren'Py version". You're not the first getting that, see this post about the same game:
From the traceback:
Code:
Exception: 0x52: Incompatible Ren'Py engine version
...
Ren'Py 6.99.13.2919
Suspicious 0.24

The game uses an old Ren'Py version that isn't supported by URM:
Here's a possible work-around:
I've did this on a few games and it worked without any problems.
You don't need to recompile. It's easier than that.
Download the renpy SDK zip ( )

Remove the game's 'lib' and 'renpy' directory.
Now unpack renpy sdk, and take the 'lib' and 'renpy' directory from there and put inside the game.
Also take the 'renpy.py', 'renpy.exe', 'renpy.sh' and put them there.

You can now start the game with the renpy.exe and URM should work.

If for some reason the game doesn't work, you could try using an earlier version of renpy.
Its rare but there are cases where renpy does some backwards incompatible changes.

Also, in case you want to rename renpy.exe to 'game_name.exe'.... you also need to rename the 'renpy.exe' inside the 'lib/windows' folder as it will try to find an .exe with the same name.
 
  • Like
Reactions: Belzeebub$

endoscopic

Newbie
Oct 7, 2018
55
100
Sorry. I'm unable to reproduce this. Do you maybe have some other mods installed?

nope, didnt use any other mods, happened in a few other games i tried as well but ive since switched to the 1.13.2 version and have not experienced it again so i guess whatever it was is now irrelevant :)

Thanks for your attention, just keep what you are doing, its awesome work dude! :love:
 
  • Like
Reactions: 0x52
May 21, 2022
218
570
Posting the error you're getting would be extremely helpful.
Anyhow... the error says "Incompatible Ren'Py version". You're not the first getting that, see this post about the same game:


Here's a possible work-around:
Posting the error you're getting would be extremely helpful.
Anyhow... the error says "Incompatible Ren'Py version". You're not the first getting that, see this post about the same game:


Here's a possible work-around:
Okay.I tried the fix nd it fifn't work.
 

TimHawk

Active Member
Dec 12, 2017
954
1,616
Hey 0x52 , would it be possible to add another variables tab and add a button to move variables between the 2 tabs, like 'move to tab A' and 'move to tab B' ? In big games it kinda becomes laggy when one exceeds all variables visible on 1 page. The optimal solution would be a browser like button but instead of "open a new tab" it would be "add another variables tab".

It would also make keeping track of variables much easier, especially given that most games take like 3-6 months for 1 update these days and whenever I play a new update, I've completely forgotten what any of those variables do, sorting them in different tabs ( maybe even allow for renaming the tabs ? ) sure would make it easier.

Awesome idea and execution, love URM !!!
 

0x52

Ren'Py Magician
Modder
Donor
Game Developer
May 23, 2019
1,725
6,802
Doesn't seem to work with Parasite Black
What exactly isn't working? Do you get an error?

Hey 0x52 , would it be possible to add another variables tab and add a button to move variables between the 2 tabs, like 'move to tab A' and 'move to tab B' ? In big games it kinda becomes laggy when one exceeds all variables visible on 1 page. The optimal solution would be a browser like button but instead of "open a new tab" it would be "add another variables tab".

It would also make keeping track of variables much easier, especially given that most games take like 3-6 months for 1 update these days and whenever I play a new update, I've completely forgotten what any of those variables do, sorting them in different tabs ( maybe even allow for renaming the tabs ? ) sure would make it easier.

Awesome idea and execution, love URM !!!
Creating variable groups is on the roadmap. I think that will help with this
 

wooody36

Member
Jul 9, 2017
142
49
What exactly isn't working? Do you get an error?


Creating variable groups is on the roadmap. I think that will help with this
At first yes, but then I realize it was an old version and I have the latest updated game so I solve that problem, but now I can't edit anything.
 
5.00 star(s) 44 Votes