Hordragg

Lesser-Known Mesmer
Donor
Compressor
Apr 2, 2019
2,933
10,535
View attachment 673429

2020-05-28 News

It's been a few days since my last news post and it's been a hell of a busy week since. Figure it's time to let you know what's been going on.

First, I'll summarize my last news post: I'm writing code that will write my code so that I don't have to code.

That's pretty much done. But in doing that, I spent a lot of time looking at the code in it's current state and realized just how much experience I've acquired in the last year of making this game.

I started examining some of the problems I've been having with broken saves, evolving classes and objects, the structure of the story, and in general just how my code interacts with itself. This really put me into a long term mind set and got me thinking about what I could do to make things more stable going forward.

A number of solutions quickly made themselves apparent. Solutions that as a rookie renpy programmer were not immediately obvious. But having worked through so many quirks and problems in the last year, I started imagining ways to avoid those going forward.

Now the rest of this post may get a bit technical, but I want to try my best to convey not just how much work is going into this, but how it's going to benefit you in the long run.

I want to be in full creative mode. I want to sit down, write stories, make art, dump it into a file and forget about it.

As we go through these, remember my end goal is to NEVER CODE AGAIN! (not now, and not in any of the 100 future games I want to make).

Problem 1: Broken Saves

This is something that has irked me from day one and I realize that a big part of that problem was how I kept changing the code around trying to find a good 'fit'. Add to that the complexity I introduced by having different classes and objects all recording different stats and info and before you know it, I've got variables and instances all over the place keeping track of different things. If I change how one class works, it impacts a cascade of others and I have to go through and start scrubbing code to make all the corrections.

Even then you miss some, saves break or errors pop up and the whole thing becomes a shit storm. Essentially you wind up with different saves each based on a different version of the code and everything hates each other and won't work.

Solution 1: Centralization and Static Methods

It's still handy having different classes handle different functions. But instead of having to initialize an instance of those classes and let them store all this individual data all over the place, why not just give them a job to perform, and then hand off the results to a central record keeper that will keep all the variables safely locked in a single place? And while I'm at it, I should design it so that they don't have to be instanced to do it.

This way, if the class needs to evolve or change, there is no instance of it in the save file. The game won't know or care that it changed as long as the output of the class methods remain the same. If the output is the same, there is no code to scrub for and update, and the train continues to run smoothly.

Of course, there is still data that needs to be retained between plays. So I created The_Scribe. Now ALL of the variables that change during the course of play are now being saved in a single instance of the scribe who records and tracks all the stuff that changes during the course of a play through. All the variables in one place. If a function or statement needs to know something, it turns to the scribe because it knows all! Nothing in the game can change without it knowing, and it remembers! (Ok, that got a little ominous but I was feeling it.)

As a bonus, if for some reason I need to improve the scribe in the future or add features to it, I can create an updated version that takes the old version as an initialization parameter and all of your data will flow into the new object during the loading process and the game will continue to function without error.

By following a few simple rules, there should never be another broken save.

Problem 2: Some Classes and Screens need Data that requires periodic maintenance

A perfect example is the Character Selection Screen to start new chapters. In order for that screen to do it's job, it needs to be told what chapters are currently in the game, and whether or not they are currently accessible in the story.

This means whenever I add a scene to the game, I need to go into the code, add the new scene to the available list of scenes. Then tell it what conditions are required before it can be played, like whether or not the preceding chapter had already been completed. And finally I have to debug it and make sure it works.

The same goes for the objects that calls on music, sound effects, images, etc. It's not a massive burden, but it's work. And any time I have to touch the code there is a chance something is typed incorrectly, not properly indented, or a dozen other small things that can break the code and require debugging.

I don't want to do it anymore.

Solution 2: Find it your damned self!

Objects that now rely on the existence of files can track them down on their own. Using the example of a new chapter in the game. The Class responsible for managing the story flow will use it's static method to scrub the directories and find all of the scene files in the game. It opens each file and reads the first line and uses the information to make a temporary dictionary of scenes and their requirements (like completing chapter 1 before you can play chapter 2).

With this temporary dictionary in hand, it asks the scribe (our central recorder), which scenes have been completed and what other conditions have been met. It uses the info to filter out any scenes that are complete and not currently available.

It takes what's left and throws it over to the character selection screen to be displayed by the player and then immediately forgets about everything it did so that the next time you are at the character selection screen it can start the process over and make sure you only have the most up to date information.

It also means that after I write a scene, all I have to do is drop it in the file and the game will find it on it's own. I don't have to update any code. I don't have to input any parameters. Everything is self contained and automated. LIBERATION!!!

The same goes for when I add music, sound effects, or new characters. There are classes that handle each of these and when the game needs the information, they fire up, search for their respective files and hand off the info to whatever process called it without ever saving a single thing to the save file and without me having to add anything to the code.



Problem 3: Missing Files and Errors

So with all this automation, there is a certain degree of failure in that if a file isn't found or is there one minute and suddenly gone the next, that a crash will occur. I could of course write error handlers that would check for the existence of this or that prior to running a section of code, but that's a lot of work.

