DSO13

Newbie
Jul 4, 2023
22
20
So I spent some of last night and this afternoon fiddling with ren'py and the game code and everything. Novilon wasn't kidding when he said this was like spaghetti code. The exact version downloaded from here (Betamix 0.3.5) was giving me an error prior to a test run without even having done anything to any of the code. It was something in the material relating to exploring the alleyway downtown and the mochi-mochi shop, particularly I think how the game handles it being closed if you trigger that event. I don't know enough about all the code elements to understand what it was asking for but it's weird that there was apparently an error without anything being tinkered with. Guess I'll have to try and see if a totally freshly downloaded copy has that or if somehow I broke my copy without even knowing anything was happening. And then I tried to "create" a new scene just by altering one that already existed and somehow that broke the game even though I didn't make any radical changes. So it really feels like a lot of this code is made out of popsicle sticks and wet tissue paper and it'll collapse if you so much as look at it funny.

It also shows that it's changed hands a bunch of times as some segments have a lot of comment markups that explain what the code below is for or why certain things are active/inactive. But other stuff is just a mess of variables and callbacks and flag loops that look like total gibberish.

I mean there are a trio of flags apparently set into the code called "X_knows" where X is Amy, Sally, and Rogue respectively and each one has a note that explains they're meant to track if Sonic "confesses" to them, which I suspect is meant to be that he comes clean to each specific girl about having done stuff to Cream. But exactly how far he has to go for it to "count" or even where those alleged confessions happen is a mystery because I could not find a single instance in any event of activating any of those flags. Plus it appears that for Sally and Amy at least those flags are supposed to be the entry points into their threesomes with Cream but it's entirely possible in the game to get to the relatively complete Amy threesome or the earmarked-but-incomplete Sally threesome even though I have no idea if those flags were ever activated beforehand. Meanwhile there is nothing in the game or buried in the code to indicate that you're ever supposed to have Rogue get involved with Cream, so what the purpose of a flag about her knowing what's going on is supposed to do is a mystery (though Vanilla remarks during the "sexed Cream" ending that she was one of the people in town who was in on the plan to have the babysitting gig turn into a debauched sexcapade so.... *shrug*)

EDIT: I found those "X_Knows" flag triggers. I didn't realize you can ctrl+shift+F to search the entire project at once instead of going segment by segment.

Sally finds out via a randomly selected "gossip" phone conversation. If you get the one about how horny Vanilla is there will be the option to confess to doing stuff with Cream. That conversation changes based on what exactly you've done with her and potentially if you repeat it after Sally is aware of goings on.

Amy finds out if you encounter her in the park and go back to her place. She'll start talking about how the whole town has gone horny and ask if you've seen anything going on with Cream. If you have and have at least gotten Cream naked you can make Sonic confess

Rouge finds out if you go to the Mochi-Mochi shop. Her opening dialogue leads down the path of her finding out, there's no confession choice it just happens as a matter of course. The choice comes afterwards where if you have done anything with Cream you'll be asked to either trust her (opens up the shop purchase options) or to decide she knows too much (leads to the domination/toy-rape scene with Rouge but closes the store afterwards. Also requires significant negative moral alignment and aside from just the fact that you torture Rouge with a toy until she's a gibbering mess, Sonic gets quite violent with her during the scene.)


I never knew those scenes were necessary for the Sally/Amy threesomes. I guess I only remember the threesome scenes from playing the flash version where I assume they weren't implemented.

It kind of feels like further developments by Novilon or anyone would probably benefit from trying to see if there's a way to clean up the game's structure to make it more stable and less twitchy.
 
Last edited:

seronis

Member
May 9, 2022
118
138
This fixes the missing action, fixes the two mis identified images and dialog typo in the beach volleyball scene, and fixes the 3 places where map() is used in the journal in order to make it python 3.9 compliant. map() returned a list in python 2.7 and returns an iterator in python 3.9 so the quick fix is to just cast the map results to a list.

With the above done this is functionally the same as BSC 0.3.5 but is now renpy 8.2 compliant

 

DSO13

Newbie
Jul 4, 2023
22
20
This fixes the missing action, fixes the two mis identified images and dialog typo in the beach volleyball scene, and fixes the 3 places where map() is used in the journal in order to make it python 3.9 compliant. map() returned a list in python 2.7 and returns an iterator in python 3.9 so the quick fix is to just cast the map results to a list.

With the above done this is functionally the same as BSC 0.3.5 but is now renpy 8.2 compliant

Figured I should point out that the link you gave sets off my antivirus. It might be nothing, but thought it was worth mentioning.

But while I'm doing that I wanted to ask a question that maybe you can answer since you seem familiar with renpy and the structure of the game.

How are the default states for flags defined in this game?

To prevent people from having to read a wall of text I'll put this in spoiler tags to collapse it

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

seronis

Member
May 9, 2022
118
138
Figured I should point out that the link you gave sets off my antivirus. It might be nothing, but thought it was worth mentioning.
yes shitty AV gives false positives. renpy is a program that self compiles. shitty and misconfigured AV will treat it as a virus

How are the default states for flags defined in this game?

detailed info on variable use in renpy


1) Cream is stripped naked in the bathroom and you choose the "let's have a nice, hot shower together" option. After the shower sex scene plays out it triggers a "shower_sex" flag to record that it's happened.

