Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Strive for Power

Fantasy Slave Management/RPG Erotic Game · By Strive4Power

Modding - Races (Semi-official)

A topic by KuraPanda created Aug 25, 2018 Views: 7,787 Replies: 21
Viewing posts 1 to 9

Hey everyone,

I'm Kura, the new coder signed on to re-factor some of the game's original code.   Moddable sidequests (events) is coming.  Next up is re-factoring persons and races.  Since this is tied closely to existing races, moddable custom races, and portrait pack search/sort/filtering, I'd be happy to hear thoughts on what everyone would like to see?

Possible topics - sex parts? body parts? racial traits? stat modifications? abilities?

One thought so far:

  • Re-do available color options for default races - possibly dynamically add in skin tones/hair colors/etc based on portrait tags ?  Fuzzy matching and nearest-match is also possible.  Fuzzy as in 'blue' = [sky blue, cerulean, sapphire, ocean-blue, navy].  Nearest-match as in 'blue' is closest-match to [green, purple?].

Custom Quests, Custom locations, Custom mansion upgrades, Custom Tails, ears, fur, etc

Custom  tattoo's custom Pearcings, Custom traits...

I'd really like to see the bat wings changed. Right now, there are only red and black wings, and the red tends to clash with my blue-toned dragonkin. I'd like to see the color removed entirely from the description and turned into one single "pair of leather bat wings", allowing the players to decide what color is it through imagination.

I think a family tree for each charactor (including PC) would be neat, sure human's and beastkin can make half babies, but the lack of half-species spawn is large

(1 edit)

Congratulations Kura :)

To clarify, by events you mean those end of day little stories with a choice in response? (eg Mr Scylla broke a priceless teapot, the oaf. Do you: A. Make him eat the pieces. B. Buy some magic glue. C. Sexytimes)

Possible topics: Everything you mentioned, yes yes yes. Dragons have had ordinary wangs for too long.
I'm interested in modding whole new races with new parts and racial traits, so anything that paves the way for that has my undivided attention.

Thanks, the new event system is for entire sidequests - emily&tisha, cali, ayda, etc.  First step is to put the new system out and see if it bugs out for anyone.

Then anyone comfortable with looking at GDScript can see the event code all contained in one place instead of spread over random core game files.

The actual new sidequest/event modding would be done through basic human-readable  .json files.  I will officially add support for that to the modding folder *after* some live testing to make sure it's not horrendously breaking the game. =D

I'm not a huge fan of json, but seems gdscript doesn't support anything better.  As long as there's a way to still bypass that and do it via gdscript it should be fine.

I'm assuming/hoping you're going to re-implement this as more of base and sub classes containing everything relevant/unique to that class/event.  So instead of everything that say a Scylla can do is spread out through a dozen files, you instead have one Scylla class that extends the base Race class and adds modifiers etc. that get called elsewhere.  Then adding a new race involves creating your own new subclass and inserting it into an array of possible classes.  Fine with the exploration events needing updating so your new race appears though, as I think those should continue to be more hand crafted. Though maybe they could define a biome, and classes could define what biomes they appear in (and how often), then some events could just pull from whatever races can appear in those biomes?

This all sounds awesome to me from a technical point, but also not sure how much it's worth it, game seems to be winding down at this point and is still pretty fun as-is. I'm kinda more curious about any ideas on next projects.

Yup, json seems to be what Godot provides the most built-in support for.  Json is just the data storage format to separate code from data.  The data may be created within GDscript, a tool that writes to json, whatever.

I'm keeping an eye on when the event system re-factor I did hits public testing.  If it unpopular or has issues I want to take that into consideration for how I do races.  I re-did events entirely as you describe, however.  Classes, sub-classes, self-contained code within an event system that is separate from external code.  Internal changes don't break code, because events are accessed through defined public accessors.

I intend to do the same for races.  I don't want to complicate races too much, but from community suggestions/feedback I'm focusing on a few key issues. 

  • Dynamic color palettes - both modded and official races define 'default' colors for hair, eyes, parts, but those are extended at run-time based on portrait tags ("blue orcs"). 
  • Separating parts and colors better - leather wings, feathered wings, bone wings + color.  Not black_fuzzy_feather_wings.
  • Custom body parts - I'm considering some restrictions here rather than a  'bag of parts'.  Perhaps more arrays of part types.  So modders can put in eyes/sensory organs, limbs (arms/legs/universal?), etc.  Wings, tails, ears.  Sort of a Mr. Potato-head system.  I'm open to better ideas.
  • Biomes - Totally cribbin' off of DnD here, but I definitely intend to include biomes in the race definition so that exploration can auto-load new races in the future to the correct biomes without additional coder work.
  • Combat/Sex Function - This is something I feel is important, but I don't know how the community feels.  I'd like to 'tag' body parts with combat and sex functions.  That way two different races can both have 'tentacles', but one tentacle is a 'penetrator' and another tentacle is an 'orifice' or 'both'.  Same for having body parts modify 'combat'.