When I have three or four game variants available that rely on different images, and an image is missing, the most thorough thing I can do is test the existence of each image before trying to load it.

It's a shit ton of work and up till now I haven't done it because "fuck it, I'll fix it if it's broke".

Solution 3: Make the Code that Writes the Code Write that Code Too!

Well now that I'm getting away from coding altogether, and I'm making code that will handle the coding, I'll just make that code handle the error handling as well.

A simple example is with the alternate images. Some characters have outfit changes for certain scenes depending on whether or not they are currently blue or red. Sometimes, I incorrectly name an image or something gets moved. Whatever, the point is, the game finds the error and crashes.

Now I can add a few lines of code to each image that will test it's existence first and if not found fall back to a default and keep on moving. That doesn't mean it won't be odd when suddenly a character's outfit changes and then swaps back. But at least the game didn't crash! And I don't know about you, but I'd take a distracting hiccup over show stopping vomit any day of the week.

Plus I can always go back and fix it after the fact, but at least your play through didn't crash!

That's just one example but there are several places I've added error handling that should increase stability going forward.





Anyway, I think I'll stop there for now. There's much more I've been working on and adding to the code (Including modifications that should make an Official Android Build possible in the next month or so) but I'll share that later. Just know that when it's done, all the weak spots should be shored up and all future development should be a cake walk.

Right now, I estimate another three or four days of coding and by this time next week I plan to be in 100% Creative Mode. No more coding and no more broken saves.

Nothing but story, art and bright horizons! I'm excited as fuck!

Till next time, thank you for your support and I salute you!
Now, this is how you "automate the boring stuff with python". :geek:
Great ideas. Well explained. Nice work!
 
  • Like
Reactions: RomanHume

fried

Almost
Moderator
Donor
Nov 11, 2017
2,311
6,081
"Make the Code that Write the Code Write that Code"
This line will be remembered in the future as the damn of Skynet.

On the same topic. Would't your solution hide bugs, making the harder to find and fix?
Well, an old-school programming language compiler takes one form of code and writes it into another form of code that represents execution of another form of code. Yes, there can be bugs along the chain, but if productivity is greatly increased, it might be worth living with having to fix the occasional problem that could arise, I would think.

Personally, I am all for scripting and/or automating as much as possible when it comes to repeatable tasks.
 
Last edited:

DonkeyFace

Active Member
Dec 24, 2017
881
3,048
View attachment 673429

2020-05-28 News

It's been a few days since my last news post and it's been a hell of a busy week since. Figure it's time to let you know what's been going on.

First, I'll summarize my last news post: I'm writing code that will write my code so that I don't have to code.

That's pretty much done. But in doing that, I spent a lot of time looking at the code in it's current state and realized just how much experience I've acquired in the last year of making this game.

I started examining some of the problems I've been having with broken saves, evolving classes and objects, the structure of the story, and in general just how my code interacts with itself. This really put me into a long term mind set and got me thinking about what I could do to make things more stable going forward.

A number of solutions quickly made themselves apparent. Solutions that as a rookie renpy programmer were not immediately obvious. But having worked through so many quirks and problems in the last year, I started imagining ways to avoid those going forward.

Now the rest of this post may get a bit technical, but I want to try my best to convey not just how much work is going into this, but how it's going to benefit you in the long run.

I want to be in full creative mode. I want to sit down, write stories, make art, dump it into a file and forget about it.

As we go through these, remember my end goal is to NEVER CODE AGAIN! (not now, and not in any of the 100 future games I want to make).

Problem 1: Broken Saves

This is something that has irked me from day one and I realize that a big part of that problem was how I kept changing the code around trying to find a good 'fit'. Add to that the complexity I introduced by having different classes and objects all recording different stats and info and before you know it, I've got variables and instances all over the place keeping track of different things. If I change how one class works, it impacts a cascade of others and I have to go through and start scrubbing code to make all the corrections.

Even then you miss some, saves break or errors pop up and the whole thing becomes a shit storm. Essentially you wind up with different saves each based on a different version of the code and everything hates each other and won't work.

Solution 1: Centralization and Static Methods

It's still handy having different classes handle different functions. But instead of having to initialize an instance of those classes and let them store all this individual data all over the place, why not just give them a job to perform, and then hand off the results to a central record keeper that will keep all the variables safely locked in a single place? And while I'm at it, I should design it so that they don't have to be instanced to do it.

This way, if the class needs to evolve or change, there is no instance of it in the save file. The game won't know or care that it changed as long as the output of the class methods remain the same. If the output is the same, there is no code to scrub for and update, and the train continues to run smoothly.

Of course, there is still data that needs to be retained between plays. So I created The_Scribe. Now ALL of the variables that change during the course of play are now being saved in a single instance of the scribe who records and tracks all the stuff that changes during the course of a play through. All the variables in one place. If a function or statement needs to know something, it turns to the scribe because it knows all! Nothing in the game can change without it knowing, and it remembers! (Ok, that got a little ominous but I was feeling it.)

