2018-Aug-22, Wednesday

felicitygs: a smiling shark with a lazer on its back. it slaps its fins and makes a heart. (Default)
So yesterday I said I was done messing with the inventory for now, but that was incorrect! I ended up getting a nicer version of the inventory system working today, and learned the valuable lesson of not forgetting my : when I write stuff. Whew.

That's unrelated to the title of this post though--the real big triumph today was debugging an issue I was having. There's a couple parts to this problem:
  • a $location variable that updates the $location to the current passage's name.
  • a check for to see if it's time to meet the witch
The $location update is not usually a problem. Most of the passages where the player sees the $location displayed, it is a section of town. However, most of the time I don't need the $location then. I only need the $location when I need to do different things based off where the player is. Most of those branches are not in the regular sections of town! They're part of other passages that I use for updates, but note that the update just updates to the current passage's name....

Every in-game night, the game checks the date; if the date matches one of the story events, it's supposed to send the player to that event. The event then takes the $location information and uses that to branch into the variations for what happens. This is a good idea in practice except... my $location update was grabbing the name of the passage, and not keeping the town location I wanted it to have.

So to fix it, I added a check. When the game tries to update $location, now it has to check for several things. One of those? See if it's supposed to update the location! I can add a tag to the passages where the location needs to not be adjusted, and it will now skip over updating the location. I added this tag to pretty much all the passage's that aren't part of the immediate town areas, just to make sure I don't run into this again.

I'm really glad twine has such good debug tools--I was super confused why the event wasn't displaying the way it should!

Work done
  • created a save and load feature, and set it to display in the header before everything else
  • merged the forage systems all into a single set of passages
  • added a check to not display the location, as well as the tag doNotShowLoc
  • on the same note, made a check to not update location, and the tag doNotUpdateLocation
  • redid the inventory from ground up into several passages
  • itemList stores all the items in a nested datamap, which then gets stored in the invetory array
  • removeItem removes an item, and sets a boolean $removed so that i can manipulate stuff when doing gift giving etc
  • addItem adds the item
  • slightly revamped the printInventory; properly passes player back to last location, as well as prints out items and descriptions
  • added the opening passage for the witch if player is at home
  • added a test for if the player stays with cousin; if yes, sets $metWitch bool to false
  • added check to home; if $metWitch is false AND it's after spring 7, the player can find a note; once the note is found, $metWitch is set true
  • added doNotUpdateLocation to so many passages
  • updated check for docks day 1 time change, got rid of $gameday1 variable

To Do
  • finish the meet the witch eventing
  • add the note to inventory
  • figure out how to make the inventory display WHAT I WANT heck
  • set up characters
  • set up relationship adjustments based off various choices thus far
  • create most the other plot beats to main story
  • a bunch of stuff from last time that's lower priority for now
Some rambling on relationship system
I'm honestly not 100% sure how to do this. I would like it to have a range; for several characters I also need to it diverge--if the player isn't being flirty, obviously they shouldn't be pinging the romantic side of things. At the same time, I would ultimately like the system to influence where and when characters do things--so if the player does choose to be a jerk, other villagers/people might actually go out of their way to avoid them. So whatever I make needs to be easily adjustable, and I want to have most of it in place before I start adding all the villagers.

For this alpha build, I do think I'm going to stick with just the witch, the orcamer, and cousin; I'll start adding in other people later on. That should be plenty--the orcamer and the witch are both romantic interests in the plot, if the player chooses to go that route, so they are both the hardest but most important to get running.

So we for sure need two stats:

$romantic[name]
$friendship[name]

Both the orcamer and witch have different values for what counts as romantic. The orcamer needs more traditionally flirty and upfront behaviour; the witch is established as having a fairly flirty past with the main character already, so casual flirty banter won't necessarily ping. Both will respond favourably to favours, gifts, etc. Even adjusting $romantic is going to require the player to have a base level of $friendship with the two.

