Overview
Unwind is a 3D game built in Unity over 12 weeks. It's a relaxed, approachable cozy game that anyone can pick up. It tells the story of Alina, who wants to escape reality for a night after being rejected from her dream university. She makes a wish and wakes up in a fantasy world.
What I Built
Cloud Mount & Flight
- Jump onto a cloud to mount it, then fly freely between the islands.
- Built the CloudMountController, the mount and dismount state that takes over player physics, gravity, input, and interaction while you fly.
- IslandLandingTrigger dismounts you automatically when you reach an island.
- IslandLandingIndicator adds a pulsing glow so you can tell which islands you can land on.
Dialogue & Characters
- Wrote the dialogue system that drives the intro sequence and every conversation with the island mascots.
- Handled all mascot programming: behaviour, state, and how they respond when you talk to them.
- Cinemachine cameras blend into each conversation and back out again when it ends.
Minigames
- Designed and built three minigames: Musical Bridge, Wake Up, and Sticker.
- The bridge builds itself from two anchor points using interpolation, with a ghost tile that previews where the next piece lands.
- Tiles spawn and fall, you press Space to lock each one, and the speed ramps up per row.
- A completion wave with a punch-scale bounce plays once the bridge is finished.
Interactions & Quests
- Built the interaction system on a small set of interfaces, so any object decides how it responds: a single press, a held key, or walking into a zone.
- Picking up a quest item updates the quest log on the left in real time.
- Wired up the inventory, progression, quest, and experience systems behind it.
- Hold-to-interact pickups fill a ring as you hold the key down.
Menus & Polish
- Built the full main menu and pause menu, both working correctly across scene loads.
- Designed and implemented the game's UI.
- Added hover and click animations so the menu feels responsive when you use it.
First-Time Tutorials
- The first time you're about to do something new, a helper popup explains the controls for it.
- Each popup is tied to its action, so it shows once, right when it's relevant, and then stays out of the way.
Player & Physics
- Camera-relative movement, sprint, and rotation smoothing.
- Ground checks using contact normals, wall-collision jump, tuned physic materials.
- Respawn that validates a safe tile before placing you.
Audio & Extra Polish
- Sourced, edited, and implemented all audio through FMOD, then integrated it into Unity.
- Integrated the designer's art and animation for the Alina and Wake Up characters.
- Collider setup across the game and post-playtest bug fixing.
Technical Highlight
The problem: lots of different objects (mascots, minigame zones,
hold-to-use pickups) all needed to be interactable, but in different ways. Some
react to a single press, some to a held key, and some to you walking into a
trigger zone. I didn't want one big manager with a hardcoded list of every
object type.
My approach: I split the behaviour into a few small interfaces
(IInteractable, IInteractWithE,
IInteractWithF, IZoneInteractable).
A single InteractionManager raycasts every frame, checks which
interface the object it hits implements, and calls the matching method. To add a new
interactable, I implement the right interface on it and it works, with no changes to the manager.
Result: a decoupled, extendable interaction system that drives dialogue,
minigame entry, and hold-to-interact pickups, backed by a filling-ring hold UI and sound feedback (using FMOD).
Technologies
Unity
C#
3D
Git
FMOD
Cinemachine
My Role
Sole programmer on a two-person team. I wrote all of the game's code while my
teammate handled level design and art in-engine. On top of programming, I designed
the three minigames and owned the audio and UI from start to finish. Systems I built:
player physics, the modular game systems, the three minigames, the full UI, audio in
FMOD (middleware), the cameras, and the cloud mount mechanic.