As a bonus, if for some reason I need to improve the scribe in the future or add features to it, I can create an updated version that takes the old version as an initialization parameter and all of your data will flow into the new object during the loading process and the game will continue to function without error.

By following a few simple rules, there should never be another broken save.

Problem 2: Some Classes and Screens need Data that requires periodic maintenance

A perfect example is the Character Selection Screen to start new chapters. In order for that screen to do it's job, it needs to be told what chapters are currently in the game, and whether or not they are currently accessible in the story.

This means whenever I add a scene to the game, I need to go into the code, add the new scene to the available list of scenes. Then tell it what conditions are required before it can be played, like whether or not the preceding chapter had already been completed. And finally I have to debug it and make sure it works.

The same goes for the objects that calls on music, sound effects, images, etc. It's not a massive burden, but it's work. And any time I have to touch the code there is a chance something is typed incorrectly, not properly indented, or a dozen other small things that can break the code and require debugging.

I don't want to do it anymore.

Solution 2: Find it your damned self!

Objects that now rely on the existence of files can track them down on their own. Using the example of a new chapter in the game. The Class responsible for managing the story flow will use it's static method to scrub the directories and find all of the scene files in the game. It opens each file and reads the first line and uses the information to make a temporary dictionary of scenes and their requirements (like completing chapter 1 before you can play chapter 2).

With this temporary dictionary in hand, it asks the scribe (our central recorder), which scenes have been completed and what other conditions have been met. It uses the info to filter out any scenes that are complete and not currently available.

It takes what's left and throws it over to the character selection screen to be displayed by the player and then immediately forgets about everything it did so that the next time you are at the character selection screen it can start the process over and make sure you only have the most up to date information.

It also means that after I write a scene, all I have to do is drop it in the file and the game will find it on it's own. I don't have to update any code. I don't have to input any parameters. Everything is self contained and automated. LIBERATION!!!

The same goes for when I add music, sound effects, or new characters. There are classes that handle each of these and when the game needs the information, they fire up, search for their respective files and hand off the info to whatever process called it without ever saving a single thing to the save file and without me having to add anything to the code.



Problem 3: Missing Files and Errors

So with all this automation, there is a certain degree of failure in that if a file isn't found or is there one minute and suddenly gone the next, that a crash will occur. I could of course write error handlers that would check for the existence of this or that prior to running a section of code, but that's a lot of work.

When I have three or four game variants available that rely on different images, and an image is missing, the most thorough thing I can do is test the existence of each image before trying to load it.

It's a shit ton of work and up till now I haven't done it because "fuck it, I'll fix it if it's broke".

Solution 3: Make the Code that Writes the Code Write that Code Too!

Well now that I'm getting away from coding altogether, and I'm making code that will handle the coding, I'll just make that code handle the error handling as well.

A simple example is with the alternate images. Some characters have outfit changes for certain scenes depending on whether or not they are currently blue or red. Sometimes, I incorrectly name an image or something gets moved. Whatever, the point is, the game finds the error and crashes.

Now I can add a few lines of code to each image that will test it's existence first and if not found fall back to a default and keep on moving. That doesn't mean it won't be odd when suddenly a character's outfit changes and then swaps back. But at least the game didn't crash! And I don't know about you, but I'd take a distracting hiccup over show stopping vomit any day of the week.

Plus I can always go back and fix it after the fact, but at least your play through didn't crash!

That's just one example but there are several places I've added error handling that should increase stability going forward.





Anyway, I think I'll stop there for now. There's much more I've been working on and adding to the code (Including modifications that should make an Official Android Build possible in the next month or so) but I'll share that later. Just know that when it's done, all the weak spots should be shored up and all future development should be a cake walk.

Right now, I estimate another three or four days of coding and by this time next week I plan to be in 100% Creative Mode. No more coding and no more broken saves.

Nothing but story, art and bright horizons! I'm excited as fuck!

Till next time, thank you for your support and I salute you!
OMG! You just prison fucked my brain again.
Man, you gotta quit posting shit like this. It hurts. It hurts really bad. I'm just a simple blue collar guy, and you have just scrambled up all that remains of my entire thought processes. I can no longer see, hear, or think straight. Next time can you post this stuff in Russian or Chinese just so that I can avoid the temptation of trying to decipher what it is that you are trying to convey? I mean... I can read history, philosophy, the journal of astrophysics/quantum physics etc... and actually come away feeling somewhat more educated. But not so in reading some of your posts. You actually manage to make me feel significantly dumber. So I yield to you Great Sir. You are much smarter than I.

In all seriousness though,
Wouldn't it be wiser to keep the details of this accomplishment on the down low, so as to package it up all nice and pretty, and sell it on the open market? I would think other developers would be chomping at the bit for something like this. IDK.

Anyway, It's fun seeing you all excited this Mr. Hume.
 
  • Like
Reactions: RomanHume

RomanHume

Sommelier of Pussy & Purveyor of Porn
Game Developer
Jan 5, 2018
2,390
13,341
With the exception of a few smart ass posts that couldn't wait, I realize I've been remiss in responding to posts on the forum here. Figured this is a good opportunity to correct that. So here goes...