The game winding down does affect how willing I am to commit to extensive changes.  Similarly to you, I'm quite curious about future projects, because frankly... whipping up a new game base using Godot doesn't seem *that* hard.  It's my first time using Godot and for a turn-based style game it's more than adequately capable.  Godot's scripting and C# mono coding is way more accessible than directly coding an engine.

Yeah tweaking mods for this has been my first real exposure to Godot.  Does seem much easier then going into a full on Unity game, but more flexible than trying to abuse say Ren'Py into a full on game instead of just a visual novel. There are C# YAML libraries, so was curious how hard that'd be to insert in to the project.

Once the races are classes, it makes it easier to extend that in various ways, so probably best to focus on getting the current setup moved over. though in some ways I guess that does mean maybe simplifying how some things work to make them more generic.

(2 edits)

Is adding a new official race out of question?

Been working on a portrait pack based on MGQ and noticed theres a ton of insect girls. 
A simple new Insect Race could cover an enormous amount of completely different looking girls.
Similarly, I would change the Dryad Race to Plant Race thus allowing for a much greater variety of plant girls.

EDIT:
I actually take my suggestions back. I realize this game is aiming for specific races so it doesnt make sense to have a generic Insect and Plant races when theres already specific Beastkins instead of just Beastkin.
Please make all the changes required for custom races so that people can add in completely new races with new body parts for them.
@Mousekin Its that pack Im working on. Theres a ton of things left to do in my opinion such as replacing clothed body images with nude ones when available and so on... lets not turn this thread into a chain of replies unrelated to this topic so send me a PM if you want to discuss about the pack

i already made a portrait pack with mgq... it's missing some races and such, but that's for immersion purposes.

How to PM?

I don't see a problem with adding new official races (there are quite a few already).  I'm looking to see if we can make 'races' more unique and meaningful with Maverick for the re-work.   Although the game uses specific races, it is likely that I would create major race species fitting with the game's current pattern - humans, beastkin,... insectoid, plantoid, slime-moid, dragon?, rodent (for mousekin)?

In these species groups would be specific 'races' - wolfkin, foxkin, etc.  Then they could interbreed giving us the half-breeds

Perhaps Halfkin dogs, a Offbrand of Long-Domesticated wolf-kin

inother words, Wolfkin who are Slaves, who get pregnant, give birth to more wolfkin, then down the family line, potential for dogkin to be born?

Oooh, interesting.  Domestication of species over time?  That's a whole  new route. 

I'm currently thinking of making half-kin just hybrid of two 'regular' races.  So human-beastkin hybrid or beastkin-slime hybrid = half-kin (human/beast) or something.  Something I'm still considering.

I do Like the fact that you can breed humans with beastkins to get halfkins. Nothing make's breeding more Heart warming than to know half your gene's are in the offspring... ahem... anyway

i think the human, and beastkin > halfkin is really nice.

There's something in the games 'lore' about Halfkins having a the full beastkin gene that can come out. So any halfkin mother could have a beastkin child... with any race as the father. I'm not sure it functions this way in game. But it would be interesting to have a new halfkin race, which had a powerful beastkin variant that could only be obtained through breeding.

Or hell, just do it with dragonkin. Give them a chance to give birth to full on dragons!

>I'm Kura, the new coder signed on to re-factor some of the game's original code.

Congratulations!  I look forward to seeing what you can do :)

Do you have any particular strategy, priorities, or coding style?  Is there anything which prospective modders ought to know about, so that we can avoid conflicts?


>One thought so far:

Main suggestion: would it be possible to setup a semi-public code repository?  It's fine if you restrict access so that it's visible only to high-tier Patreon donors (or prolific modders, or whatever).

Right now we have people exchanging code snippets on various forums (for bugfixes, new features, etc).  The version information and time-stamping on this stuff is weak; it's tricky for users to determine whether they have the latest version of anything (and if something goes wrong, then it's difficult to figure out whom to blame).  It would be cleaner if all of this collaboration could be mediated via difftools, branch merges, and pull requests.  If we have bug reports and feature suggestions in the same place as the code (using a service such as Github) then that's even better: all of the relevant information can be linked together.

