Tedtrist Polish Sprint — Lock Delay, Ted’s Escape AI, and the RektTek Rebrand

/ / 10 min read
Tedtrist

Tedtrist Polish Sprint — Lock Delay, Ted’s Escape AI, and the RektTek Rebrand

Tedtrist works. It has worked for a while. You drop blocks, Ted runs, SQUISHES accumulate, the Performance Review arrives. The last devlog covered the design fundamentals — why SQUISHES matters as a metric, how Ted’s 230+ quotes follow an emotional arc, and building a full Outlook popup in Love2D for a corporate gag that pulls double duty as the game over screen.

This devlog is about what happened after all of that was functional. The transition from BUILDING to PRE_ITCH_POLISH — where the game stops being a feature checklist and starts becoming something that feels right under your hands.

The Game Feel Problem

Block puzzle games live and die on input feel. This is the genre where people notice two frames of input lag. Where competitive players set specific millisecond thresholds for DAS and ARR. Where the difference between “responsive” and “mushy” is fifteen milliseconds of lock delay.

The first playable version of Tedtrist had none of this tuned. Pieces fell. You could rotate them. They locked the moment they touched the stack. It worked — the way a car with no suspension works. Technically mobile. Deeply unpleasant.

DAS and ARR: The Invisible Infrastructure

DAS (Delayed Auto Shift) is the pause between pressing a direction key and the piece starting to slide continuously. ARR (Auto Repeat Rate) is how fast it slides once DAS triggers. In Tedtrist, DAS defaults to 170ms and ARR to 50ms. These numbers come from the standard Tetris Guideline, adjusted for our slightly wider piece set.

The implementation tracks three states: which key is held, how long it’s been held, and whether DAS has fired. On key press, the piece moves one cell immediately. Then nothing happens for 170ms. Then the piece starts repeating at 50ms intervals until you release. Both values are exposed in the options menu so players can tune them. A competitive player who wants instant DAS at 80ms with 0ms ARR can have it. Someone who likes a deliberate pace can push DAS to 250ms.

Persisting these settings was straightforward until we hit the rename. More on that shortly.

Lock Delay: 500ms and 15 Resets

When a piece reaches the bottom of the stack in classic Tetris, it locks instantly. Modern guideline Tetris gives you a half-second window — the piece sits on the surface, and you can still slide or rotate it before it commits. Each successful move or rotation resets the timer. But you can’t stall forever: after 15 resets, the piece locks regardless.

Tedtrist implements this exactly. The lock delay counter runs at 500ms. Every move or rotation that changes the piece’s position resets it back to zero and increments a reset counter. At 15 resets, the piece locks on contact no matter what. This prevents infinite stalling on flat surfaces while still giving you time to finesse a tricky placement.

The implementation detail that matters: lock delay only engages when the piece is actually contacting the stack or the floor. If you slide a piece off a ledge, the lock timer pauses. Gravity takes over. The piece falls until it contacts something again, and only then does the timer restart. This is subtle but critical — it means lock delay doesn’t punish you for making aggressive overhang placements.

Hold Piece: One Per Drop

The hold system is simple: press a key, your current piece goes into the hold slot, and you get either your next piece or whatever was previously held. One swap per drop — the flag resets when the next piece spawns. Standard Tetris mechanic, but it interacts with Tedtrist’s custom pieces in interesting ways.

Holding a TED-DOT (the single-cell piece) is strategically devastating. The DOT is the precision instrument of the piece set — it fills exactly one gap, which means it’s the most accurate squish tool in the game. Experienced players hold the DOT until Ted wanders into a narrow gap, then deploy it vertically. The DOT weighs only one cell, so it falls fast and gives Ted almost no reaction time.

The TED-PLUS (the cross-shaped piece) is the opposite — it’s too wide to hold for precision, but perfect for clearing situations where Ted is cornered. Five cells arranged in a plus means you cover three columns on the landing row. If Ted is anywhere in that range, he’s getting squished.

Ted’s Escape AI: Dash, Jump, Panic

The first version of Ted’s AI was a random walk. He picked a direction, moved for a while, changed direction. This was fine for the prototype but terrible for gameplay. Ted would walk directly under your falling piece and get squished immediately. Entertaining once. Boring by the tenth time.

Current Ted has three movement states: patrol, panic, and evasion.

In patrol mode, Ted ambles across the top of the block pile at 70 pixels per second, changing direction periodically. He’s an SVP doing his rounds. This is the state where his idle quotes fire — “Has anyone seen my stapler?” and “Can everyone see my screen?” — and it’s the state where smart players set up their squish angles.

When a piece enters Ted’s column danger zone, he switches to panic mode. His speed doubles. He picks a direction away from the incoming threat and runs. His quotes shift to the running category — “NOT THE BLOCKS!” and “I CANNOT be the single point of failure!!” — and his movement becomes urgent.

The escape tools are the interesting part. Ted can dash — a burst of speed on a cooldown. And Ted can jump — a parabolic arc that makes him briefly airborne and immune to squish. The jump is the most exercise Ted has gotten since the 2019 offsite. While in the air, pieces pass through his position without registering a hit. A well-timed jump lets Ted survive a piece that would otherwise crush him directly.