This is the worst kind of comment and what people should not do: tell Dev what to do. But.. have you thought about upgrading her level to full heroine? a simple image already made me more interested in her than Monica.
With all this refactoring I'm doing, and the promise of going into full creative mode, there is the possibility of other characters being optionally upgraded to full lover status provided it flows well into the over all story.

Mmm really depends on young hottie personality. With some girls you want to protect and try to open her eyes about how douche her boyfriend is, with others you like all the cheating situation and with others you don't care as long as you can fuck her... Sorry I can't be more useful.
No apologies needed. I'm finding it fascinating to discover where people land on some of these topics.

What is the shape of a Red Head Void? We know the futa is a Trapezoid... I hate me too.
Depends on why she is staying with douche. Like is he rich, good lay, is she just a loyal person, arrange marriage, etc?
The shape of the void isn't really as important as the depth....and it's deeeeep!
But saying that the situation is contextual is very fair. Thanks for sharing.

Rinse n repeat, couldn't give two shits about the bf, let her stay with him it just makes it easier for us
I like the cut of your jib!

It depends.
- Who is this young hottie? Is she important?
- What does this have to do with the story? Who's path are they on?
- How does this impact the main LI's? Assuming this is a side-girl.
I personally think it'd be interesting, keeping somewhat with this theme, is either Jane or Cassie's ex showed up. He wants to get back with them. He is a pushy douche and you hate him. Jane or Cassie refuse and that serves as a vehicle for her and MC to get closer.
So...
1- Jane or Cassie had boyfriend
2- Ex-boyfriend wants to get back with them.
3- Ex-boyfriend is a pushy douche and you hate them.
4- Jane or Cassie don't want the ex-boyfriend.
5- MC comes in and saves the day and gets rid of pushy douche ex. Protects the girl in question from him.
6- Brings Jane or Cassie closer to MC, which develops their relationship.
It's actually for a new character I'm working on that will tie in to both the Monica and Emily story lines. I know, things are getting twisted, but it's all in an effort to start bringing together the different story lines.

Wait, did I write father and daughter? I meant neighbors..
Glad you caught it before I did. =D

You mean landlord and tenant
Just to be clear though, Cassie don't pay no rent.

Hehe, I'm personally indifferent to cheating content. So, banging the GF while she is basically cucking her BF isn't really interesting to me. But I definitely have a bit of a white-knight complex, so I'd be far more interested to help her get away from him and or protect her from the BF.
To expand on the scenario I posted originally.
This ex-boyfriend douche is obsessive. He starts to cyber-stalk Jane/Cassie. MC notices that Jane/Cassie are distracted, by something. MC asks them about it. They reveal their ex is trying to get back with them.
Red Jane is interested. She and her ex did a lot of crazy stuff together and its sort of intriguing to her to go back.
Blue Jane isn't interested at all. She doesn't want to go back to that time of her life. She is trying to change herself for the better.
Red Cassie wants to do it. The crazy ex is actually her first boyfriend. Her first kiss, took her virginity. She can't see that he is a bad influence on her.
Blue Cassie is scared. She broke up with him. She wasn't happy with the relationship and is now afraid of him because he is a bad guy.
But the ex doesn't care about any of that. He just wants some pussy. Pushy, arrogant and a massive douche to say the least. MC must step in and save the day!!
For the sake of not having too many branches, the ex isn't successful on any route.
Cassie's ex boyfriend is a fuck face dick bag kid who doesn't know how to find the little man in the boat. He's not allowed to be a character in my game. And Jane has a knife.

No, really, she does.

Oh Yes I know what you mean. What I mentioned is that even if your objective is the same, protect the girl as a white knight, I doubt the way you act towards the problem is the same. Red Jane would not like a totally direct approach. Blue Jane might understand you want the best for her but still might tell you it is not your business. Even if she is not interested, she did live under oppressive parents. A more subtle approach might be needed.
With Cassie, she might find it more understandable given your relationship.
Taken from official website, she is your neighbor’s Daughter.... Oh my beautiful little girl. I have seen her grow up, she feels like my own daughter to me.
It's hard not to feel a growing connection to the people you live with. And Cassie has lived with you for a long, long time. Seems like her whole life sometimes.

RomanHume
Website Major Character.
Lupita
every find someone : ever
Monica
has fun and like to mingle : likes
setting down : settling
rock relationships : rocky
Emily
treaters her : treats
Amanda
virgin shoe : virgin who's
hope to start. : start?
I appreciate the diligence and the corrections and I'll definitely save them for a later date. But I only recently started updating the web page after like a year. One day I'll go through and make some improvements but for the moment it's waaaay down on my list. I'm scared to think of how old some of that information might be given that it was created when I had a full team.

I do appreciate it though.

If she fucks her current boyfriend behind his back, I will never be in the mood to have that happen to me: so I keep it casual and keep her at arms length or I cut and run, espcially if feelings get involved from my side.
Certainly fair enough.