Even if the repo contains no code, then filing our suggestions and bug reports into a database still gives us a few advantages.  It's much easier to identify duplicate ideas and merge them.  It's easier to tell whether a particular issue has been addressed, or whether it's still outstanding.  It's easier for users to build on each others' suggestions (by appending to an existing ticket).  Tickets can also be assigned relationships and priorities, which helps users (and modders) to understand the critical path for development.  Silly example: code refactoring → moddable quests → CaliQuest alternate endings → hand-holding scene → 2-handed weapons → dual-wielding → anatomy rework → 4-armed lamia subspecies → 4-handed weapons → quadruple handjob sex action.

I understand that the devteam may be reluctant to expose source code, because it risks splitting the fanbase.  I understand that code leaks undermine the "early build" incentive for Patreon donors (which is why Fenoxo removed public visibility for his repo).  Nonetheless, I believe that a semi-public repository could provide significant benefits for modders - and the availability of cool mods will help to attract (or retain) more players.  Even if you choose to keep the source code private, it might be worthwhile to setup a public Github page as the preferred location for bug reports and suggestions.

Fuzzy-matching for colors is a great idea, but it shouldn't be a line of text in the middle of a forum post.  It ought to be a trackable task (or milestone, or whatever) within some kind of project management tool.


>Next up is re-factoring persons and races.

I've been mulling over a mod idea which involves many racial changes.  It's currently impractical because it impinges too heavily on unmoddable code (such as the core sex-scene stuff, anatomy, mental traits and preferences, etc).

A few parts of this idea could be implemented today, but the complete implementation would require many weeks of development and testing.  Hence, it's the kind of thing which ought to be submitted in the form of several inter-related tickets.  I'd be happy to send it in via a Github form, but I'd feel very silly copy-pasting thousands of words into an itch.io forum post.  Oops; I did that anyways.

My core concern is that training interactions and sex interactions become familiar and same-y by midgame.  The system is initially a bit overwhelming (which is good; the player's confusion mirrors the inexperience and low status of the player character).  Ideally, the game would gradually introduce new mechnical challenges as the player's skill increases.  Magic and potions do add some extra resource-management workload to the player, but they also simplify/bypass some of the core challenge.  Once the player has found an effective midgame strategy, they'll probably be able to ride that strategy to endgame.  That's not ideal; it means that the player is performing repetitive actions and losing engagement.  Sex ought to be about exploring a partner's body and quirks, deepening a relationship (or changing its nature), wielding power, experimenting with control and submission, providing punishment or reward (or both).  But unfortunately many players will find an optimal way (within the game's ruleset) to have sex, and beyond that point it's just a "click buttons → get mana" minigame.

New species of monstergirls are encountered gradually as the player progresses through the game, so they give us an obvious insertion-point for spikes in novelty and challenge.  The player performs a familiar action, but they receive an unexpected response.  Example: "I saw this weird thing walking on the road, so I knocked her unconscious and brought her to my dungeon.  Then I stuck my dick in, but the creature didn't react at all.  Am I penetrating the correct orifice?  Are we absolutely sure that this creature is female?  Does she truly feel nothing, or is she just stubbornly refusing to show pleasure because she hates me?  Is she perhaps giving out a contented moan at an ultrasonic frequency?  Do I need to provide some kind of pheremone incense so that she'll become interested in sex?  Do I need to mutate my dick to match a male of her species?  Maybe I should try whipping her to see whether she reacts to pain.  Or I could try to read her mind magically."  A player with limited resources might refuse the opportunity to capture an unfamiliar species because "I don't know how to deal with harpies; she'll probably just eat my food for a month while learning nothing; if I try to make her work then she'll fly away; if I try to sell an unruly harpy then the reward will be pitiful.  I'll just release her into the wild."  Named NPCs would become much more important for new players, because their hardcoded traits and stats (devoted, grateful, trusting, hardworking, slutty, etc) would make them predictable and easy to deal with (unlike their randomized kin).  The goal isn't to frustrate the player; racial traits shouldn't be purely negative.  Let's say that a human with moderate arousal becomes distracted and suffers a malus to combat skills, but maybe an aroused Taurus exhibits territorial aggression (str++ agi--), while an aroused Lamia will randomly use a constriction attack instead of striking with her equipped weapon.  The point is that the game could provide small surprises and challenges via exotic species - but if the player feels overwhelmed then they'll always be able to focus on more familiar species (or accumulate more resources and try again).

Currently this doesn't happen, because characters and races are basically just attribute blocks.  Orcs are humans with green skin and +4 STR.  If the player has successfully trained a human then they'll have no trouble training an orc.  The "Uncivilized" trait is especially relevant here, because it tells the player something about the character and the game world but then it reinforces that message via gameplay.  An Uncivilized character can't be handled with the familiar midgame strategy.  The player is forced to pay attention and consider all of the tools available to them.  We need more mechanics like Uncivilized.

