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: Open the URL Vite prints (usually ).
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.
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 , 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!