Hummm, does that mean I have to go back and un-reject Monica? ;p
For the red path, I would say that is fine, but she isn't allowed to do anything sexual with him any more. XD
Maybe for the blue path, he could help her become independent. Help set her up in her own place, etc...
I'm working on ways to introduce future characters in more than one chapter so that if close off one character you'll still have access to the new additions.

Order 66.
I'm sure the not Mafia or Triad that Nanami is involved with has use for soylent green.
:oops:

Keep fucking like rabbits behind his back and find a way to sabotage their relationship without her knowing. After all if the boyfriend is a asshole it shouldn't be hard to find evidence to open the girl's eyes. :devilish::devilish:
When it doubt, make the puppets dance. PULL THE STRINGS! PULL THE STRINGS!
But I like the way you think.

For me, if the boyfriend was abusive and the hottie seemed like she wanted to leave him but wasn't sure how, I'd prefer to keep things on a friendly non-sexual level, and maybe try to show her that there are plenty of decent guys out there (me), until she left her boyfriend. If the boyfriend wasn't abusive, just a typical douche bag, but she liked him anyway, I would stay away from her and keep our relationship strictly platonic. I'd be all for helping her if she needs it, but I am not interested in cheating on (or sharing her with) some other guy.
Fair enough. From a writing perspective it's fun and beneficial to hear so many different thoughts on the subject. In some cases it even opens up story possibilities that I hadn't previously considered.

Well, it greatly depends on the backstory, but in general I'd try to make her mine if she's worth it, or at least help her in some ways. Or I'd just keep fudging her... ;)
When it doubt, tap that ass.

its the game really short because i just finished up till Amanda's hotel route and a page end of this version pop out
Was there any game before that?

7. Impregnate young hottie, punishing douchebag with 18 years of child support if she doesn't leave him.
I'm curious how the plan changes if they're both black...

Unless Jane and Cassie are down for a long-term threesome, they're all going to be bastards.
You're vicious!

But I really like virgin shoes. :LOL: This one made me laugh when I was playing.
...and this was my first post >sigh<
To be clear, virgin shoes is not a typo.

Using the post to tag you.
DAST website typos
Website should be Https
Home
Happy Hour : (The subtext in the post should copy the size of rack' em, spotless, and man cave.)
2020-04-20 News
moment of a peace : (remove a)
house hold : household
and the over all : overall
2020-05-04 News
I'll chest deep : I'm chest deep
has been started to ease : (remove been)
2020-5-12 News
and makes not apology : no apology
But as happens : As it so happens
in previously releases : previous
felt needed tweaked : tweaking
What else is happening? : (missing entered space between it and paragraph)
I've completing : completed
About our Game
This an all : and
You decisions will : Your
Music: The comes : (missing word?)
Website Major Character.
Amanda
virgin shoe : virgin who's
hope to start. : start?
Emily
treaters her : treats
Lupita
every find someone : ever
Monica
has fun and like to mingle : likes
setting down : settling
rock relationships : rocky
Character Music
Cassie Harighnton : Harrington
Downloads
using the Ren'py Visual : Ren'Py
Technical Support
are in fact zipped : (you used the word compressed every other time, seems weird to call them zipped here)
to grow this FAQ : (saying grow also seems weird)
Contact Us
Should really be a page mentioning the email rather than a link that tries to open a mail program.
Again, I appreciate the work, but I'll warn you now. Checking my work for typos is a full time job that doesn't pay worth a damn. My fingers try to type as fast as my brain is moving and it leads to a shit ton of errors.

I'll save this list, but the only typos I try to go out of my way to fix speedily are the ones in the game itself. Any time someone sends me a list of typos from the game, I add those to the bug fix list and make sure they get corrected before the next release.
Cheers mate and thanks again!.
 

RomanHume

Sommelier of Pussy & Purveyor of Porn
Game Developer
Jan 5, 2018
2,390
13,341
Oooh.. no android port yet? :(
Not yet. But as part of this recoding I'm working on fixing that. To work with my new code I"m having to reconfigure many of the menus and screens. In the process, I'm throwing in a switch so that if the game is running on mobile, it'll reconfigure the screens to display better on a smaller screen.

Having an android version is going to be critical to the success of the game I have no doubt. I'm only now in a position to make it happen.

The other issue I've been worried about is the size of the game. But now that I'm getting away from the coding and writing scripts to handle all my conversions, etc, I'm including some code that will downsize the images to make them smaller as well as making it easier to break the game up into multiple parts for mobile.

Know that Android is still very much in my mind and I'm working towards it. I just want to make sure that it gets the same attention as the desktop version and doesn't come off as a cheap port or knock off. I want the android version to feel just as well thought out and put together as the other versions.

huh. yo. saw your review. wanted you to know-many share your feelings on it. working with a modder to deal with those issues-particularly in regards to choices, romance, drama and overall story. i plan on flushing out nikki a bit-others noticed her vulnerabilities and self-conscious issues and agree that it's not explained-i will, however-her past will be the center plot. you'll influence her by your choices. the story is about a brother realizing how he failed his sister-will he turn things around or push her away? i have the nikki path mapped-art is the main obstacle, now.
Awesome. Just send it over when you're done and I'll make sure Nikki gets the time she deserves.

I was scrolling out of boredom. A while after I tried to pm him-he has it to where only few could. So I figured "why not?" Didn't expect a conversation over it-figured everyone else would ignore it.
To be fair, I'm way behind on a new release. So it's not like we have much else to talk about at the moment.

Sounds awesome. As someone who knows nothing about coding (to the point where most of this post reads fdgnb,kj ghuk hjkgkjg dfhdg dghhdth to me) I'm curious as to whether that 150 lines of code you wrote is something that could be turned into a tool for other devs to use. I appreciate that you may feel a sense of ownership of your work and don't wish to give it away; the flipside would be more games for you to play :)
While it's fun to think I could sell this code for others to use, there are a couple of reasons why it wouldn't be practical. The first is that they'd have to use the same notations and conventions I do when writing. The script specifically looks for a short hand that I developed for this purpose. And that short hand is based on how my story is structured and flows which deviates from the way most linear renpy games flow. I guess what I"m saying is that the code is highly specific to my situation.

The other caveats are that what I"m doing isn't anything spectacular. In about an hour of introductory python instruction you could learn everything you'd need to know to do what I"m doing and customize it for your particular use.

And the third, if I took the time develop it as a legit tool, people would just post it up here and I wouldn't make any money anyway. =D

But the real reasons are that it's not particularly complex and it's highly tailored to my needs.

I kinda get what was said...
But all that really matters here is that you've found a way to streamline headaches which is good.
I just feel dumb that it didn't cross my mind sooner.

Aaaand you just fucking wrote Skynet.
:ROFLMAO:
I think you mean I wrote "Fucking Skynet". Cause really that's all it wants to do is make the fucking easier to get to.
 

RomanHume

Sommelier of Pussy & Purveyor of Porn
Game Developer
Jan 5, 2018
2,390
13,341
Did you even read RomanHume's post which, coincidentally, is on the same page as your own?
Sssshhhh. It's funnier this way.

Yeah, the dev got arrested for attempting to seduce his dau....err I mean neighbor girl. Sadly, that kind of conduct is illegal. So, off this goes into the bin of games that had to be cancelled.
Who knew the guy was such a perv. Am I right?

The only character that's blue for me is the MC's bitch wife, and that's only because it may be useful down the line (also so she doesn't cheat on me).

