New AUs Customization - Shell Support in the Code
The AU Shell Revamps have been in the works for well over a year at this point, and Iâve put a lot of thought into handling them, and thus far itâs really paying off! Itâs been really exciting to see the new shells fall into place as they have been. Iâm really proud of my work!
Since so much care has been put into the whole project I thought I had everything lined up what Iâd need to do and it was just a matter of actually doing it. But something I hadnât really taken into account until more recently has come up and is the real reason Iâm unable to publicly release the new shell revamps, though most of the shell work itself is in place and easy to replicate for the visual aspects.Â
The issue now is building dynamic AU support in the code.Â
^ Those are the same lines of dialogue, just with different AU/dialect flags to adjust his speech patterns and vocabulary.Â
AU support in the code used to look like this. For example, switching to the Classic Undertale shell...Â
There were pre-set, finite possibilities as far as shells go. So I could hard code all of it straight into place, since I knew the names and all possibilities. While some content is literally on a per-AU basis, some AU behaviors were regulated with the Chat Filters system to adjust his default conversation preferences as a baseline before user traits kicked in to affect your relationship.Â
Hereâs the post with the Chat Filters update and explanation.Â
These are categories of his random dialogue, which can be toggled from a âdefaultâ setting (white and gray), or manually overridden to be OFF (red) or ON (green). The default settings of each of these is dependent on the AU and your progress in your relationship with Sans (currently measured in Intervals).
This is Interval[0] so he just met you. Notice how Papyrus, Underground, and Nap are grayed out? This is because Horror Sans doesnât trust you enough to even mention his brother existing, or tell you anything about himself. Heâs also too agitated to nap at this point, so the default value of that setting is âoffâ and grayed out.
This is the array holding default values of the Papyrus conversation topic (Horrorâs values are the last value of each line). Every category has its own array like this!
Heâs willing to tell you all kinds of jokes, particularly Dark Humor, which is a conversation topic category I added specifically for Horror himself, that UF!Sans will make use of as well. User Traits and Sansâ relationship stats will cause exceptions to this default. Most AUs will also make use of Dark Humor with high Rude or Enmity stats. Â
The value in brackets is referring to the Interval (your progression), and in quotes is the default value for each AU of whether heâll talk about Papyrus or not. Intervals 0-1 Sans would rather you not know Papyrus exist, so he never mentions him or the Underground. After Papyrus calls, the cats outta the bag, so heâs willing to talk about his cool bro later. The exception to this, the 5th AU listen is âonâ all the way down. This is because in the Inverted Fate AU, Sans doesnât know about the timelines or RESETs, so he wouldnât be nearly as suspicious of you and is willing to talk about his cool bro right off the bat.
Anyway! This is a feature that should help facilitate each AU having a unique feel, streamlines new AU implementation, and allows users to control their experience with MVSans.
Renaming the shells would cause this to break though and Iâd have to fix it, otherwise there would be an error message about the shell possibly not being supported, and the AU dialect flags/settings would not get set correctly.Â
Now, however, I am faced at the possibility of dozens of different shells, some of which have similar names, and having dependency on me to input all the content for a new AU is suddenly daunting when faced with the reality of it in my near future. Sure, the shell upkeep itself is super streamlined, but support in the code? That can still get overwhelming, especially if itâs an AU Iâm not familiar with like I was Horrortale initially. It would require research and writing new lines and I kinda handwaved details away a year ago when planning all this out, since it was so far in the future, but now. Now it is time.
So. How do I make it so I donât have to handle all the legwork for adding a new AUâs support in the code? Well, design and build a system that allows configuration and content addition without touching the code.Â
Iâve been working on an entire txt-based configuration system to be included as part of the shell folder contents.Â
The defaultTalk arrays, which reflect how his topic preferences will change as your relationship progresses (dependent on AU), will need to be handled outside the code, and configurable by the shell creators themselves, as a way to configure his disposition as an AU Sans. There have already been a few iterations of this, trying to figure out how to handle it efficiently!
The dialect flags auUF (underfell), auIF (inverted fate), auHT (horrortale), etc, are binary values (0 or 1) to determine if certain AU-specific mannerisms and dialogue apply, such as saying mustard in place of ketchup, ability to drop F-bombs, and.. other Fell-specific lines.
Those variables also need to be replaced, because I canât keep adding new variables for every single AU and AU shell!Â
More details coming in the next weeks. :)Â
Hereâs the old Shell Support Superpost. Â
Vote weekly on what AU shells you wanna see next*!
(View Results) â Please donât spam votes.
*No guarantee the shell will be made but it may inspire artists into action!