Hi, I’m back. Let’s check the to-do list from last time:
Finish refactoring.Done.
Add audio/video toggle.Done.
Write dialogue. Not done.
Refactoring was a major undertaking, and it feels good to be on the other side of it. Previously, I had one character class, one camera class, and a wall of conditionals in each one. Adding new control schemes would’ve required me to pile a lot more code into those classes. Instead of doing that, I now use inheritance to give each camera and control scheme its own subclass, and I use controllers to switch between them.
That’s only one small part of my code-revision efforts. Here’s some other stuff I did:
Began using Scriptable Objects to standardize common behaviors, like lerping.
Wrote code that makes every voice line play out loud. I use regex to convert the text of each line into a string key, which is then used to find the appropriate audio file in FMOD. I also use Java to assist with naming the files and ink to manage the branching logic.
Rewrote the puzzle editor to give me more control over the board layout and NPC behavior. Baking buildings into the scene made for boring puzzle design, so I changed that.
Replaced a few overcomplicated scripts with animations. I realized that there’s no need to have procedurally generated blink animations or free movement during the Earth section of the game. Scratch several hundred lines of code.
Rewrote or improved pretty much every other script in one way or another.
On the graphical front, I switched from the weird lo-fi textures I had before to a toon style. The game looks more like this now:
(I’m conflicted about the lights. I love the way they look on their own, but they make dynamic shadows blocky and bad. I might switch back to a single directional light.)
OK, the biggest update: I’ve added the audio/video toggle. This allows Bulwark in the City of Flesh to be played either as an audio game or a video game. Both modes will include the same story, but the control schemes and puzzles will differ.
I want to give a shout-out to the people at AudioGames.net for their kind discussion of our previous audio game, HEARtREAD. It’s been informative and encouraging to read the comments, and it motivated me to push through the hardest part of adding the audio/video toggle. I’m hoping that you’ll have thoughts on the Bulwark in the City of Flesh alpha build once it’s finally out.
Below is a brief demo of how the audio game plays. I’ve uploaded this as a video, but there are no in-game visuals in it. The video is just a close-up of my keyboard. I start by running along the Bulwark's main route, and then I take a branch to the left and enter a puzzle sequence. I complete the puzzle and return to the main route.
I imagine it’s fairly impossible to understand what’s going on in the game based on that. My next step is to add sounds and voiceover to clarify everything. If you’re curious about the details, here’s a thorough description of the control scheme:
In general, a pinging sound is used to indicate that the Bulwark has opportunities for interaction on the left, on the right, or in front of her.
When traversing the world, the Bulwark will run along a route starting at her house and ending at the area exit.
Pressing forward (‘W’) will make her proceed along the route.
When there’s a branch available, pressing ‘Space’ will make her visit that branch. Branches lead to puzzles and conversations.
When there’s no branch available, pressing ‘Space’ will make her reverse direction.
When in a conversation, dialogue options can be accessed by pressing left (‘A’) or right (‘D’). Pressing ‘Space’ will select an option.
Solving puzzles in the Bulwark’s daydreams is the most complex part of the game. In each daydream, the Bulwark starts on the roof of a building. Below her, inside the building, there are people pinned down by one or more turrets: the streams of fire are blocking their way to the exit. The objective of the puzzle is to find a spot where the Bulwark can stand (with her shields) that will interrupt the streams of fire and give the people a clear path to the exit.
The building consists of 9 square regions, each of which has 9 tiles. If you’ve ever played Sudoku, it’s exactly like a Sudoku board.
One 3-by-3 square of keys on the keyboard is used to select a region. For example, ‘Q’ selects the northwest corner of the building, ‘W’ selects the area centered along the north wall, ‘C’ selects the southeast corner, etc.
Another 3-by-3 square of keys is used to select a tile within the currently selected region. For example, ‘3’ on the numpad selects the bottom right tile, ‘5’ selects the center tile, etc. When a tile is selected, the Bulwark is able to hear what’s on it: a person, a turret, an exit, or a stream of fire.
The space bar causes the Bulwark to crash through the ceiling and land on the selected tile. At that point, the people trapped in the building will make a break for the exit. If the Bulwark is well-positioned, they will escape, and the daydream will end. Otherwise, the Bulwark will get another try.
I want the puzzles to feel tactical and tactile, with the physical positions of the keyboard keys filling in for the absent visuals. I had originally considered using the entire keyboard as one large block of tiles, but I don’t know if I can be sure that every player’s keyboard will have a big enough contiguous grid of keys. Using two 3-by-3 grids seems safer.
It may turn out that the puzzle design is too convoluted, in which case I’ll have to simplify it. I’m hoping that it might work if the difficulty ramps up slowly enough (i.e., start with just one turret, one person, and one exit) and if I tutorialize it properly.