2) If you tell Cream she needs a shower and are able to then join her in the shower normally it's just an earjob/blowjob scene. But if the "shower_sex" flag is activated it instead progresses to an alternate scene where the pair actually has sex.
this is normal variable use. default a bool variable for your flag and set its value or check its value as needed

At the bottom of shower.11 I change "jump .shower12" to
If flags.has('shower_sex')
jump.shower14 (the new label I make for the added scene)
else:
jump.shower12
jump is a statement. dont attach your target label to it, the space between jump and the label name is important because they're two separate things.

thats the general stuff i can respond to without having access to the code at this exact moment. if you have more questions you can find me in either the official renpy discord server or in fuzzybunny's discord server
 

DSO13

Newbie
Jul 4, 2023
22
20
yes shitty AV gives false positives. renpy is a program that self compiles. shitty and misconfigured AV will treat it as a virus
It wasn't the file itself, it was just visiting the link. It didn't happen when I went there the next day though so it's possible it was some ad or something attempting to run that set the AV off the first time and it's not omnipresent.



detailed info on variable use in renpy
Thanks. I'll check that out. I've compiled a few links on tutorials and instructions for renpy but it feels like most of it is in video form which I just don't have the patience for. I'd rather have written instructions that I can speed through or skim to find what I want than listen to someone drone on for 20 minutes in a video so I can find the 2 and a half minutes of content I actually need.



this is normal variable use. default a bool variable for your flag and set its value or check its value as needed
Yeah, I get that. My issue is that I got a crash/error message telling me that my flag didn't have a default state and because of that when it triggers at the end of the event where it's supposed to activate renpy doesn't know what it's supposed to do. Like I was supposed to specify that the default state for the flag is "false" so that when the scene reaches it and it activates it flips to "true." and then when I get to the other scene where there's an if/then/else statement it will recognize that either a) I did the previous scene, the flag activated, is true, and therefore plays the alternate event to reflect that or b) I didn't do the previous scene, the flag is still false because it hasn't happened and the scene that plays reflects that state.

This all makes total sense. What doesn't make sense and what I'm confused about with regards to how BSC has been written is that I cannot find a place anywhere in the existing code where those default states are set for any of the already present flags.

Like in vars.rpy the first two flags on lines 21 and 22 are the ones that activate when you've successfully gotten Cream out of her dress and her panties respectively. It makes sense that they are listed here, named, and described. And I know what they are for and see them in action throughout the code for almost every conversation tree in the game since they control Cream's responses to being asked to strip and sometimes serve as shorthand for how far she'll go in some sexual situations. BUT I cannot find any place in any of the code that refers to those or any of the already-present flags in the game and is structured as:

default <flag name> = false