This creates real gameplay tension. A piece dropping toward Ted isn’t a guaranteed squish anymore. You have to read his panic direction, predict whether he’ll dash left or jump, and angle your placement accordingly. Sometimes the right play is to fake a drop to trigger Ted’s dash, then hold and deploy a different piece into his escape route.

Ted doesn’t know you’re doing this. Ted thinks he’s surviving through leadership instinct. Ted has already sent an email about it.

Visual Juice: The Flash Layer

Polish is about making existing mechanics feel heavier. Every mechanical event in Tedtrist now has a visual response layer.

Squish flash: When Ted gets squished, the entire screen flashes white for 0.15 seconds. It’s a full-screen overlay with rapid alpha decay — bright on impact, gone before it’s annoying. Combined with the squish SFX, it makes the moment feel like an event. SQUISHES went from a counter incrementing to a moment you can feel.

Lock glow: When a piece commits to the grid, the cells that just locked briefly pulse brighter than the rest of the grid. Each locked cell tracks its own glow timer, fading from max brightness to normal over about a third of a second. This gives piece placement a visual weight — you can see exactly where your piece ended up, even if it locked in a dense area.

Line flash: Line clears sweep a white highlight across the clearing rows before the debris falls. It’s a brief white bar that crosses the row left to right in about 0.2 seconds, then the row collapses. This replaces the instant disappear that earlier versions used. Lines don’t just vanish — they shatter.

Score floaters: Squishes spawn floating text at the squish point — “+200” or “COMBO x3!” — that drifts upward and fades over about a second. These are stored as lightweight objects: position, text, timer, and color. They overlap cleanly when multiple events fire at once, creating a satisfying vertical spray of numbers during high-action sequences.

None of these effects involve external assets. Every flash, glow, and floater is drawn with love.graphics primitives — rectangles, color modulation, alpha blending. The Polybreak visual DNA runs deep.

The RektTek Consolidation

This is a lore housekeeping item, but it matters for consistency. The fictional corporation in Tedtrist was originally called BrekTek. This was the working name from early development — a portmanteau of “break” and “tech” that predated the broader Dark Factory shared universe.

As the portfolio grew, the other games developed their own RektTek references. Voidrunner’s S.H.M.U.P-3000 was a RektTek weapons platform. Dreadnought’s research vessel belonged to RektTek. C.A.G.E-9001 was a RektTek biocontainment unit. Tedtrist was the outlier, still calling the company BrekTek.

The consolidation renamed every reference. CONTEXT.md, GOAL.md, RUNBOOK.md, the game code, Ted’s quote engine — everything now says RektTek. The ticker is REKT. The motto is “Move Fast. Break Ted.” The company was founded in 1997 as a printer repair company and has pivoted seven times since. Nobody knows what it does now.

This also hit the save file system. Settings were being saved as tedtris_settings.json (another legacy artifact from before the name stabilized). The rename introduced a migration path: the game checks for the canonical tedtrist_settings.json first, falls back to the legacy filename if found, and writes all new saves under the canonical name. Players don’t lose their DAS/ARR tuning. Ted would call this “a seamless organizational restructuring.”

The Onboarding Problem

Tetris games have an onboarding advantage: everyone already knows how they work. Blocks fall. You clear lines. But Tedtrist’s core mechanic — SQUISHES — is not standard. A new player who approaches this as a normal Tetris game will spend their first three minutes optimizing line clears and ignoring Ted entirely. They’ll have fun, but they’ll miss the point.

The current onboarding solution is a 15-second tutorial overlay on first play. It highlights Ted, explains that SQUISHES is the metric, and points out the squish counter. It doesn’t interrupt gameplay — the timer runs while you play, and the overlay fades out naturally.

There’s a persistence flag: once you’ve squished Ted at least once, the overlay never appears again. The game knows you understand the assignment. This prevents the overlay from becoming annoying on restarts while ensuring brand-new players get the critical information.

Is this the final onboarding? Probably not. The polish checklist has onboarding as priority item 10 — “first 30 seconds should teach the squish mechanic, not just blocks.” A more elegant solution might involve Ted literally pointing at himself and saying something like “I’m over here, and I have concerns.” But the current version works and doesn’t get in the way. Good enough to ship. Better solutions can come after launch data.

Where We Are

Tedtrist is in PRE_ITCH_POLISH. The core is feature-complete. The quote library is deep. The Outlook popups are fully operational. Ted dashes and jumps and files complaints in real time. The game feels like a game now, not a prototype.

The remaining polish checklist is specific: smoother Ted acceleration curves, rain debris that feels like debris instead of rectangles, speech bubble positioning that doesn’t clip the grid edge, menu tagline animation, Outlook popup open/close bounce. These are detail items, not structural ones. The bones are solid.

2,332 lines of Lua. Zero external assets. Eleven piece types. 230+ Ted quotes. 25 Outlook emails. One sad SVP who is cautiously optimistic about the launch and has already sent a follow-up email summarizing his optimism. The email has four attachments. None of them are relevant.

Ted is available for questions. His calendar shows Tentative.

// This devlog is about

Tedtrist

Puzzle / Corporate Parody Released

// Leave a Response

Required fields are marked *