Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines
(1 edit) (+1)

The first mod in the newly founded mod section, congrats :)

Noticed that in "var hair = person.haircolor" Auburn is missing. Also the game scripts and most portrait packs use the spelling "Blond" as opposed to "Blonde".

There's also jelly hair. But no need to add it as only slimes have weird gloopy hair, so the racial sorting will handle it. MB :S

Look forward to trying this mod (once I have updated the names on my portrait packs).

That's a comment I carried over from AK|Phantom's version, it has no effect on how things actually work, I think he added it as a reference.  The game uses blond too, so the blonde in there is definitely misleading.  Preferably remove the comment from the code later as better if they're referenced from elsewhere anyways, like races.gd.  The actual code uses exactly whatever string is set on the character.  This can be almost anything as dying hair lets you type in whatever you want. Not that this code ever runs after that, but I was thinking it'd be nice to add a button to re-do the random portrait in case you changed things or didn't like what it chose but didn't want to manually choose.

Next up though would like to filter on titssize and asssize.  Will need some sort of suffix for each, Ass seems obvious, but should it be Tits or something else for them? or maybe multiple? I could just have it match <size>(Tits|Breasts|Boobs).   Was going to wait for a pack to come out with something named for those first.

I appreciate all the work on the packs, that seems 50x harder than what I've done, and without them this mod would be useless.

Hahaa, well it's evident I don't know how the scripts work.

I'm about to re-upload a portrait pack that is named to work with this mod. It's the Seraph gals one. Time permitting I'll test it out and rename the other packs once you're happy this mod is finished.

I don't believe a software project is ever truly finished. Right now I'm just writing it against what packs are out there. If you or any others add additional tags to portraits then I'll filter on anything that's reasonable. Only preference would to never rely on position. I don't want to see "(Brown, Tan, Huge, Flat)", with there being some expectation that it's hair, skin, tits, ass.   I could handle it, but I think it's less intuitive for users and more restrictive in what each pack creator does.  "Brown, TanSkin, HugeTits, FlatAss"  would be much preferable. I can handle that in any sort of ordering, any sort of separators, could even be directory names instead of in the file. Can optionally be more specific too for hair, BrownHair.  Can also specify multiple if it's kind of in between.

After that there is still always room for improvement. Could add an in-game UI to customize the priority of the filters.

Had thought about a weighted system, where it wasn't a hard filter, but instead a preference for a match. Probably still best to do hard filter on race and sex, and probably age, but if it also starts trying to match on everything else, then determining priority probably be personal preference.  If instead it gave a score based on how much each feature matched, with optionally priority for each, so that way if one pic matches skin and hair, while another matches skin and tits, and another matches hair and ass, those 3 could maybe have equal footing. Rather than it filtering on hair, and removing the one that matched skin and tits.  Also with user preferences, someone could say they want the tits to match more than anything else. Then even if it can't match the ones they consider less important, it'd always match the tit size.

As mentioned, I'd also like an option to re-scan for portrait.  Helpful if you add more packs, or have modified the character, or just didn't like what it rolled and still too lazy to manually select one.

roadmap wise, I'll probably add things in roughly this order:

  1. Rudimentary tits and ass filtering.
  2. Weighted system for hair, skin, tits, and ass matching. Weights hard coded in the code, but could edit them before applying the mod.
  3. Re-scan button on Customization page.
  4. Edit weights/priority from UI.

#1 probably be done tonight/tomorrow.  #2 maybe also be done tomorrow, but probably later.  #3 means figuring out how to use modding system to modify UI and instead of wholesale replacing something,  inserting into it.  Probably tackle it more on the weekend.  #4 might never happen, depending on how hard #3 is, and how painful I find GDScript plus the rest of the code base.

Ambitious doesn't quite do that last post justice! A weighted system for hair/skin tone etc would be fantastic.

Seeing as you seem up for a challenge. There's been something bothering me a little. Once the portrait packs are all fully 'tagged' with colors/asssize etc , some beautiful portraits will never be chosen by the script. For example, there are Dryad pictures with fair skin and blue hair, while in game Dryads only ever spawn with green skin and green/purple hair. All it takes is a couple of pictures labeled with greenskin to make sure the others never get picked.

