Create and Fuck your AI Slut -70% OFF
x

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

5.00 star(s) 49 Votes

shmurfer

Engaged Member
Dec 29, 2019
3,079
4,729
387
Is it possible to have an option for a simplified codepath? I don't like the intelligent codepath introudced in 2.3 with several lines of code for a choice instead of displaying characterlove = +1 or something like that, way easier to parse through each choice that way. If there is a way to make it simpler I can't figure it out. 0x52

View attachment 4779117
I think the problem here would be defining what a simplified code path should look like. Not every VN uses affection systems, including the big one DDLC (pretty sure at least. Linear and purely choice based game).

Personally I'd love an easier way to open up the file containing the code, but I don't know how feasible things like that are, Like does the code still display even if it's in a .rpyc that I wouldn't be able to open?
 

Tiur

Well-Known Member
Nov 13, 2021
1,317
3,669
398
Is it possible to have an option for a simplified codepath? I don't like the intelligent codepath introudced in 2.3 with several lines of code for a choice instead of displaying characterlove = +1 or something like that, way easier to parse through each choice that way. If there is a way to make it simpler I can't figure it out. 0x52

View attachment 4779117
That's as simplified as that particular game's code is going to be able to manage. Automated tools like URM are going to need to have a specific criteria for what they include or don't include, and since every game dev may do their game's important variables completely differently, URM's trying to do its best to show you what appears to it to be relevant. If you have ideas for specific filters/criteria for what shouldn't be considered relevant, call those out.

You mentioned wanting to see simpler readouts like "characterlove +1" in the code view, but the choice in the game above didn't change that kind of variable. It used that kind of variable as a branching condition instead, which determines the result stored in the string var [girl]_relationship instead (and on one branch, unlocks a gallery scene in persistent, unlocks an achievement, and increments the game's harem size counter). So should it not include string variables? Should it not include the harem size counter variable? How does URM know that the haremcount variable isn't a girl relationship variable? On top of that, variable names are almost infinitely variable, completely up to the dev, and can be almost anything. If the dev wanted to (though I pray they don't), these variables could have been quite literally all gibberish, and it would work the same as long as they were used consistently.

Lastly, other people might have different opinions about what variables are relevant; for instance, someone who doesn't care about 100% completion seeing the above code summary wouldn't care about seeing the persistent.g_iris_02a gallery unlock variable or the unlock_achievement call or not, but people who do care about 100% completion very much want to see those to know which choice leads to the sex scene/unlock and which doesn't.

(Oh, and just as an example of how weird a dev can get with variable names if they really want to, this is a real character definition class from a real game:
1745614672959.png
 

shmurfer

Engaged Member
Dec 29, 2019
3,079
4,729
387
That's as simplified as that particular game's code is going to be able to manage. Automated tools like URM are going to need to have a specific criteria for what they include or don't include, and since every game dev may do their game's important variables completely differently, URM's trying to do its best to show you what appears to it to be relevant. If you have ideas for specific filters/criteria for what shouldn't be considered relevant, call those out.

You mentioned wanting to see simpler readouts like "characterlove +1" in the code view, but the choice in the game above didn't change that kind of variable. It used that kind of variable as a branching condition instead, which determines the result stored in the string var [girl]_relationship instead (and on one branch, unlocks a gallery scene in persistent, unlocks an achievement, and increments the game's harem size counter). So should it not include string variables? Should it not include the harem size counter variable? How does URM know that the haremcount variable isn't a girl relationship variable? On top of that, variable names are almost infinitely variable, completely up to the dev, and can be almost anything. If the dev wanted to (though I pray they don't), these variables could have been quite literally all gibberish, and it would work the same as long as they were used consistently.

Lastly, other people might have different opinions about what variables are relevant; for instance, someone who doesn't care about 100% completion seeing the above code summary wouldn't care about seeing the persistent.g_iris_02a gallery unlock variable or the unlock_achievement call or not, but people who do care about 100% completion very much want to see those to know which choice leads to the sex scene/unlock and which doesn't.