which is what that link you provided (and other material I've read) says is supposed to be how you tell the game what the starting, untouched state of a given flag is supposed to be.

So given that, how is it that the game recognizes that existing flags like "remove_dress" or "get_naked" are false by default but when I create a new flag like, say, shower_sex and replicate everything I've seen in the BSC code with regards to how flags are built and implemented, the game has a conniption and stars screeching "you can't do that! You have to tell me how it starts before I'll let you change what its state is!" and crashes?


jump is a statement. dont attach your target label to it, the space between jump and the label name is important because they're two separate things.
My apologies, those were just typos by me in this post. I didn't copy/paste the material out of anything I've done (in fact I'm starting fresh again with a copy of your 0.3.6 version so I haven't even re-written anything yet) I was simply typing it out and forgot the space. In writing the actual code I would be more observant about that stuff because I would see other nearby examples and know that it has to be that way.

thats the general stuff i can respond to without having access to the code at this exact moment. if you have more questions you can find me in either the official renpy discord server or in fuzzybunny's discord server
Do you have a link to the FuzzyBunny one? I've seen it talked about on here a few times but I've also seen several people provide several different links in this and the old abandoned FuzzyBunny port thread and I have no idea which one is legit.

Thanks again for the help
 

seronis

Member
May 9, 2022
118
138
at the top of vars.rpy you will see the various state variables being defaulted. each of those is one master object that is tracking all the specifics. the one YOU should be adding your things to would be daily_init and not flags_init because its an activity that gets reset daily and not something you're tracking if it 'ever happend during entire game'

after you add your variables you will need to update the version variable in options.rpy from
Code:
define config.version =    "0.3.6"
to something like
Code:
define config.version =    "0.3.6.1"
thats just a requirement to ensure old save games wont crash when loading and they will get updated to be aware of your new flags. not changing the version variable is probably why your tests crashed. and this isnt a general renpy detail, this is specific to BSC and how it handles updating saves. you can read the after_load label at the bottom of vars.rpy

would have mentioned those category variables earlier but didnt have access to code at time to remind me.

i sent you the two discord links via DM so that forum scraper bots dont see them
 
Last edited:

DSO13

Newbie
Jul 4, 2023
22
20
Is there a new update?
Novilon hasn't been around for several months, which has been talked about at length in the last couple of pages, particularly before I kind of hijacked things to discuss coding and renpy stuff for a bit as I try to learn about how the game works behind the scenes. So right now nobody even knows what's going on, if he's going to be back at any point in the near (or far) future or if the game will require another dev to pick it up and carry it from here or not.

Seronis posted a very slightly updated version in post #1,143 above but it's more about fixing some back-end stuff and a couple of errors and doesn't add any fresh content.
 
  • Like
Reactions: purpturpinfurp67

rashka41

New Member
Nov 3, 2020
4
14
From how it seems to be going, it feels like this game is cursed to be passed from one dev to the next, never truly making all that much progress each pass.
it's probably more efficient to take the game's visual assets and the dialogue and narration and rebuild it from the ground up instead, which im surprised hasn't been done by now as opposed to devs trying to work with the spagghetti code.
 

seronis

Member
May 9, 2022
118
138
it's probably more efficient to take the game's visual assets and the dialogue and narration and rebuild it from the ground up instead, which im surprised hasn't been done by now as opposed to devs trying to work with the spaghetti code.
In all fairness the code portion isnt bad at all. Its purely the scenes that could be organized better. The game uses a decent enough time tracking class, that just isnt used efficiently in the scenes. And the tag/achievement classes were made in a way that allows updating without breaking save compatibility.

What could be improved is just deciding energy and time costs in a self consistent way.
 

CB1s

New Member
Jun 8, 2022
6
2
If someone could provide a TLDR of the game's current state, state of development, the know hows of Novilon, etc..., any one of those, I'd appreciate it. Its been a very long while since the last update and quite frankly, I am lost and out of the loop
 

rashka41

New Member
Nov 3, 2020
4
14
TLDR: officially, Novilon is too busy dealing with real life and working to make tons of progress on the game but hasn't put the project down either. a lot of people have made suggestions but most of the messages are all asking the same question. and always gets the same answer. you're just gonna have to wait for the dev to have made enough progress for it to be post-worthy
 

CB1s

New Member
Jun 8, 2022
6
2
TLDR: officially, Novilon is too busy dealing with real life and working to make tons of progress on the game but hasn't put the project down either. a lot of people have made suggestions but most of the messages are all asking the same question. and always gets the same answer. you're just gonna have to wait for the dev to have made enough progress for it to be post-worthy
Much appreciated. Thank you
 
4.50 star(s) 4 Votes