Aside from that, i'm teaching Cassie all about the birds and the bees, why outsource the dick when you can keep it in the family?

:WeSmart:

Edit: Forgot she wasn't a virgin, the point still stands
Yeah but just because she's a virgin doesn't mean she's ever been fucked good.

WTF? Unless you've made choices specifically to piss her off, how is she a bitch? She's been quite affectionate toward the MC in my playthrough, even with my MC's tendency to bang everything that moves.
You must have missed that line in the game.

emily '"Roger honey, can I bring you a cold beer?"'
'There it was again, Emily riding my ass. Why was she always being such a cunt.'
emily '"Or if you want, I could pour you a scotch."'
roger '"Why are you always being such a fucking bitch!"'

You have to play on the orange path and make mostly orange choices to get it.

Yeah, too bad the dev ghosted us.
The dev is a fucking prick.

Hey Roman, congrats on your achievement here.
I think reading this post gave my brain a fucking aneurysm, and an even greater appreciation for what you developers do and go through. I often think about taking a crack at developing my own game, but after reading posts like these.... Not a bloody chance in hell is that ever going to happen!! I'll bitch slap the fuck out of myself if a ridiculous thought such as that pops in my stupid head again. You Sir, have spared me time, energy, and the last vestige of sanity that I still hold. And I love you for it!
Making a renpy game isn't as hard as all that. It's actually a very simple interface to learn, but knowing some python will allow you to push and twist it in all kinds of ways. I just don't use it in the traditional way and I want it to do all kinds of fancy shit.

But if you ever want to learn to code, I recommend the following course:


I know it's a big course, but you don't have to take the whole thing to get started. In fact just watching the first 2 hours of the course will give you enough information to do most of what I"m doing as well as push renpy into doing all kinds of fancy shit.

But for anyone interested in this course, don't pay full price. Just keep an eye on it and pick it up for $15 when it goes on sale (which it does frequently). I bought a copy to keep as a reference every once in awhile when I forget how to do some esoteric something or another.

But the videos are short, sweet and to the point and they build on each other nicely. Anyway, that's way more information than you probably needed. I just want you to know that it's not that difficult, you just need the right info on hand.

Cheers mate.

Nah, mate. He wrote fucking Skynet.
Well damn, I should have read ahead before I made that joke in my last post. I'm only a week behind, that's all. =D

will be a next update?
will be!

I'm hoping the Cassie update features some actual sexual content if you've been feeding her the lust dialogue options. Amanda is a shyer girl so only getting to third base with her made sense (although it was disappointing), but I feel like Cassie is ready to go.
It will. I'm not a slow burn kind of guy and Cassie's next chapter will have full blown sexual content for both red and blue paths.

