Page 1 of 1

Dev Diary - Gone Bad Party and creating custom stories

Posted: Fri Aug 03, 2018 3:01 pm
by peter980
Dev Diary - Gone Bad Party and creating custom stories

I figured to write small article on my experience in making this story, since I assume my experience will be very unique compared to other story creators.

If you do not know, I have not used Custom Story Creator, when making this story. There are couple of reasons for this:

1) CSC is always released a week after official release. And I want to start making new version during beta release time, if possible.
2) I have programming background, so I am used into writing scripts directly. Story and character files in the game are JSON objects, which is industry standard for sending and storing data (not so much for writing scripts, but nothing is perfect).
3) My story is edit of official Original Story, so no creating everything from the scratch.
4) CSC is cumbersome in doing some stuff. Like copy pasting same section and then doing small edit to apply to multiple characters or items (CSC 0.8.0 has added some improvements regarding this).
5) Easy to see whole picture by looking into game files and being able to search through it. In CSC most of the stuff is buried in the menus
6) Find/replace functionality - enough said.

There are several challenges of making edit of Official Story. It changed on every release, so I need to do updates constantly. The bigger the release the bigger the efforts.

Due to this I elected to do several constraints to make project manageable:

1) No new dialogue. Story needs to work as override and use already voiced dialogue. Eventually, I created classic custom story too.
2) Reduce the edit to minimal number of files. I chose "Original Story.story" file for controlling game actions, and "Vickie.character" file for controlling game events. This did make creating some things more difficult then editing more files, but my reasoning was that this way it would be more easier to integrate any new release changes, if I keep number of edited files to the minimum.


So how it all started?

When I started fidling with this game during 0.8.3 era, I noticed that story files are saved as JSON objects. Then, just for fun, I edited inspect action for all the girl characters to strip the girls and initiate cowgirl sex. Nothing that could not be done in console at that time.

Then I realized, why not script some more interesting actions. Why write it all in console, when I can have it automated in the script.

Why not have all girls dance in the dance room, without roaming away?
Then, what makes Stephanie best dancer, and how to apply that to the other girls?

Eventually, 0.8.7 was out that implemented girls covering when naked mechanic, that at time had no equivalent console command to modify. So, to change that at all, doing something in story files was mandatory.

Over a time, I added couple of more triggers, like thermostat controlling girls clothes or having button that would teleport Vickie into the story. I even added, inspired by one older story that I forgot the name of, the script that would have character switch the partner during the sex, without any side effects.

Funny thing is, some of the stuff that is in the story, is direct consequence of the existing bugs. For example, if you do not know, exiting intimacy action does not end intimacy sounds. So for me, only other option to fix that at the time was to switch character exiting intimacy from sex to masturbate. And it worked, even better then I thought it would. Eventually when masturbate ended, so was the intimacy sound. And that stayed in the game (and original bug is still in the game too).

Other common occurrence was having characters stuck in walls during sex, due to free nature of places in house where it could be started. I added bunch of code that would move characters toward player, to make this less common, but it was never solved correctly (note that newest 0.10.4 has some changes that helped).

At some point, inspired by mada7's Sluttier Party series and older Hypno House stories, I figured why not make an alternate Original Story, that would have some stuff I have added over time.

This was the toughest point in story creation. I needed to scan through all existing story lines and remove any points of failure. For example, do not allow Ashley to leave her room while naked, if starting dancing party. Or especially not for Katherine if she is already in bed, since it would break that quest. There were dozen and dozen conditions to be made aware. This was also a point when I started noticing original story game bugs and reporting them to Eek developers.

After I did this, the whole alternate story seemed a bit cold, too similar to a playground, like Hypno House stories. You could do original story stuff or switch to new stuff at any point, with the click of the button, one having no relation to other.

So at this point, "gameplay" was added, with seduce/tempt mechanic that controls how new stuff is unlocked, separately from original story stuff. It took a lot of balancing to make this right. To easy makes it pointless, too difficult makes it do grindy and frustrating.


What were the challenges:

1) Lack of OR condition. This resulted in a lot of messy and duplicate code. There are even duplicate actions I added, which are masked by having whitespace at the end of duplicated name (like "Temper" and "Temper ").

2) Lack of "is character having sex with character" compare. This required a lot of custom code to track who is intimate with whom.

3) JSON is not script language but data storage format. Thus not best for the task. On the other CSC was still cumbersome for me, so I endured.

4) Original story bugs. For my story to work well, I need predictable end state for girls after they finish original story content, either by completing or botching quests. So sometimes I needed to fix, or resolve endings for some characters, just so they can work with my new content.

4) Making story survive big content updates. Huge things like new Ashley or Stephanie story stuff. While actual porting the story to include new stuff was easy, due to having only two files to edit, the biggest challenge was adding all checks to make sure new stuff does not get broken when mixed with stuff created by me. Lots of story script reading and playtesting was needed to make this all right.

