Devlog #58 - We’re Making Bugs
Good morning! Evening! This month, we’ve got a couple things to cover: the bugs we’ve been fixing, NPC stores, and events. Generally, this time of year for us should be pretty dry and hot. This year, though, it’s been raining and storming a lot. Wow! Lovely!!
Small talk aside, something before we start is an addition to the Snacko team! Zoro joins us and has been spending the past couple of weeks chewing through the bug list. It’s been a huge help. As you know, we have a lot of bugs. Let’s talk about that for a bit…
🐛 Buggies
The other day, there was a comment roughly like, “there’s so many bugs, you guys must’ve scripted a whole bunch of them!”
And well, first of all, yeah.
Second of all, I realized there’s probably confusion as to why bugs exist. If you don’t make bugs, there won’t be bugs, right? Just make your code right the first time!
So, instead of just complaining about bugs this month, I figured it’s worth spending some time communicating with you why there are so many bugs to begin with and using that as a way to also tell you guys about what we’ve done!
#1 Somebody made a mistake
This one is pretty common. The person making said mistake is usually me. These mistakes range from “the character is spawning in the farm when the cutscene is in the town” to “a value was not set to spawn a certain actor”. Or, sometimes, it’s just simply missing data.
This one usually manifests itself in ways like a cutscene not starting, dialogue options not being shown, or a doubling up of NPCs in one spot:
These ones usually happen because there’s just a lot of moving parts in the game. Taking Nobu’s existence as an example, to have him walk around the town during the day, you first have his schedule manager that manages when actions start, end, and where they start and end. It also manages which days or which conditions trigger certain schedules.
The other part of it is the schedule actions itself. Within these, the data for how someone will get from point A to B, if they need a flag set (for dialogue), or if they should be wandering around, standing still, etc.
This is not accounting for the dialogue trees or the dialogue manager that handles the logic for picking the dialogue lines.
Nor is it accounting for the managers or event managers that log and set information regarding an NPCs existence or the events they can trigger.
So, to put it simply, most of these systems simply have a lot of fail points! Mix up one asset or pointer to an asset and the whole thing falls apart! One bug I fixed after debugging for 30 minutes was the schedule, actions, manager, quest, and invitation for the character was right. But at the very last bit of the schedule manager, the NPC selected was the wrong one…so nothing worked…
Ma’am…this is Pico’s house…
Not to mention it’s a whole job for everyone in QA to catch these in the first place!
#2 Fixes are creating domino effects
This one doesn’t happen too often because we try to account for all the system-level changes we make, but sometimes things can slip through the crack. A while back, we had an issue where you could open the main menu mid-cutscene (some cutscenes give you control to move around) and save. To fix this, we simply disallowed saving and loading during cutscenes. Easy!
No.
In the onboarding section of the game, part of the quest and tutorial day is Nobu showing you the ropes. Part of that sequence requires you to go to sleep and advance to the next day. But…you guessed it…if you can’t save, which sleeping will always auto-save in the auto-save slot…you can’t finish the tutorial cutscene.
In this case, the easiest way was to add a checkbox toggle for cutscenes “Allow Saving” instead of either breaking the tutorial sequence/other story cutscenes or allowing the player to run around and potentially break other events and scripted sequences down the line.
#3 Unintentional bugs
Well, okay, these are all unintentional. We don’t actually want any bugs. But these are ones caused not by error or a fix breaking old code. This is usually due to the code or the engine acting in a way that we did not predict.
I guess you can call that user error but eh 🤷
For example, Zoro found one a few weeks back that went like this:
When you are in the quest that teaches how to invite villagers, there’s a wall blocking you until you send the letter. The wall turns the player around and causes them to walk back if they try to leave, telling them what they need to do. If you jump on the corner of the house roof during this, you will get respawned under the map.
So, it turns out that there’s nothing wrong with the quest, or the cutscene, or the house…
The issue is the code that turns the player around tries to find a point in the world to walk your player back to. If you’re in the air, then it fails this check, because it’s not doing a “full scan”. Failing to find a valid floor point, the game gives up and puts you at 0, 0, 0.
This makes up the majority of the early day bugs we’ve been fixing these past few months. Many of our systems that worked flawlessly in contained, sterile environments didn’t hold up to other variables or changes in game state.
Part of this complexity comes from the way we decided to design Snacko: you get to pick which Grocer you want on your island, you get to pick where they live, etc. etc.
So I hope that clears up why there’s so many bugs and what kind of things we’ve been dealing with!
If you look carefully in the above screenshot, there’s also now a new waypoint helper. When you’re close to someone’s house or the way to a different map, a sign at the top of your screen will remind you where you’re going!
Hopefully this helps the directionally challenged (me, I’m directionally challenged).
🎁 Events
We had a lot of the dialogue set, but not the logic. Sure, the decorative assets were made, but they weren’t put together yet. I spent some time in June to make everything nice and pretty. It sure is a lot of fun seeing it come together! I hope you have fun grabbing yourself a bowl of Winter Stew during the Harvestfest!
Well, yeah…it’s in fall…but like, it’s still kinda cold so you can eat Winter Stew…
🛒 Shopping
Another one of these “we had all the assets and data but no one put them together” were the NPC shops. Since there’s no static “this is the grocer NPC”, we have a couple of custom touches depending on which of the grocer NPCs end up being YOUR grocer NPC.
These come in the form of custom text while you’re shopping, their shop portraits and background pictures, and in some cases, their inventory. The shop background feature has been planned for a long time. So long, in fact, that when I opened Mack’s shop background, I had to go and redo it because it, well, looked like…that…
Haha, woops. Looks like a different game.
We’ve come so far! And it’s thanks to your support. Thank you for reading these devlogs and cheering us on!
Back to bug extermination…
Extra thank you to our Patrons and Ko-fi supporters! Without you, Snacko development would look very different. We appreciate every one of you 🐾