how do you know that? i am sorry i am not aware of it
Well, you see, I was the dau...err I mean neighbor girl. It all started when we got a tip from a concerned landlady that some perv was trying to seduce young girls in the neighborhood. So we, as responsible and moral citizens, decided to do something about it. The only solution was that one of us had to dress as an innocent, cute and defenseless girl so our perv will come out of hiding....but we had a problem. All of us are men, manly hairy men to be exact. How will we, as manly hairy men, convince someone that we are a cute, innocent and defenseless girl? The only solution was to learn the art of being a cute innocent girl. We shaved our bodies, we put our hair in pigtails and we put on the cutest makeup you've ever saw. We learned about bra's, how to stuff a bra, how to seductively take a bra off and even how to wear matching panties and bra's. And I, as the top of the class, was the chosen one.

So, there I was. Just innocently licking an ice-cream cone....and there he was, peeking around the corner like some creeper in every roommate/landlady/neighbor game on this site. He creeped closer...and closer. Then he asked me "Hey girl, so since I'm your fath... err neighbor, you wanna help me out with some stuff". I replied "Hehehe sure" and off we went......We were just sitting there in his living room, I was nearly done with my ice-cream but some of it had melted from the....heat. He offered, like a true perv, to help me out. I said "Okay!" and he proceeded to stick his tongue out and move his face closer to me....then the trap was sprung! I grabbed his tongue with my manly man hands of justice, dragged him to the cop car that was strategically positioned behind the living room window and finally I took off my bra, it wasn't how he imagined it though, it was a recording device that had recorded our entire interaction. He knew his plan was foiled, he knew he done fucked up, and then, the cops took him away. What a day. What a great day for justice!
Aaaaaand the secret is out. So fucking much for that...
 

somebodynobody

Engaged Member
May 11, 2017
3,252
4,200
So with all the code magic, and the purpose being to never have to do new code if you can avoid it in the future. Does that mean you are adding in extra code for your future games where you might have different UI/Mini-games/Other differences for future use?
 
  • Like
Reactions: RomanHume

RomanHume

Sommelier of Pussy & Purveyor of Porn
Game Developer
Jan 5, 2018
2,390
13,341
Looking forward to the next update. Gotta find out what happens next at the hotel.
For what it's worth, I'm looking forward to releasing it. I just gotta get there.

next update when? @ianvs
I don't give estimates because I consistently missed them. Best thing is to follow my Patreon posts or check the thread here. I always try to keep everyone up to date on where I am in development.

Nice implementations Roman. Seems like you are kicking ass on the coding part. :geek:
I think having done a few releases now and know what bugs frequently occur, combined with finally settling on how I want to structure my code has put me in a good place to do this automation.

I think my brain may have blown a fuse. I'm going to condense it all down and pretend you said magic.

View attachment 673582
I am mesmerized by this image....I seriously can't stop staring at it. It's like looking into another dimension and seeing god.............:oops:

Well, an old-school programming language compiler takes one form of code and writes it into another form of code that represents execution of another form of code. Yes, there can be bugs along the chain, but if productivity is greatly increased, it might be worth living with having to fix the occasional problem that could arise, I would think.

Personally, I am all for scripting and/or automating as much as possible when it comes to repeatable tasks.
Essentially. And that's why I try to stress to people that I"m not really doing anything cutting edge. I'm just getting smart and using what I know to cut down my workload by 1/3. Fortunately my code has settled on a format and if I just keep a few simple rules in mind, there shouldn't be anything to break. *fingers crossed*

I knew I have seen that comment. I will do the right thing and delete my comment.
Done!! you deserve it my man!
You're not entirely wrong, but fortunately reading the code and spotting errors takes a lot less time then typing out all the lines, and then debugging it. So the net time saved should still be positive.

OMG! You just prison fucked my brain again.
Man, you gotta quit posting shit like this. It hurts. It hurts really bad. I'm just a simple blue collar guy, and you have just scrambled up all that remains of my entire thought processes. I can no longer see, hear, or think straight. Next time can you post this stuff in Russian or Chinese just so that I can avoid the temptation of trying to decipher what it is that you are trying to convey? I mean... I can read history, philosophy, the journal of astrophysics/quantum physics etc... and actually come away feeling somewhat more educated. But not so in reading some of your posts. You actually manage to make me feel significantly dumber. So I yield to you Great Sir. You are much smarter than I.

In all seriousness though,
Wouldn't it be wiser to keep the details of this accomplishment on the down low, so as to package it up all nice and pretty, and sell it on the open market? I would think other developers would be chomping at the bit for something like this. IDK.

Anyway, It's fun seeing you all excited this Mr. Hume.
I'd bet that if you spent about two hours learning python, you'd look at me different. You'd probably say, "Yeah you dumb fuck, you should have done that a year ago."

But because what I'm doing is highly tailored to my specific needs and the code is pretty simple, packing it up and selling it would be more work than reward. But I'd certainly be willing to help any other devs who are looking for a solution like it to set up their own and implement it.

But yeah, I am super excited about it because it cuts the work down by a 1/3. All that's left is the fun stuff, writing and rendering porn!
 

RomanHume

