Skills Projects About Contact

Free Flow Puzzle

Recreated Free Flow Puzzle game using Unity3D

← All Projects

Role

Gameplay Programmer

Tech

Unity3D, C#

Genre

Puzzle

01

Overview

Built during college as a self-directed learning project — the goal was to take a game I enjoyed playing (Flow Free) and rebuild it from scratch to understand how it works under the hood. No tutorial followed, no assets purchased. Just reverse-engineering the mechanics by playing the original and implementing everything in Unity3D.

The core challenge was the path-drawing system — handling touch input on a grid, tracking which cells belong to which colour path, enforcing puzzle rules (paths can't cross, all cells must be filled), and detecting a valid solve state. A small but mechanically precise problem that required clean data structures and careful input handling on mobile.

02

What I Built

[01] — Core Mechanic
Path Drawing System
Touch Input · Grid State · Rule Enforcement

The heart of the game — a touch-driven system that lets players draw colour paths across a grid. Tracks path state per colour, handles mid-path backtracking (dragging back over your own path to erase it), prevents paths from crossing, and resolves conflicts when a new path overtakes an existing one.

Touch input Grid state machine Backtrack handling Conflict resolution
[02] — Puzzle Logic
Grid & Solve Detection
Data Model · Win Condition · Level Format

Built the grid data model that represents puzzle state — each cell knows its colour ownership, whether it's an endpoint, and whether it's occupied. Solve detection checks that all paths are connected endpoint-to-endpoint and that every cell on the grid is filled — the two conditions Flow Free requires for a valid solution.

Grid data model Endpoint detection Full-board validation Level serialisation
03

Demo

gameplay demo — free flow puzzle (unity3d)
04

What I Learned

Rebuilding someone else's game teaches you what they had to solve

The interesting thing about re-implementing an existing game is you can't look up the answer — you have to figure out what the problem even is before you can solve it. Flow Free looks simple on the surface, but the path-drawing mechanic has a lot of edge cases: what happens when you drag back over your own path? What happens when you cross a colour that's already connected? What's the correct order of operations when a new path "steals" a cell from an existing one?

Working through those questions by playing the original, forming a hypothesis about the rules, and then implementing and testing them was a strong early lesson in thinking about game systems precisely — not just building something that looks right, but something that behaves correctly in every edge case.