Pipes, Goose, and Lip Sync
Wow, almost two month past sinse last update… If you remember, last time I ended with a very specific to-do list: update the UI, add more gameplay, build the steam train puzzle, and — most importantly — actually finish the trailer. So, how did it go?
Well, the trailer still isn’t done. But this time I don’t feel guilty about it, because what I’ve built instead is real gameplay.
The Steam Pipe Puzzle
Last devlog I said: "I think it will be a steam train repair puzzle. Pipes and steam!" — and that's exactly what happened. This turned out to be the biggest single feature I've built so far.
The idea is simple: the train's steam engine is broken, and you need to connect the boiler to the consumers by rotating hexagonal pipes on a grid. Think of it as a hexapipes puzzle, but with actual steam flowing through once you get it right.
What started as “just a little puzzle” quickly grew into something much more ambitious. The grid is procedurally generated, so each playthrough gives you a different layout. There are 21 different pipe types — straights, corners of various angles, T-junctions, Y-shapes, crossings, and some exotic ones like “BirdLeg” and “Crab” - don’t ask 😅.
The best part is the steam propagation. Once you connect the paths correctly, steam actually flows from the boilers through the pipes, with animated visual effects — color, speed, trembling. There’s even a barometer on each consumer that fills up as steam reaches it. It feels really satisfying when everything clicks into place and steam starts rushing through. At least for me.
Oh, and the puzzle supports multiple boilers, meaning you might need to route several independent paths simultaneously. That alone bumped the difficulty and replayability up quite a bit. I’m still not sure about final balance of difficulty for the game - playtests should help here.
Inventory Glow-Up
One thing that always bugged me was how items just… appeared in the inventory. No fanfare, no feedback. After years in software development I learned an important thing about any UI - it must be responsive!
So I built a pickup FX system: when Zoti picks up an object, it flies from the world into the inventory slot with a smooth animation. And on top of that, Sly Crow now has item combinations - drag one item onto another to try combining them. If it works, you get a nice VFX and a new item. If it doesn’t — well, you get a different VFX that basically says “nope, try something else.”
Zoti Gets More Alive
Zoti keeps getting better. Remember the emotion overlay system from the last devlog? I extended it further. Now I can layer any emotion on top of any animation from the action list. Sad while walking, surprised while idle, crying while talking — Spine's track system handles it all.
Enter the Goose
Remember the Goose? The sidekick that’s been hanging around since the early devlogs? Well, it finally got promoted from a background decoration to a real, interactive character.
The Goose now has its own Spine skeleton, animation controller, and - most importantly - its own action UI with three commands: Honk, Pack, and Pick. Each one triggers different interactions with the world. Need to distract someone? Honk or Pack. Need to grab a small item? Pick. Objects held by characters follow bone positions properly, so the Goose can actually carry things in its beak.
Building the Goose also pushed me to create a proper NPC system. Characters can now wander (targeted or randomly) around their area, so the world doesn’t feel static when the player isn’t doing anything.
Oh, and I added a Zombie Chicken to the village. Because why not.
Zoti Speaks (for real this time)
This is something I’ve been wondering about for a long time - Sly Crow now has a lip sync system!
To make it work I use Rhubarb Lip Sync to generate phoneme timing data, and custom integration with Spine to switch mouth animations in real time.
It hooks into Adventure Creator's speech system, so setting up a voiced line is as simple as adding speech ID to dialog line. Lip sync data and localization are resolved automatically. It also supports multiple languages - each locale can have its own voice-over files and lip sync data.
After some time of manually adding voice-overs in trailer scene, I got tired - manual part of the pipeline is quite annoying - running Rhubarb on every audio file, naming the output, placing it in the right folder… that got boring fast. So I built an automation tool right inside the Unity editor. Now, when I import a new voice-over file, the lip sync data is generated automatically - Rhubarb runs in the background, the JSON lands in the right place, and the dialogue CSV stays in sync. There’s also a batch mode for processing multiple files at once, which saved me a ton of time when I recorded a bunch of trailer lines in one session.
Hotspot Highlighting
One thing that was really missing from the game was visual feedback for interactive objects. In modern point-and-click adventures, you usually have some way to tell what you can interact with - otherwise the player is just pixel-hunting across the screen.
So I built a hotspot highlighting system. Now the player can easily highlight all interactive items! I tried to make it not obnoxious - just enough to say “hey, you can do something here.”
Trailer Progress
All of this work goes straight into the trailer. All scenes now have finalized assets, the Goose is interacting with the world, JohnyAce is animated in the city scene, and there’s a moody night forest rainy setup.
The trailer isn’t just a cinematic walkthrough anymore - it actually shows gameplay now. Puzzles, inventory, conversations, character interactions… But, it’s not finished yet - the last thing that left is sound design. Background music, ambient sounds, footsteps… A lot of things to do =)
What’s Next
- Finish sound design - Voice-over system works, but I need to record and process more voice lines and ambient sounds.
- Record the trailer - all the scenes are getting close to trailer-ready. It’s time to stop building and start capturing
- Steam page - still the goal. The trailer is the last big blocker
I know I’ve said “this quarter” before. But this time the pieces are actually there. The gameplay exists. The systems work. So soon, I will just need to hit record.

