/ 4 min read
I Won't Be Abducted: a 63-hour postmortem
A weekend tabletop-defense game, the economy I cut, and the one ending everything else exists to protect.
I built I Won’t Be Abducted in about 63 hours for Wavedash Spring Jam 26. The theme was Shelter. I did the design, the code, and the direction, and drew the characters and props by hand. It was my first Godot game (Spare Knight was Phaser), and it went live on itch.io and Wavedash the same night.
Spoiler warning: the ending is discussed below, and the ending is the design.
September update: this piece is about the original jam build. The follow-up covers the expanded game and what players could not read.
The pitch
A boy refuses to leave his room and defends it from a nightly alien invasion. 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 reference in my head was the Fort/Da ritual: a child mastering something he cannot control by turning it into a game he can. The jam asked for shelter. The room was never the shelter. The play was.
Write the “do not build” list first
Before any code 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, and 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 shop between nights where Scrap bought upgrades. That meant two kinds of tuning debt at once, pricing every upgrade and pacing every income source, with no time to playtest either. The shop became a free dawn draft, pick one of three cards from a pool of five, and Scrap kept exactly one sink: crafting kickable obstacles mid-fight. A draft balances itself in a way a shop does not, because 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 separately in Tuning fear by numbers.
Signals over references. Gameplay emits events on a global bus; the UI listens. The HUD, the audio, the achievements, and the panic shader all subscribe to signals the game logic was already firing. Nothing in gameplay knows the UI exists.
The tabletop conceit paid for itself. Board-game standees do not need walk cycles. All the motion is code: hops, lunges, knock-backs, screen shake, a shader that drains colour as your Nerve drops. That one constraint moved weeks of animation off the schedule, and it 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. 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 early balance showed it.
Fairness arrived last. Enemy attacks had no wind-up until the finish pass. Until the 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. That was the right cut, made 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 vague, 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.