All projectsThe project Class diagram SCREEN 03 / SELECTED WORK
POLYMORPHIC GRID

One grid.
Different worlds.

A Unity toolkit. Two games.
Explore the connections
that make them move.

At a glance

What this work solves.

Reusable simulation systems, spatial algorithms, Unity tooling, and interactive technical prototypes.

Problem
Provide one reusable way to model square, hexagonal, and triangular grids without rebuilding traversal logic for every game.
My contribution
Developed the shared grid model, traversal and path-finding tools, Unity editor workflow, and interactive examples with Theory Team.
Result
One open-source API powers three grid geometries, reusable algorithms, editor tooling, and two games.
Try the interactive demo

Paint a grid, run path finding and waves, then play the two games built on it.

Connecting the tiles…

GRID PLAYGROUND91 connected cells
—tiles in route
THE SHARED IDEA

A shape is only the beginning.

Square, hexagon or triangle: each tile knows its neighbors. The same graph operations turn those connections into movement, maps and games.

GridMaster · Node · neighbor queries
Choose a tile. Watch the grid find its way.
0 nodes searched · 0 reachable
THE ORIGINAL C# ARCHITECTURE

Follow the connections.

The same idea, seen through classes. Explore the inheritance, inspect the responsibilities, then put a connection back into motion.

FOLLOW THE DESIGNDifferent shapes inherit one contract.

Select a class to inspect it, or follow a short walkthrough of the connections.

Inherits from Uses / referencesScroll sideways on smaller screens
Inspect GridMaster

Selected classes and relationships from the original toolkit, with key members abbreviated for readability. The browser experiences use simplified algorithms; this diagram describes the C# project.

THEORY TEAM / POLYMORPHIC GRID

The connection
is the interesting part.

Polymorphic Grid gives different tile shapes a common language: nodes, neighbors and traversal. The editor builds the world. The runtime finds a way through it. These two games show where that foundation can lead.

The toolkit is open source on GitLab and available through the Unity Asset Store.

The published demo walkthrough: painting a grid in the scene view, then watching path finding and agents run on it.
Original Groovy Death character with afro, red jacket and minigunORIGINAL GAME / GROOVY DEATH
CHASE / DANCE / REPEAT

Groovy Death

A crowd finds its way through a procedural arena. Then the music changes, the floor lights up, and even the enemies start dancing.

Groovy Death Beta, published on itch.io. Four arenas from the shipped build.

Open Groovy Death image full size
Gameplay capture published with the project. Crowd routing, dancing waves and the arena, recorded from the build.
Original Orange Runaway prisoner character in an orange jumpsuitORIGINAL GAME / THE ORANGE RUNAWAY
HOP / CROSS / ESCAPE

The Orange Runaway

An escape assembled one block at a time. Hopping between grid nodes becomes a game of timing, traffic, moving platforms and pursuit.

The escape in motion. The pursuit, traffic and city run on the same node grid.

Open The Orange Runaway image full size
The published gameplay capture. Shot in portrait because the game shipped on Google Play: hopping the lanes, dodging traffic and collecting as the score climbs.
WHAT THE ORIGINAL PROJECTS INCLUDE

Small pieces.
A lot of possibilities.

The playground introduces the ideas as you interact. Here is the broader toolkit and the work built around it.

01The toolkit

Grids beyond squares

Built-in square, hexagonal and triangular grids. GridMaster defines a shared API; GenericGrid and NonSymmetricalGenericGrid support custom cell shapes, including alternating orientation.

Nodes and spatial queries

World/local positions, node radius, walkability, indexed access and neighbor queries. Square grids use direct index conversion; generic layouts use a two-dimensional search tree.

Traversal as a reusable tool

Generic breadth-first, iterative depth-first and recursive depth-first traversal. Acceptance conditions, callbacks, parent tracking, parent priority and breadth-first depth limits.

Routes and shared path trees

A* point-to-point routes and breadth-first all-path traversal. Requests, responses, callback delivery, worker threads, reusable finders and search-data pools support runtime pathfinding.

An editor workflow

Generate, clear, save and load grids. Scene visualization and walkability painting, grouped node materials, editor preferences, collision-based Area Wizard and Grid Validator.

Data and extensibility

SerializableGrid and SerializableNode store layouts in ScriptableObjects. Separate runtime/editor libraries, heap-based priority queues and binary search structures support the toolkit.

02Groovy Death

A connected arena

Seeded obstacle generation checks that every open cell remains reachable. GridVisualizer builds the floor and obstacles from the grid.

A crowd that finds you

Repeated player-rooted path requests let multiple enemies follow the same parent tree. Spawning uses walkable nodes, traversal depth, population limits and increasing difficulty.

A dance break