Sommelier of Pussy & Purveyor of Porn
Game Developer
Jan 5, 2018
2,390
13,341
Ha, I generally recognized your "type" awhile back - it's funny how us business folk have personalities which often reflect the type of work in which we specialize. Oh, and your areas of concentration are highly respectable, btw - not making a comment putting you down (quite the opposite).

BTW, when you describe generating the list of image file names and placing those into the script and image definition files . . . are those placeholders for the final image files based on cues from the script, essentially? That would be very cool, essentially offering an easy way to know where you are intending to fill in the blanks for any given scene, I'd imagine: write the script, run your code generator and then actually generate the image files to match the script's intentions (and your new generated code's filenames). Then just spruce up details or make customizations on-the-fly.
Don't how much you know about renpy scripts, so I apologize now if this is TMI. But in a renpy script, you have an dialogue and an image typically like so:

roger "This is some shit roger says."
scene amana talking
amana '"Now this is amanda talking."

So renpy looks for an image called "amana talking.whatever extension" and displays it by default. Alternatively, in a separate file I could designate what amana talking is supposed to be. In this case, renpy skips looking for it on it's own and instead uses the path I handed it in the second file.
The benefit is that I can add condition statements to change which image amana talking points to. So in my other file I put


layeredimage amana talking:
if some_condition:
"Path to an image"
else:
"Path to a different image"

In this way I can make the images reflect changes in the game based on things like your choices.

However, with this system I can only have one place holder called amana talking. And in the early days of the game, we kept having issues with these placeholders getting shadowed by other images with the same name, even though they were in different directory.

So to combat the shadowing problem, we devised our own naming convention for the placeholders:
[Variant][Scene][character][sequence][action]

So amana talking in the first chapter would look like:
la0101 amana 03 talking
This means the image appears in scene la0101, it's amana, and it's the third image in that scene of her talking.

Now, with the automation I'm working on, I can just type:
amana talking

The script will see that, add the scene name to the beginning, and tracking which number in the sequence it is.
So if it's the fourth time I've typed amana talking in the fourth scene, the code takes "amana talking" and turns it into:

la0104 amana 04 talking

I hope that makes sense.


In summary, I just type two words into my story and the program takes it and fills it out into the full image path and renames it according to my convention.

Then when it comes time to make the images, I have a list of image names and descriptions and know exactly what I need to make. I just make the image, name the file accordingly when I save it, and drop it in the directory.



Alright, reading over that I don't know if it makes any sense at all. Let me know if you need some screen shots to illustrate. =D
 
Last edited:

RomanHume

Sommelier of Pussy & Purveyor of Porn
Game Developer
Jan 5, 2018
2,390
13,341
So with all the code magic, and the purpose being to never have to do new code if you can avoid it in the future. Does that mean you are adding in extra code for your future games where you might have different UI/Mini-games/Other differences for future use?
Not adding code for future games, but writing the existing code so that when that time comes and I do want to add things, I can do it and it won't break what's already there. I'm future proofing it in a way by only having one object that requires updating to accommodate any new code, I can easily work on upgrading that object without ruining saves.

I'd say 95% of what I've got now will directly roll over into a new game. But with that I can still expand and add on new features with breaking the existing code.

Well there be more Lola conrtet?
Yes, absolutely. And once I get this coding project done and all my time is spent just producing content, there is a greater probability of her role expanding and maybe becoming more permanent.
 

Ghostface Reborn

Engaged Member
Sep 12, 2018
3,916
2,234
Not adding code for future games, but writing the existing code so that when that time comes and I do want to add things, I can do it and it won't break what's already there. I'm future proofing it in a way by only having one object that requires updating to accommodate any new code, I can easily work on upgrading that object without ruining saves.

I'd say 95% of what I've got now will directly roll over into a new game. But with that I can still expand and add on new features with breaking the existing code.



Yes, absolutely. And once I get this coding project done and all my time is spent just producing content, there is a greater probability of her role expanding and maybe becoming more permanent.
i'm glad. there's not many good looking trans girl models.
 
  • Like
Reactions: RomanHume

fried

Almost
Moderator
Donor
Nov 11, 2017
2,311
6,081
In summary, I just type two words into my story and the program takes it and fills it out into the full image path and renames it according to my convention.
I figured you had some processing logic which generated "unique" image names from a given place in the script and/or order of processing, but didn't know the details - interesting adaptation that you had to make for providing more flexibility and uniqueness in your naming to ensure that Ren'Py didn't reference something you did not intend.

Oh, and I didn't know anything about Ren'Py processing and logical conventions for image file references, so this was an educational read, thanks.

Then when it comes time to make the images, I have a list of image names and descriptions and know exactly what I need to make. I just make the image, name the file accordingly when I save it, and drop it in the directory.
This was the core of my guess+question from what you previously wrote, so makes perfect sense!

Essentially, you go from

written script with keywords ->

-> processed Ren'Py script with unique image file names/paths ->

-> <crafted images for the given scene subject, using generated name/path> to fill in the blanks

That's a nice pipeline!
 
Last edited:
  • Like
Reactions: RomanHume
4.40 star(s) 78 Votes