$friendship will respond primarily to interaction, favours, being generous, not being mean to the character, etc. I do want it possible for the player to play the main character as a bit of a social idiot who does mean well--I think that over time the player will be expected to learn from behaviours, so I probably need $socialgaffs[name] as a counter as well; when said stat is higher, the other party will have a lower tolerance for the same mistakes. This, too, is gonna depend on each character--cousin, who is related and good friends when the game starts, will be a lot more forgiving of this behaviour, while the orcamer, who doesn't know the main character at all when the game starts, will be less tolerant of this. Higher $friendship means more leeway on $socialgaffs -- all our friends eventually fuck up, after all, and making it so the player doesn't feel like they can't make a mistake isn't what I want to do.

So that's four variables I need:
  • $romantic
  • $friendship
  • $gaffs
  • $townRelModifer
Each character will also likely have a couple triggers where, once they ask you not to do something again, it flips and if the player repeats that, the character will lose a fair amount of $friendship and be set to a state where there is an option to apologize/ask forgiveness. That wouldn't undo all the damage, but it would, again, allow for playing as a not very socially aware person.

For the start, I do think I'll stick to fairly small ranges, that way it's easier to test; I can add nuance and color as I go. Something along the lines of:
  • 0-5 : dislikes player, generally avoids
  • 6-10: acquantances
  • 11-15: okay friends - unlocks a couple extra topics of convo, unlocks some flirting; okay asking small favours
  • 16-20: good friends - plenty of more chill topics, some events for bad days/good days; might ask a larger favour
and romantic would be another scale:
  • 0~5: blooming crush, character slightly more flirty/vulnerable depending
  • 6-10: full crush: character likes player, prob offers a few little gifts; player unlocks option to ask
  • 11-15: character has a chance of asking player if they also like them
  • 15-20: character will ask; player also gets option to ask
if they get a yes on an ask, then that will route to a romantic relationship which is................. something else again whew. 

This should be a good framework to get the alpha off the ground though.

The Clan
The characters aren't the only ones who have a relationship with the main character; they all live within a communal village that shares a lot of resources, where people all know each other and so on. One of the big things is going to be how the town as a whole sees the player. This is going to modify opinions of pretty much... all the villagers, barring the witch. The more the player contributes to their village, the better standing they're in. So, even if a player is a reclusive shut in who never talks to anyone, it's still possible that the town will see them in a good light and the villagers will have a base favourable view of the main character.

This system is... probably also going to be a bit complicated; I need to account for the food rates going up and down, and how much the player is contributing to that. For right now, though, the main thing that affects this is the $haul stat--how much the player has given back to the village. The village also will provide food and such to the player for free; the general thought is the more well-liked and better the clan is doing, the more likely the main character will get gifts and such when interacting with them. 

For now, though, this is just rambling, to keep it in mind for later.

Themes
Which kind of brings to me what a key theme for this game story is--communities. I've been writing about found families and communities for a while, so I guess that's not a super surprise to anyone familiar with my work. That said, the main things on my mind for now are
  • how people choose to be part of their communities
  • communities as relationship
  • relationship to the community as important as our relationships to individuals
  • who we choose to include in our communities, and who we choose to exclude
Some of these I can't really do right now; the alpha is focused on getting the story with the orcamer done. I need more time than my mini deadline allows to get all of this properly set up, but it is informing a lot of my choices for the setting, various characters, and what events the player can do.

It's no real mistake that the endings will branch off in a bunch of different ways; I want to allow for players to choose how the main character interacts with their community, and decide what would  make him happiest. I can't account for all options, but allowing players to influence just how the main character integrates with their community, as well as their choice in whether they even want a romantic relationship, will allow for a lot more means to explore the kinds of connections we can make as people.

This one went on forever, didn't it? whew. If you got here to the end, thanks! If you glazed over, that's fine too :)


Page generated 2025-Dec-30, Tuesday 03:49 am
Powered by Dreamwidth Studios