Ambitious modders could extend the game's difficulty curve (and deepen the MGE immersion factor) by implementing weird racial quirks relating to obedience, arousal, fertility, sexual preferences, combat effectiveness, job performance, social behavior, racist fear/antagonism between monstergirls, etc.  Novice modders could make cosmetic adjustments and minor-variant racial mods (e.g. Halfkin Bear, ).  But if we begin implementing these ideas right now then it will quickly become an incompatible mess.  We need a development roadmap so that we can avoid duplicating core-game features when writing mods, and so that we can avoid interfering with your own refactoring work.  We need effective code-sharing tools so that modders can build on each others' work, correct each others' mistakes, and ensure cross-compatibility among published mods.  We also need failsafe mechanisms (in the core code) or coding practices (among modders) so that players will reliably be able to deactivate a mod without corrupting their savegame files.

tl;dr - the itch.io forum isn't ideal for modding.  Please setup git repo.  Git repo will accommodate this particular conversation better than forum.  Monstergirls need to be weirder.  Modders can't deliver truly weird monstergirls yet.  Git repo allows weird-monstergirl suggestions and ideas to be linked with weird-monstergirl mod code and (where necessary) specific revisions to the core game and also with future bug reports which involve weird-monstergirl gameplay.  Please consider doing that.

(2 edits)

Wow, epic post.  I agree with  what you said.  I'm chillin' in Mousekin's new discord, https://discord.gg/VXSx9Zk 
Can do light chat there or just direct message on discord.

(1 edit)

I will bold filenames and any part of the code I change or add for ease of reading.
In races.gd please add which essence drops in the details section after stat potential. For example:

Human = {
           skin = ['pale', 'fair', 'olive', 'tan'],
           eyecolor = ['blue', 'green', 'brown', 'hazel', 'black', 'gray'],
           haircolor = ['blond', 'red', 'auburn', 'brown', 'black'],
           surname = names.humansurname,
           description = "Humans ar[...Removed to fit post]",
           details = "[color=aqua]Racial trait: Punishment expectations and praise lasts twice as long.[/color]
                             \n\n[color=yellow]Stat potential: Strength - 5, Agility - 3, Magic - 2, Endurance - 4 [/color]
                             \n\n[color=purple]Essence Drop: Basic Solution[/color]",
           stats = {str_max = 5, agi_max = 3,  maf_max = 2, end_max = 4}



All races should have an essence drop. I never bother catching slaves that don’t have one. Here are the drops I add to func getessence() in globals.gd

    var essence
          if race in ['Demon', 'Arachna', 'Lamia', 'Goblin', 'Orc']:
                essence = 'taintedessenceing'
         elif race in ['Fairy', 'Drow', 'Dragonkin', ‘Gnome’]:
               essence = 'magicessenceing'
         elif race in ['Dryad', 'Elf', 'Dark Elf']:
               essence = 'natureessenceing'
          elif race in ['Harpy', 'Centaur', 'Taurus'] || race.find('Beastkin') >= 0 || race.find('Halfkin') >= 0:
               essence = 'bestialessenceing'
          elif race in ['Slime','Nereid', 'Scylla']:
             essence = 'fluidsubstanceing'
          elif race in ['Human', 'Seraph']:
            essence = 'basicsolutioning'

      return essence


I'm not sure if this falls within changing race stuff, but while we are on the subject of essences I propose that essence drops scale based on Magic Affinity.  This is how I implemented it in newsexsystem.gd. Ctrl + F to find this line.
    globals.itemdict[i.person.getessence()].amount += (1 + i.person.smaf)

I initially suggested the above things via paetron, but the main guy doesn't seem to be touching old code as much as you, so I figured I'd throw these ideas to you. If you'd like I can send you the same google doc writeup I sent him.

(2 edits)

Another suggestion to do with male virility. Right now, there is no way to make a male sterile (incapable of impregnating a female) and still have a penis, and currently you can move the testes into the body, but still have them breed. I propose changing the current system to three states instead of two.

Currently it's: Removed (but really inside the body) and normal scrotum.

What I'm proposing: Removed (actually removed), Internal (the previous version of removed), and normal scrotum.

I ask because the new Internal would be good for Lamia, Scylla, Nereid and dragonkin to have males with internal testes. (I have to remove the balls for all but the dragonkin because think about it... a snake with balls. An octopus with balls. A fish with balls.)

Please.