Timed dance waves pause pursuit and spawning, switch animation and music states, and propagate floor color changes through BFS.

A game that reacts to music

128-sample FFT analysis, thresholds, beat timing, scale and color synchronizers. The original also includes dual-stick movement/aiming, minigun energy, grenades, health, score, ragdolls and particles.

03The Orange Runaway

Movement between worlds

Four-direction grid movement, swipe input, timed jumps, rotation and landing effects. Ground-height queries and moving placeable grids keep characters attached to their surroundings.

A world assembled from rules

Recycled blocks, weighted land selection and predecessor/successor rules. Simple, arranged, full-row, border, explicit and sequence obstacles combine with accessories.

More than a road crossing

Traffic, trains, rivers, floating logs, bridges and environmental obstacles. Police use grid paths; ranged cops, SWAT and helicopter controllers add pursuit behaviors.

The rest of the game

Coins, score, difficulty progression, character skins and a store. Scriptable tween effects, audio, Cinemachine camera extensions, pause/game-over UI and Unity Ads integrations are present in the original project.

THE TECHNOLOGY

From C# to a playable idea.

The original foundation

  • C#
  • Unity 2020.3
  • ScriptableObjects
  • Unity Editor

A reusable runtime library with a separate editor layer, custom inspectors, UXML / USS interfaces and scene tools.

Graphs and runtime systems

  • A*
  • BFS / DFS
  • Priority queue
  • Worker threads
  • Data pools

Shared neighbor contracts support spatial lookup, traversal, route requests, connectivity checks and enemy navigation.

The games

  • Animator
  • Rigidbody / Physics
  • Audio FFT
  • URP / post-processing
  • Cinemachine
  • Unity Ads

Animation, collisions, procedural worlds, reactive visuals and mobile controls combine around the grid. Integrations vary by game.

This playable recreation

  • TypeScript
  • React
  • Three.js
  • Web Audio
  • glTF

Small graph and game simulations, original character assets, a generated synth beat, and live renderer inspection. Everything runs locally in the browser.

OPEN SOURCE / THEORY TEAM PACKAGES

More of my open-source work.

Browse the GitLab group (opens in a new tab)

Polymorphic Grid is one of my open-source projects, and the only one with a dedicated experience in this portfolio. I also share the Unity tools below through Theory Team Packages, covering asset preparation, interfaces, animation and the systems behind them.

Grids & pathfindingFeatured here

Polymorphic Grid on GitLab (opens in a new tab)

A Unity toolkit that gives square, hexagonal and triangular grids a shared API for nodes, neighbors, traversal and pathfinding, with editor tools for building and saving layouts.

Why it matters
Separates game logic from tile geometry, so generation and navigation systems can be reused across different worlds. Groovy Death and The Orange Runaway put that foundation into practice.
Textures & materials

T-Pix on GitLab (opens in a new tab)

Unity editor tools for building textures from individual color channels, applying material presets and extracting model materials. Included presets support Standard and HDRP texture workflows.

Why it matters
Makes repetitive asset preparation repeatable: pack the channels a shader expects and apply consistent material rules across collections of assets.
Interface systems

Theory UI on GitLab (opens in a new tab)

A reusable Unity UI toolkit for panel groups, temporary panels, fades, tooltips, hover feedback and displaying data. It uses Theory Tween for transitions and shared data-provider interfaces for content.

Why it matters
Brings navigation, feedback and data display into a common structure, reducing the custom setup needed for each screen and keeping UI behavior consistent.
Animation & timing

Theory Tween on GitLab (opens in a new tab)

An extensible framework for custom tween effects, separating reusable ScriptableObject definitions from runtime playback. A shared task manager supports Update, LateUpdate, FixedUpdate and scaled or unscaled time.

Why it matters
Lets effects share a timing and playback system instead of rebuilding it per component. Unscaled timing can keep interface effects running while game time is paused.
Procedural rig control

Theory IK on GitLab (opens in a new tab)

A modular inverse-kinematics toolkit with chain solvers, root controls, rotation constraints, pose anchors and finger controls. An orchestrator and editor presets organize complete setups.

Why it matters
Helps rigs respond to targets in the scene. Its runtime is independent of Unity’s humanoid APIs, making the same modules useful for characters, creatures, props and mechanisms.
Shared foundations

Theory Team Utility on GitLab (opens in a new tab)

Common Unity helpers for geometry and math, weighted random selection, object pooling, collision and trigger events, optional callbacks and inspector-friendly interface references.

Why it matters
Keeps frequently reused building blocks in one place. For example, pooling reuses existing objects, while geometry helpers and editor drawers reduce repeated setup across projects.

Have a similarly specialized problem?

Let’s make the difficult part visible and usable.

Discuss a project Browse all work