The Vacuum Approaches — you are the dog

This is a submission for Weekend Challenge: Dog Days Edition

The Vacuum Approaches is a tiny Undertale-like house game. You are the dog. The vacuum lives here too.

What I Built

You walk a three-room house – living room, kitchen, bedroom — in first person canine form. Furniture is interactable. Each object has two or three actions associated with it that affect your stats.

You have three stats that sit on the top bar: Chaos (0–100), Good Boy (0–100), Treats (0–25).

Endings fire when a stat hits a wall worth stopping for:

  • MAXIMUM CHAOS — the house has fallen
  • ZERO CHAOS — nothing is happening. on purpose.
  • GOOD BOY LEVEL MAX — certificates, theoretically
  • TREAT HOARD — twenty-five, and not one fewer
  • THE BEAST EATS — you were fur. it was enough.

Demo

Play around locally:

pnpm install
pnpm dev

Open the URL Vite prints (usually http://localhost:5173).

Input Action
Arrows / WASD Walk
Space / E / Z Interact, confirm a verb, advance text
Up / Down Pick a verb
Esc Close the verb menu
Enter Start from the title; continue ending / credits

Chase a stat to the wall, or bark at the vacuum until it decides you are dirt.

Code

Repo: https://github.com/TheVoraciousReader/the-vacuum-approaches

Stack: Vite + TypeScript + KAPLAY, pnpm. Static app. No backend. Session-only state.

src/
  main.ts       Scenes, input, vacuum combat
  rooms.ts      Tile maps, furniture, doors, spawns
  sprites.ts    Pixel-art sheets generated to data URLs
  actions.ts    Authored verbs + stat deltas
  narrator.ts   Punchlines keyed by object:verb
  stats.ts      Chaos / Treats / Good Boy, hearts
  endings.ts    Splash copy + which crossing ends the run
  ui.ts         HUD, verb menu, dialogue box

How I Built It

The loop is small on purpose:

walk → Space near an object → pick a verb → a punchline lands → stats change → an ending.

I considered wiring Google AI / Gemini for the narrator and then threw it out. Generated lines would have been funnier on paper and worse in the room. A weekend game this small needs solid punchlines.

The house does not remember wreckage. You can raid the forbidden bowl, walk to the bedroom, walk back, and the bowl is still a bowl. The stats remember. The furniture does not.

Pixel art is character grids in sprites.ts, compiled to data URLs — no image files, no asset pipeline. KAPLAY hot-reload is off because game state does not survive it; refresh after edits.

Some Learnings

The one systems surprise: Good Boy 0 used to end the run, and it was eating the interesting endings. Chaos-max and the treat hoard both require being a menace. I stopped treating “bad dog” as a finish line.

The other surprise: once Chaos is high enough, the vacuum should not stay a punchline. At 50 it hunts. Hearts persist across rooms so you cannot reset combat by walking into the kitchen. Crossing 50 again refills them. Zero is THE BEAST EATS.

Closing

Let me know if you try it out in the comments below. Always open for ideas and suggestions!

Total
0
Shares
Leave a Reply

Your email address will not be published. Required fields are marked *

Previous Post

Anthropic CEO says AI backlash is ‘fundamentally a crisis of trust’

Related Posts