I Won't Be Abducted: a 63-hour postmortem
I Won’t Be Abducted was built in roughly 63 hours for Wavedash Spring Jam 26, theme: Shelter. Solo on design, code, and direction; hand-drawn characters and props; AI-generated static backgrounds that I edited and finished by hand; Claude Code as a pair on the implementation. It was my first shipped Godot game (my previous jam game, Spare Knight, was Phaser 3), and it went live on itch.io and Wavedash.
Spoiler warning: the ending is discussed below, and the ending is the design.
The pitch
A boy refuses to leave his room and defends it from a nightly alien invasion across three nights. Except the aliens are board-game pieces. The giant hands placing them are his own. The final boss is his Dad opening the bedroom door, and beating the monster and the father getting through are the same event. The camera pulls back and it was always his room, his hands, his game.
The emotional reference was the Fort/Da ritual: a child mastering distress he can’t control by staging it as a game he can. The jam theme asked for shelter. The room was never the shelter. The play was.
Scope guardrails: write the “do not build” list first
Before building anything I wrote a three-column scope table: must ship, stretch, and do not build. The third column did the most work. Procedural maps, a real combo system, free-roam pathfinding, and a fourth night were banned on day zero, no matter how much time was left. The rule underneath: the night battle is the game; everything else is a setting on it. The board is 3x5, fifteen cells, and it never apologizes for being small.
The biggest mid-jam cut was the economy. The original design had a between-nights shop where Scrap bought upgrades. That meant two currencies of tuning debt: pricing every upgrade and pacing every income source, with no time to playtest either. The shop became a free dawn draft (pick 1 of 3 cards from a pool of 5), and Scrap kept exactly one sink: crafting kickable obstacles mid-fight. Drafts are self-balancing in a way shops are not, since the player only ever compares three options I chose to put in front of them.
What worked
Data over code. Every gameplay number lives in a .tres resource, so the last night of the jam was spent turning dials instead of editing scripts. I wrote about that system separately in Tuning fear by numbers.
Signals over references. Gameplay emits events on a global EventBus; UI listens. The HUD, audio, achievements, and the panic shader all subscribe to the same signals the game logic was already firing. Nothing in the gameplay code knows the UI exists.
The tabletop conceit pays for itself. Board-game standees don’t need walk cycles. All the motion is code: hops, lunges, knock-backs, screen shake, a desaturation shader that drains color as your Nerve drops. That one constraint moved weeks of animation work off the schedule and made the twist land harder, because the pieces always looked like pieces.
What didn’t
The roster came in too late. The Crawler was playable from the first session, but the Lobber, the Rusher, and the Dad fight stayed data-only until the final day. They shipped, but they got hours of playtest instead of days, and it showed in early balance.
Fairness arrived last. Enemy attacks had no wind-up until the finish pass. Until telegraphs went in (pull back, warning flash, then strike), hits felt arbitrary. A game where you dodge by stepping off a tile is only fair when every hit announces itself. That should have been built with the first enemy, not the last.
The intro plan was four times too big. The script called for four voiced narration parts. I recorded one. The cinematic shipped with beat one voiced and captioned, and the rest as timed text over the music bed. Cutting it to that was the right call a day later than it should have been.
What I’d keep
The discipline of the reveal. Every system, the hands, the standees, the game-over art kept deliberately ambiguous, exists to protect one quiet beat at the end. Shipping a complete arc in a weekend came down to knowing which single moment the whole game was for, and cutting toward it.








