If you have opened Roblox in the last few weeks, you have seen them: a giant keyboard, players sprinting across it, and an obstacle course that only becomes crossable once you are fast enough. "+1 Speed Keyboard Escape" and its variants are everywhere right now, and the loop is simple enough that a solo dev can ship a playable version in a weekend.
Getting the mechanic working takes an afternoon. Getting the board built takes longer than you would think, and that is what this post is about.
The loop
You have a giant keyboard where every key works. It is your playfield and your progression source at once, so moving around the map is already farming, and there is no separate collection minigame bolted on top. You step on keys, each key gives you speed, and the speed is what lets you cross gaps that were impossible thirty seconds ago.
Which means your difficulty curve is not in a config table somewhere, it is in the width of your gaps. Tune those before anything else. I have played versions of this with no UI at all that felt better than versions with a full HUD, purely because the spacing was right.
The speed itself is one line, humanoid.WalkSpeed += 1, and then a cap on it, because somewhere past 150 players start clipping through thin parts and skipping the obby you spent the weekend building. You also want to decide early whether speed survives death and whether it survives a stage change. Carrying it everywhere makes the game trivial by stage three, wiping it on death makes it miserable, and most of the ones that work keep it within a stage and reset between them.
None of that is where you will actually lose your time.
The part that eats the weekend
Making a key that gives speed is trivial. Making one that feels like a key is a different job entirely.
It has to sink when you stand on it and come back up when you leave, in the right amount of time, with the right easing, and it has to still look correct when the board sits on a slope. It has to make a sound, positioned in 3D, pitch shifted slightly on every press so a fast run does not turn into a machine gun of the identical sample. It has to not fire twice when one foot covers the corner of two caps. And it has to keep doing all of that when there are two thousand of them on screen and streaming is dropping half of them in and out.
Then there is placement. A single QWERTY layout is around sixty keys, and each one needs a label facing up, an attribute holding its character, a tag so your code can find it, correct spacing, and alignment that does not drift as you go. By hand that is an hour. Then you decide you want AZERTY as well, or bigger caps, or a different colour scheme for the second board, and it is another hour.
That is where two day builds die.
KeyCapper
So I built a Studio plugin for it. KeyCapper gives you a brush: you point at a surface and paint keys onto it. They snap to a grid, they follow whatever surface you are painting on, they rotate in ninety degree steps with the scroll wheel, and a cell that would end up hanging off a ledge gets dropped instead of placed floating in mid air. You can paint an 8x8 footprint at a time, undo a whole stroke as a single action, and erase with the same brush.
What it places are working keys, not props. Each one arrives with its press animation, its 3D sound and its label already wired. Detection does not go through Touched, which behaves badly on a dense grid of small parts: instead the runtime ticks a box at the player's feet at 30 Hz and tests it against the hitboxes, and that is what keeps a crowded board from double firing or swallowing presses. Keys belong to named groups, and a group carries its own colour mode, gradient, font, animation style and sound, so restyling half the board is one change rather than a hundred.
There is a points system in there too if you want it, with a DataStore behind it and a counter with popups, batched from client to server once a second rather than fired on every press. You can switch it off completely, or keep the value and disable the built in UI so it stays out of the way of your own HUD.
And the piece that matters for this post: the runtime exposes a plain BindableEvent.
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local KeyCapper = ReplicatedStorage:WaitForChild("KeyCapper")
KeyCapper.KeyPressed.Event:Connect(function(model, letter)
-- your game logic goes here
end)
That fires on every local press with the key model and its letter, and that is where your +1 speed goes. Or your word spelling variant, or your bomb tile, or whatever you are actually trying to make. The plugin handles placement, feel and detection, and leaves the game to you.
You can grab it at zerodev.tools/keycapper, where the rest of the ZeroDev tools live too. Here is what a board looks like once it is painted:
About the download link
I am putting this here rather than burying it at the bottom: the download on that page goes through a link locker, so there is one short step between the button and the file.
The reason is simple. The tool is free and it stays free, and I would rather not put a paywall or a subscription on a Studio plugin, so the locker is what pays for the time I spend on it. It takes about thirty seconds and does not need an account, and nothing about the plugin is limited once you are through.
If that is a dealbreaker for you, fair enough. Everything above is an honest description of how the thing works, and you are welcome to go and build your own.
One last thing if you are shipping one of these
Grant the speed on the server. A speed stat is the most attractive thing in your game to forge, and client side grants in this genre get exploited within about a day of going live. That applies to anything you hang off KeyPressed as well, since detection runs on the client, so treat what it gives you as an input rather than as proof.
Beyond that, the genre is crowded and moving fast, and what separates the games that stick is the theme, the map and how quickly you got there.
If you build something with it, I would like to see it.
More ZeroDev tools
KeyCapper is one of several tools I build for Roblox devs, all free, all made because I got tired of doing the same setup by hand. The rest of them live at zerodev.tools.
If you build something with any of them, I would like to see it.


Top comments (0)