Totally Safe Digging Co.

Co-designing a game with my student

An ongoing game project where my student helps shape mechanics, interactions, visual direction, and what 'feels right' through play.

Totally Safe Digging Co. title screen showing Map Mode, Challenge, and Creative mode cards with How to Play prompt on a laptop
Role Product & interaction design, visual system, direction
Timeline Oct 2025 – present
Status Ongoing
Focus Co-design · Game UX · Visual design
Co-designed from day one with one student
AI-assisted implementation under design direction

Inspired by life

Totally Safe Digging Co. started with something concrete: my student had a real excavator in the backyard, and we had already been playing with Figma Make together.

The first version was a rough side-scrolling idea about driving an excavator, digging through the earth, collecting coins, and finding suspicious things underground. The project quickly outgrew Figma Make, so I moved it into Claude Code and turned it into a real build.

The original orange excavator sprite stayed. It had already become the face of the game, so the rest of the system grew around it rather than replacing it.

Level 1 welcome screen showing keyboard controls for move, dig, place dirt, and the coin-collection goal with a Let's Dig button

Co-designing through play

My student has been part of the product from the beginning. They pitch mechanics, react strongly to how interactions should feel, propose obstacles, and playtest changes as they are made.

I facilitate the design process, shape the product and interaction system, develop the visual language, and direct the AI-assisted implementation. The student has real product influence rather than appearing only at the testing stage.

A lot of the work happens by sitting down together and playing. We run the game, call out whatever feels wrong, stop, talk about it, fix it, and play again.

"If it did not feel right in our hands, it was not done."
Level 3 gameplay — the excavator digs underground collecting coins beneath a colorful city skyline

Getting the interaction and animation right

The mole encounter became the clearest example of how specific "feel" could be.

The first implementation froze the game, launched moles away from the nest, and brought them back in a chase through a large particle-fog effect. My student watched it and said:

"It was not what I wanted."

What they wanted was much softer and stranger: barely a mole, "the fog getting darker," a presence you sense before you clearly see it, and movement in "loopy loops."

The visual treatment kept changing as we got closer: darkening fog, then a silhouette, then a low-opacity full-color mole that stayed mysterious until it emerged.

The final rhythm became emerge, flee, roam in wide loops, and drift away with the auto-scroll. It is escapable. When contact happens, the mole that actually touched the excavator is the one that leaps onto it.

A mole bursts from the ground in a cloud of dust while the excavator digs nearby in Level 3

Building tools to clarify design decisions

The language around the mole was expressive but difficult to translate directly into numbers. We built a standalone Mole Designer so those preferences could become adjustable rather than abstract.

The tool exposed things such as movement, fog tail, hold, thickness, width, edge hardness, ghostliness, darkness, and speed with live feedback.

It did not produce the final answer in one pass. It made the conversation more precise and gave my student more direct control over the decision. We continued iterating after using it.

Once the values felt right, they were baked into the game and the tuning interface disappeared from the player-facing experience.

Fixing friction as we found it

The same play-and-fix loop shaped the rest of the game.

A level used to end while coins were still reachable. The world now stops scrolling at the end and lets the player drive to a finish fence.

A level promising a certain number of coins could actually contain more because nest coins were added on top of the target. The generator now trims to the exact total, and every screen reports the same number.

Map and Challenge originally shared progress. They became separate tracks so clearing one mode does not silently unlock the other.

Challenge mode introduced a finite-dirt economy where digging banks dirt and placing spends it, including a short stockpile window before scrolling begins.

Small pieces such as the dirt readout, stockpile prompt, onboarding, and mode structure were refined through the same process of using them together and correcting what got in the way.

Dig Log: selected fixes from the play-and-fix loop

The mole encounter

  • Take 1, freeze, flee, chase: The first version froze the screen on a nest hit, sent moles off-screen, then chased the excavator from behind. It was over-engineered and never satisfying.
  • Take 2, a presence in the fog: My student's spec: the mole should not be a sprite or a dot. It is "the fog getting darker," a soft dark mass you sense through the mist, moving in "loopy loops."
  • Take 3, shipped: Moles rise from the nest, dash a little over half a screen away, then roam on wide wandering loops and drift off with the auto-scroll. No relentless chase; it is escapable.
  • The pounce: On contact, the mole you touched is the one that jumps. The game captures its position, leaves a puff of fog where it was, and arcs it onto the excavator.

Performance

  • The fog lag: Every wisp of fog was drawn from scratch every frame, then composited through a separate offscreen layer. Fix: pre-render once, draw cheap, and emit fog puffs by distance travelled (one puff every 16 px) instead of by frame.

Bugs and friction

  • Levels ended too soon: The level finished the instant the camera reached the map edge, cutting off a whole screen of still-collectible coins. Now the world stops scrolling at the end and you drive to a finish fence.
  • Coin counts did not add up: Nest coins were counted on top of a level's target, so a level promising "60 coins" actually held 67. The generator now trims to an exact total, and every screen shows the same honest number.
  • Progress bled between modes: Map and Challenge shared one save, so clearing a Map level unlocked the same-numbered Challenge level. They are now two separate tracks.
  • Challenge mode, finite dirt: Challenge mode adds a dirt economy: dig to bank dirt, place to spend it. A 5-second stockpile window lets you load up before the world starts scrolling.
  • Dirt readout missing: Players could not tell how much dirt they had available. A readout was added to the HUD.
  • Stockpile prompt confusion: The early stockpile phase had no clear cue. An onboarding prompt was added to explain the mechanic before scrolling starts.

Visual system

  • Design system, written down: A design-system manual documented the "before" state and a 15-item cleanup punch-list, then worked the list in code one item at a time.
  • The brand token layer: Everything routes through tokens in one stylesheet: one brand orange, warm-ink browns for text, a five-color candy action palette, and the signature chunky 3D shadow.
  • Archivo, everywhere: Standardized on one typeface. Dropped a second label face and put every size on a type and color spec sheet. Fixed a subtle flash of fallback font by preloading every weight up front.
  • A real contrast pass: White text on the candy colors failed WCAG AA badly (~2:1). Switched every candy surface to dark warm-ink text (~7:1) and lightened the violet so the same rule could work consistently.

Giving the game a visual system

We wrote down the visual system before finishing the polish pass.

The direction became Sunset Boom: warm dusk colors, a parallax cartoon skyline, shiny coins, chunky controls, and a consistent orange-led brand system.

The project uses design tokens for the brand orange, warm ink colors, candy action colors, and the hard-offset 3D shadow used throughout the controls.

Typography was standardized on Archivo.

A contrast pass found white text on the candy-colored controls landing around 2:1 contrast. Those surfaces moved to dark warm-ink text at roughly 7:1, and the violet was adjusted so the same rule could work consistently.

The design-system manual remains frozen as an artifact of an earlier point in the project while the live game continues to evolve.

Where the game is going

The game now has Map, Challenge, and Creative modes, clearer onboarding, a growing set of mechanics, and a running backlog of later-level obstacles and effects.

Some parts are still intentionally open: sound design, a stronger goal for Creative mode, later-level obstacles, weather effects, and additional polish around game-over timing.

AI writes the implementation under direction. The product decisions, interaction behavior, visual system, testing, and evaluation remain part of the ongoing co-design process.

Keep exploring