NokiMo
outsiderartisan
outsiderartisan

patreon


De-number-ifying design

Of the various things I learned or came to learn about myself while making SS all these years, it's that numbers suck. Numbers create defined limits and defined points of articulation that are often unnecessary and actually complicate design when they don't need to. Take, for example, how SS calculates filth levels.

Filth levels are a social and visual attribute; as you have sex, filth increases. When it reaches a certain threshold, the attribute changes state. For example, in SS, the breakpoints are 15 (wet), 35 (dirty), 55 (filthy), and 80 (gross). The actual "gauge" for filth goes up to 200, though it has no effect beyond 80. But I made sure to make the gauge large enough so that I could move things around to create additional points of articulation or add additional filth states.

Using a numerical gauge like the one above for a system like this is probably the first solution most designers would think of. However, like many things that used numerical gauges in SS, I replaced these with simpler systems that removed the numerical scale entirely in favor of a design that is instead totally driven by the states themselves.

The design works something like this: when the player has sex or takes a cvmshot, there's a chance (the odds are very low at the start, starting at 0%) that the player's filth will increase by one state. If the player's filth state does not increase, the chance for the next time they get dirty is increased by a certain amount (~14% each time). Once filth does increase, the chance is reset to 0. The code in the image is what Hex uses to do this. This is sort of like a state machine in concept, basically an [event -> state change] structure.

The benefit of this system is not just its relative simplicity, but also its extensibility. If I want to add additional states, either to increase the points of articulation by adding states in between existing states, or to add more states to the end, I simply add them to the array. Data is totally separate from code, and I don't need to assign each state an arbitrary value and come up with magic numbers for how many "points" each cvmshot is worth on my scale.

I removed gauges from a ton of things in Hex. For example, SS uses gauges to track things like urination, lactation, lust, social events, emergencies, and more, while Hex simply uses cooldowns or odds that change over time where appropriate.

De-number-ifying design

Comments

For stuff like this specifically, no, since this only really helps me write better/neater code and would be a lot of work to transplant into SS for not that much payoff at this point. That said, a lot of improvements I've made to the codebase for Hex I have backported to SS, and I will continue to do so where it makes sense!

Outsider Artisan

Just wondering if there are any plans to update SS to use the newly devised systems?

Rafparin


Related Creators