Rebound / Case study

I built five sports around one simple gesture.

I made Rebound as a local multiplayer game where players draw lines across a dot grid and bounce from point to point. Instead of rebuilding the game for every sport, I wrote one shared system and used it for soccer, sumo, hockey, fencing, and Soccer Blitz.

Play my WebGL build

My roleDesigner / Programmer
I usedUnity / C# / WebGL
I built5 sports + tutorial
I shippedWeb / iOS / Android
My Rebound sports selection screen

My idea

I wanted pencil-and-paper play to feel physical.

I kept the main action small: drag from the current dot to an available neighbor. If I reach an occupied point, the line rebounds and the turn keeps going. I changed the board, scoring, art, and win conditions for each sport without making the player relearn the controls.

My hockey rink background
My sumo arena background

How I built it

I separated the shared rules from each sport.

I put turns, dots, lines, rebounds, cancellations, player switching, and victory events in an abstract Game class. Then I let each mode define its own board size, art, setup, and win check. I used BoardManager to generate the grid and GameController to load the selected sport.

Details I added

  • I made undo restore both the last line and any mode-specific state.
  • I built a tutorial that reacts to the player’s actual bounces and completed lines.
  • I separated scene transitions, victory UI, sound, haptics, localization, and screen sizing from the rules.
  • I shipped the same Unity project for WebGL and mobile.

What I learned

I learned to build the mechanic once and leave clear places to extend it.

  • I only use inheritance when the shared behavior is real. Every mode uses the same board and turn loop, but I can replace the scoring rules.
  • I treat recovery as part of touch controls. Cancel and undo matter just as much as a successful drag.
  • I pay attention to small feedback. Sound, haptics, motion, and player indicators make the abstract board easier to understand.
  • I keep platform-specific work at the edge. Android haptics and browser packaging do not need to know the game rules.