(Oh, and just as an example of how weird a dev can get with variable names if they really want to, this is a real character definition class from a real game:
View attachment 4779183
What a coward, won't commit with the method names.
 
  • Haha
Reactions: 0x52

aribba32

Member
Dec 6, 2021
139
419
186
That's as simplified as that particular game's code is going to be able to manage. Automated tools like URM are going to need to have a specific criteria for what they include or don't include, and since every game dev may do their game's important variables completely differently, URM's trying to do its best to show you what appears to it to be relevant. If you have ideas for specific filters/criteria for what shouldn't be considered relevant, call those out.

You mentioned wanting to see simpler readouts like "characterlove +1" in the code view, but the choice in the game above didn't change that kind of variable. It used that kind of variable as a branching condition instead, which determines the result stored in the string var [girl]_relationship instead (and on one branch, unlocks a gallery scene in persistent, unlocks an achievement, and increments the game's harem size counter). So should it not include string variables? Should it not include the harem size counter variable? How does URM know that the haremcount variable isn't a girl relationship variable? On top of that, variable names are almost infinitely variable, completely up to the dev, and can be almost anything. If the dev wanted to (though I pray they don't), these variables could have been quite literally all gibberish, and it would work the same as long as they were used consistently.

Lastly, other people might have different opinions about what variables are relevant; for instance, someone who doesn't care about 100% completion seeing the above code summary wouldn't care about seeing the persistent.g_iris_02a gallery unlock variable or the unlock_achievement call or not, but people who do care about 100% completion very much want to see those to know which choice leads to the sex scene/unlock and which doesn't.