You can still manually select any portrait, so it's not a big deal.

There are several possible solutions to give every portrait a chance to appear on random slaves.

  • Create a separate mod that only factors in race, gender and age
  • Modify the other game scripts so that slaves spawn with a wider variety of pre existing skin and hair colors.
  • Create a single brand new ambiguous skin and hair color (eg "Unnaturally colored", "Hybrid") That can be added to the scripts that generate slaves. Then put that in the names of the 'unlucky' portraits so that they have a chance to appear.
  • Something incredibly complex whereby if a portrait name doesn't have a fitting racial hair/skin color, it is temporarily given one that would naturally fit its race.
  • Make it so there is a low % chance to disregard the color checks each time a slave is generated.

I quite like the "brand new skin and hair color" one, as it allows the generated slave's matched portrait to be accurate. Without limiting available portraits and without creating endless color combinations to find portraits for.

As I said, it's not a big deal. Just throwing out ideas :)

"Make it so there is a low % chance to disregard the color checks each time a slave is generated.."

That is what I was thinking of doing with the weighted system. Start every portrait with a weight of say 1,  for every matching attribute add 5.  A portrait that matches all 4 attributes would have a weight of 21, and thus be 21 times more likely to be chosen than one that matches nothing.  Make it so you can adjust those weights, both starting and per attribute, even if it's just modifying the script file in the mod before applying it. You could thus then set a weight to 0 and it would no longer have an effect on selection at all.

"Create a single brand new ambiguous skin and hair color (eg "Unnaturally colored", "Hybrid") That can be added to the scripts that generate slaves. Then put that in the names of the 'unlucky' portraits so that they have a chance to appear.

Something incredibly complex whereby if a portrait name doesn't have a fitting racial hair/skin color, it is temporarily given one that would naturally fit its race."

Those could be combined.  Could go through possible skin colors and check if any match the portrait, recording that. If none do then list of matching colors would be empty.  When filtering, could consider an empty list of colors to match all possibilities.  Tie that in to weighted system, but consider a "no-color-found" situation to be a lower weight, like wrong colors = 0 weight,  matching color = 5,  no color = 2?

It'd depend upon probably doing a cached read of portraits, as it might start having a performance impact if doing so many comparisons against a large library of portraits every time a new slave is generated. In general though I like splitting up the code into "Generate portrait attributes" and "match portrait" chunks anyways though.

(1 edit)

Seems like you're on top of it :)

It a world with such a variety of interbreedable humanoids, it's no small wonder that many wild monster girls and bandits have crazy hair and skin colors.

With regards to "brand new ambiguous skin and hair color" it's pretty easy to check the default color ranges of a race while naming portraits. So adding one or two extra 'tags' (to those that deviate from racial norms) is not difficult on my end.

I'll leave the math that allows these hybrids a fair chance at appearing to you, and start looking at the race.gd and existing portraits packs to determine which races are the sluttiest have the most deviation from racial norms.

I've restructured it so it now only scans for possible default skin/fur/hair colors, and if it can't find any of those, it considers it to be unspecified.  Also realized existing code only considered hair color and ignored fur color, so all those colors assigned to beastkin/halfkin never got used. so updated it to use hair if set, otherwise use fur.  Also got structure in place to do weighted random selection, however there's a bug with the current mod loading code preventing me from doing this in a more efficient manner( I wanted to avoid re-scanning portraits on every new slave).  it's a simple single-line fix so hopefully Maverik can fix it soon, but means next version of mod will require latest version of the game.

(1 edit)

Maverik's updated and re-uploaded the current version of the game at least once today, if not more. Hopefully you won't have to wait long.

EDIT: Faith rewarded :)

I worked out how to make a line adjustment mod that adds ambiguous hair/skin colors, and which races need it. However, given how much work sexiestmanalive has put into naming portraits already, i'm going to stop working on it as of now.

I'm really glad you are working together :)

With your weighted system combined with the option to choose the weight each body part holds, it sounds like every portrait will now have a chance to be chosen. Thank you.