Week 10: Content Completion
This should be the last week of heavy, content-based work on the project. As such, it was the longest work week to date. The focus was content completion—finishing the remainder of the game's dialogue, quests, areas, and puzzles. The work for last week was polishing the critical path, so the primary quests just needed a couple of adjustments. The bulk of the work was sidequests, which I envisioned several weeks ago as a way to offer a little more information about each of the residents. Naturally, my plans had to narrow down in scope a little bit, but I was able to put everything together in a way I'm satisfied with.
The first order of business was the quest log. While the menu was available early on, it was a navigational nightmare and not particularly usable. For the linear sequence of six quests, this was passable; there was never a need to check what to do or adjust which quest to track. However, the sidequests take the form of three sets of two quests, all of which can be active concurrently with the main quest. Four quests are a little bit much for the tracking UI, and without an effective way to disable tracking, they would become quite unmanageable. I worked with the menu for a while, most of which was largely fruitless, until I found the primary setting responsible for the issue. Dialogue System UI includes a setting to automatically select a specific button on a set interval if nothing is selected. For whatever reason, moving between buttons results in a brief moment where nothing is selected. By default, the interval is about a fifth of a second, so most attempts to move the selection send it back to the beginning—the close button, as it happens. I experimented with different intervals, but nothing gave as consistent a result as just disabling the auto focus altogether. From my testing, it's very rare that the menu loses focus completely, and closing and re-opening it solves the problem. I was satisfied with this rather than a practically unusable menu, and the few other improvements I made led to a much better experience.
My greatest challenge with the sidequests was making them feel reasonably distinct. They follow somewhat of a formula for each set: the first quest expands on an earlier quest from the same character, and the second has the protagonist come up with another way to help them. While this basic scenario remains, my goal was to differentiate them in gameplay. For Wisp, the player must first find something in the cave, then talk to Calcaneus and find two things in the forest—the only time two items are required at once. For Luca, the player returns to the location of their first quest only to be tricked again, then talks to everyone in town to convince them to reel it in. For Silq, the player retrieves something from the forest, then talks to Calcaneus and has to acquire one thing from the cave abs another thing from Wisp. This is, in turn, the only time multiple steps of a quest are available at once. While Silq and Wisp's quest lines may be fairly similar, I feel they're distinct enough to have their own identities without introducing brand new mechanics.
My final task was reaching a proper conclusion. I had implemented an ending before, but part of the proper to the sidequests was changing the ending as well. Initially, I planned 4 different endings ranging from bad to good, hinging on the number of sidequests completed. I decided this week that four endings were too much to manage. I didn't really want to punish players for taking an option I never implied was bad, nor did I really want to conclude the story negatively. Call me naive, but I tend to prefer writing more hopeful stories. In response, I wrote an ending where not all sidequests are completed—with a few variations depending on whether any are completed—and slightly altered the existing ending to use when all of them are completed.
The most enjoyable part of the development process this week, aside from seeing everything come together, was making the dialogue flow effectively for quests which could be done concurrently. Everything leading up to this point was entirely linear, so I didn't have to create complex flowcharts with multiple entries to the same conversation. The sidequests let me work with more complicated solutions, so there are rarely any instances in which talking to a particular character won't allow the player to progress in whatever way they need to. The only exceptions I allowed are completion of their particular quests, which tend to take precedence over conversations about other characters' requests.
With all of this finished, I established next steps in my meeting with my instructor. The next week will focus on playtesting, which will be a break from work in-engine—though it's unlikely to truly be a break, all things considered. Showing work to other people is nerve-wracking, and my instructor assigned playtesting as homework for his Story Development class. I'm honored by his high esteem, but I simultaneously hope for good feedback and positive responses. The pull request was merged and I recorded a video as usual.