(Oh, and just as an example of how weird a dev can get with variable names if they really want to, this is a real character definition class from a real game:
View attachment 4779183
I understand your argument but this is what it looks like on a pre-2.3 version. Perhaps this wasn't the best game to show this example but I feel there is a middle ground, no? Even cutting out all the #Some dialogue would make it much more legible. I haven't struggled understanding my decisions on most any game with any version of URM, until now. Also look at another example below, the codepath shown is only half of how long it actually is! I would just revert back to an old version but the ignore variable option was introduced in 2.5 and now my saves in this game wont work with older versions of URM.

1745615745893.png
1745616125957.png
 
Last edited:

shmurfer

Engaged Member
Dec 29, 2019
3,079
4,729
387
I understand your argument but this is what it looks like on a pre-2.3 version. Perhaps this wasn't the best game to show this example but I feel there is a middle ground, no? Even cutting out all the #Some dialogue would make it much more legible. I haven't struggled understanding my decisions on most any game with any version of URM, until now. Also look at another example below, the codepath shown is only half of how long it actually is! I would just revert back to an old version but the ignore variable option was introduced in 2.5 and now my saves in this game wont work with older versions of URM.

View attachment 4779224
View attachment 4779234
I'd be tempted to blame the game, normally it's nowhere that bad.
 

aribba32

Member
Dec 6, 2021
139
419
186
i find it massively helpful to know what i get into when i make a choice and what effects them
I don't disagree that it can be helpful, but it can also be a hindrance. It would be cool to continue having the new features as URM gets updated with an option for the same codepaths we had pre 2.3.
 

Tiur

Well-Known Member
Nov 13, 2021
1,317
3,669
398
I understand your argument but this is what it looks like on a pre-2.3 version. Perhaps this wasn't the best game to show this example but I feel there is a middle ground, no? Even cutting out all the #Some dialogue would make it much more legible. I haven't struggled understanding my decisions on most any game with any version of URM, until now. Also look at another example below, the codepath shown is only half of how long it actually is! I would just revert back to an old version but the ignore variable option was introduced in 2.5 and now my saves in this game wont work with older versions of URM.

View attachment 4779224
View attachment 4779234
With all of the conditionals in the current-URM example, the older version of URM is not giving you accurate or complete information for this game particularly.

This also came up because a lot of people complained about missing choice consequences that were being hidden behind a jump, or below other code blocks, which is how the new implementation came about.

For instance, your example of the older version says nothing about whether that choice affects any other variables (and I'm positive that it does).

If the older format was used for the second choice, all it would say is: lea_hug == True. Nothing else. It wouldn't even mention lea_relationship at all, since that's behind a conditional statement (and the current implementation in URM even tells you whether that condition is met), but the more detailed version lets us know what the conditions for it are.

What you're asking for is providing less information, and providing less-accurate information.
 

Silwith

Active Member
Jan 27, 2021
701
1,341
266
So, is there a way to scroll left to right or anything? Because some games now do a "phone resolution" and this happens if I try to use URM there... :x

1745679242489.png
 

downtoo2015

Member
Sep 21, 2022
154
133
157
I have an issue with the game The Renaissance (https://f95zone.to/threads/the-renaissance-v0-35-miron-hfg.170707).
URM doesn't detect the IF conditions.

Code:
    if persistent.lang == "english":
        menu:
            "Letting the slave cum in Oscar's mouth." if True:
                $ fmc_bi_cuckold = True
            "Stop the slave from cumming and kick him out" if True:
                pass
    elif persistent.lang == "russian":
        menu:
            "Позволить рабу кончить в рот Оскара" if True:
                $ fmc_bi_cuckold = True
            "Запретить рабу кончать и выгнать его" if True:
                pass

    scene scene_120_09
    with Dissolve (1.0)

    e_narrator "After falling exhausted on the bed, [fmcName] looked at the slave and said"
    narrator "Обессилено упав на кровать, [fmcName] посмотрела на раба и приказала"

    if fmc_bi_cuckold:
        e_fmc "Take off the condom and cum in that worm's mouth."
        fmc "Снимай презе
 

Boehser Onkel

Forum Fanatic
Modder
Feb 20, 2021
4,878
8,731
592
I have an issue with the game The Renaissance (https://f95zone.to/threads/the-renaissance-v0-35-miron-hfg.170707).
URM doesn't detect the IF conditions.

Code:
    if persistent.lang == "english":
        menu:
            "Letting the slave cum in Oscar's mouth." if True:
                $ fmc_bi_cuckold = True
            "Stop the slave from cumming and kick him out" if True:
                pass
    elif persistent.lang == "russian":
        menu:
            "Позволить рабу кончить в рот Оскара" if True:
                $ fmc_bi_cuckold = True
            "Запретить рабу кончать и выгнать его" if True:
                pass

    scene scene_120_09
    with Dissolve (1.0)

    e_narrator "After falling exhausted on the bed, [fmcName] looked at the slave and said"
    narrator "Обессилено упав на кровать, [fmcName] посмотрела на раба и приказала"

    if fmc_bi_cuckold:
        e_fmc "Take off the condom and cum in that worm's mouth."
        fmc "Снимай презе



it shows

Screenshot_19.png

Screenshot_18.png
 
Last edited:

Boehser Onkel

Forum Fanatic
Modder
Feb 20, 2021
4,878
8,731
592
It's not about the the set, but the predictive condition. In other games, before a IF condition, there is like a path detection with a notification.
there is no "predictive condition"
the variable is set at this point

if persistent.lang == "english":
menu:
"Letting the slave cum in Oscar's mouth.":
$ fmc_bi_cuckold = True

"Stop the slave from cumming and kick him out":
pass

if you choose "letting ... "
the variable is set to true the first time , no condition needed

and yeah "other games" ... every game has different a code
 

shmurfer

Engaged Member
Dec 29, 2019
3,079
4,729
387
It's not about the the set, but the predictive condition. In other games, before a IF condition, there is like a path detection with a notification.
Isn't the path detection for actual paths, like actual dialogue that renpy can pause on. It would be racing against a menu instead here and URM can only do so much without getting in the way of the actual game.
 
  • Like
Reactions: Boehser Onkel
5.00 star(s) 49 Votes