.

Hopefully, this was an interesting read, and will help new story creators as well as developers in improving the House Party.

Re: Dev Diary - Gone Bad Party and creating custom stories

Posted: Fri Aug 03, 2018 3:09 pm
by eekdon
This kind of post is a great way to make sure we're on the same page as our story creators in terms of technical approach to story creation and content desires, thank you! We want to be able to understand and accommodate more than our own writer's approach to making stories, and that can get hard when the rest of us are stuck doing more than one job all day, or face-first in Unity/Visual Studio/Maya/JIRA/etc. I'll make sure our lead dev and writer get a look at this.

Re: Dev Diary - Gone Bad Party and creating custom stories

Posted: Fri Aug 03, 2018 11:25 pm
by mada7
I'll second a lot of this. One feature I'm very happy got added in on this version is breaking the dialogue into 50 line blocks because I'd have some characters with 200+ lines of dialogue and manually scrolling through all of them was exhausting.

Id also love access to the scripts as an amateur programmer myself I'd probably be able to do even more than I already do with this

Re: Dev Diary - Gone Bad Party and creating custom stories

Posted: Tue Aug 07, 2018 11:06 am
by eekdon
mada7 wrote: Fri Aug 03, 2018 11:25 pm Id also love access to the scripts as an amateur programmer myself I'd probably be able to do even more than I already do with this
Weeellll while I do love the idea of helping to broaden the horizons of fellow beginner-intermediate level programmers in any way we can, we aren't a NPO and our application isn't ever going to be "open source". So core, Eek!-created scripts are off limits. However, how much user-supplied customization or scripting we support in the long and very-long term is certainly up in the air still.

Re: Dev Diary - Gone Bad Party and creating custom stories

Posted: Tue Aug 07, 2018 11:26 pm
by mada7
erasmus wrote: Tue Aug 07, 2018 11:06 am
mada7 wrote: Fri Aug 03, 2018 11:25 pm Id also love access to the scripts as an amateur programmer myself I'd probably be able to do even more than I already do with this
Weeellll while I do love the idea of helping to broaden the horizons of fellow beginner-intermediate level programmers in any way we can, we aren't a NPO and our application isn't ever going to be "open source". So core, Eek!-created scripts are off limits. However, how much user-supplied customization or scripting we support in the long and very-long term is certainly up in the air still.
I wouldn't want or expect full access to the core eek scripts but maybe access to the character script(s) to adjust/customize how characters behave or what items can do/check for. For example changing what the camera item can look for in its pictures or adding some extra functionality to Madison's phone UI

Re: Dev Diary - Gone Bad Party and creating custom stories

Posted: Wed Aug 08, 2018 5:39 am
by Kevner
Interesting read. I don't have the same experience or patience to work that way, I feel it gets complicated enough with a visual interface helping to keep track without everything getting lost within hundreds of lines. I've had a look but too many lines just mean nothing to me, but maybe one day... The story I've been working on is far too messy to give up on the CSC, and it's built from scratch so I'd get dizzy just thinking about it


Anyway, I agree regarding scripting. We don't need to see beneath the hood and ruin trade secrets, but some way of injecting our own script (basic unity compatible or java I dunno what's possible,) either at the top of the story file or whenever necessary triggered through an event, would probably increase the possibilities quite significantly.

In any case, what I'm thinking instead is the ability to trigger console commands from a CSC event. Type the whole line out, whatever it is, and it triggers without using the console itself. This could be a shortcut to access more options not yet added to the CSC, such as body scaling, or positioning with warpto coordinates.

Re: Dev Diary - Gone Bad Party and creating custom stories

Posted: Wed Aug 08, 2018 6:37 am
by peter980
Ideally, you would want everything exposed in console to be available in CSC as actions.

After all, both CSC actions and console commands tie to the same under the hood game engine.

.

Regarding other stuff, anything that reduces the need to create duplicate code would be welcome.
OR condition, option to put multiple actions in the same condition (essentially add "code block" feature), for each loop (like loop through each natty lite and do something, or remove top of every girl from this list, etc...).

Even some sort of "templating" would be great.

For example, let say I have an intimacy script that does a dozen or so actions. I need to copy exact same script like 8 times and just change name of the girls. If you had some sort of function or template, where you have single script and just change the variable that is the used actor, it would be of immense help. Plus would not need to maintain several almost identical pieces or code. This is already tough if editing JSON directly, but is probably unmanageable through CSC (way too error prone).

Re: Dev Diary - Gone Bad Party and creating custom stories

Posted: Fri Aug 10, 2018 10:14 am
by peter980
One suggestion I have for story creators that use CSC is to not be limited just by it.

For example, if you can't copy paste everything you need, then just export the story, do the edit in the nodepad++, and then import again.

Same for things like deleting dialogue lines.

Also if you need any kind of search and replace (like renaming single item everywhere), its faster to do the export, use good text editor to do that, and then import again in CSC.