Movement and the world it moves through
My job on the team was two things: player movement and every tilemap in the game.
The movement system handles 4-directional input with last-key-wins priority — press right while holding up and you instantly change direction. Rigidbody2D physics, directional sprite switching, a lives system with damage flash and invincibility frames. Simple to describe, surprisingly fiddly to get feeling right.
For the levels, I took a large tilemap asset pack and hand-built both maps from scratch — placing every wall, floor, and path. Another teammate created the initial level layout with no art, just grayscale blocks. I turned that into a space that felt like somewhere you'd actually sneak through.
Sneak, collect, escape
The full game is a 2D top-down stealth-collectathon with a premise we loved: you work at AEKI, it's Black Friday, and you want to go home. The enemies aren't monsters. They're customers who need your assistance, sweeping the floor with rotating vision cones.Get spotted and you're back on the clock. Collect the six hidden keys and reach the exit before a 5-minute timer runs out.
Level 1 needs 2 keys. Level 2needs 4 — and the keys spawn at randomized positions every run, so you can't memorize a route.
The team built three randomized power-ups — Speed (1.7x movement), Invisibility (enemies ignore you), and Extra Life — plus a full tutorial level and a narrative intro with YarnSpinner dialogue. Four people, one semester, one game.
Four people, one Unity repo, no merge hell
Unity scene files are YAML that basically can't be merged, so a four-person team editing one scene is a recipe for lost work. We structured the repo around that problem instead of fighting it: every developer got their own scene(there's literally a JamesScene.unity in the repo, next to Grace's, Josh's, and Orel's), and everything shared lived as prefabs, which merge cleanly because each one is its own file.
Tying it together is a GameStateManager singleton that drives the whole game through one state machine: Tutorial → Playing → Victory / GameOver. It survives scene loads, owns the UI panels, and locks player movement outside the Playing state. Every system in the game checks in with it, so four people's work snapped together instead of colliding.
Try it yourself
The full game runs in your browser. Dodge the customers, collect all the keys, and make it to the exit before the clock hits zero.