Unwind logo
RoleProgrammer & Technical Designer
Team2 people · sole programmer
Duration12 weeks
PlatformBrowser / PC
EngineUnity · C#
StatusPlayable · itch.io

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.

Jump on a cloud to mount it and fly between islands.

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.

Talking to a mascot through the dialogue system.

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.

The build-the-bridge minigame.

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.

Picking up an item and watching the quest log update.

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.

Main menu with hover and click animation.

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.

A helper popup appears before you do an action for the first time.

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.

← Back to Portfolio