This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady
What I Built
I built the first esport for lying down.
There is no controller. No keyboard. No skill tree. You give the browser permission to use your webcam, lie down, and try to stay completely still for 60 seconds while a referee powered by Gemma watches your skeleton and quietly judges you.
That is the whole game. One rule: do not move.
It sounds easy until the referee notices that your left wrist has been twitching and decides to do something about it. First it throws a dry little insult. Then it picks the joint you are least able to control and aims a temptation straight at it. A fly. An itch. A notification. If you move that exact joint, you lose double points. It is the most personal attack I have ever received from a language model.
Your score comes from how still you were, how long your best freeze lasted, and how many times you betrayed yourself. The stillest human goes on the leaderboard. Everyone else gets a rank like Restless Meat Sack and a verdict that sounds like a disappointed butler.
Who gets to be a little lazier? Everyone. This is the only ranked activity where the best possible strategy is to do nothing, and the only setup is a laptop and a floor.
Demo
Play it here: still-s88j.onrender.com
- Open it on a laptop with a webcam.
- Allow the camera and lie down with your whole body in frame.
- Hold still for 60 seconds while Gemma tries to ruin your day.
The free Render instance takes a short nap when nobody visits, so give it a minute to wake up. The video never leaves your browser. That is good for privacy and also good for everyone who does not need to see my ceiling.
Code
The code is here: github.com/mudit-palvadi/still. It is MIT licensed, because a game about doing nothing should be free to do nothing with.
The stack is React, TypeScript, TensorFlow.js MoveNet, Express, and Gemma 4 through Google AI Studio. Render serves the whole thing. The leaderboard uses MongoDB when a database is available and memory when it is not, which is a polite way of saying it forgets you after a restart.
How I Built It
The camera part uses MoveNet, a pose model that runs in the browser and finds 17 points on your body. Every joint is measured against your torso length, so leaning toward the camera does not count as movement. Calibration watches you fidget for three seconds and learns your personal baseline, because some of us are born at 90 percent vibration.
Gemma is the fun part. At a few cue points the browser sends a small packet of stats to the server: time, rating, betrayals, your weakest joints, and your last act of cowardice. Gemma has to reply with strict JSON, one line and sometimes one joint to target.
The server checks the joint and cleans the line before it reaches you. If Gemma is slow or unavailable, a bank of offline lines keeps the round moving. The game never breaks. It just becomes less creative about your posture.
My favorite bug of the week: the first live build used Gemma 3, which Google retired from the Gemini API. The referee did not crash. It quietly fell back to the offline lines, which is the AI equivalent of a waiter saying the kitchen is closed while still serving soup. I moved to Gemma 4, added a diagnostic to the health check, and confirmed the next live line actually came from the model. The first thing it did was threaten my wrist.
I also ran a full round with a fake camera feed and found two scoring bugs. At low frame rates, a perfectly still player scored about 12 instead of 100. And a freeze of 60.3 seconds was rejected by the server because the limit was 60. Both are fixed. The lesson: always test your fake skeleton before you trust a real one.
Two dev.to posts gave me the confidence that this was possible. Mathias Leonhardt built a bird flight simulator you control by flapping your arms. Muhammad Umer Farooq built an AI workout tracker that runs entirely in the browser. Both proved that pose tracking in a web page is not a toy. I borrowed the confidence, not the code. The difference here is the loop: the model is not counting reps, it is actively trying to make you fail.
Why Does Open Innovation Matter?
The pose model runs on your device. The video never leaves the laptop. That is a privacy win, but it is also a creative one: no upload, no queue, no bill that grows every time someone scratches their nose.
Gemma has open weights. I tested the referee loop locally with Ollama before I trusted a hosted key. If the model changes tomorrow, I can point the server at another provider or run it myself. A closed API would make the referee a rental. Open weights make it a cast member I can recast.
The whole project is small enough to read in an afternoon. Every interesting part is inspectable, from the scoring math to the prompt. That is the kind of open innovation I care about: not just free code, but a game you can take apart and make weirder.
The Lazy Payoff
The pitch is a joke with a real edge. Most apps compete for your effort and attention. STILL asks for neither. It saves 100 percent of the effort by design and turns doing nothing into a ranked skill.
The game will teach you that your nose moves more than you think. If you get CERTIFIED STATUE, screenshot it and tell everyone. Nobody will care, but you will know.
If you try it, bring a webcam and the ability to ignore an itch. One of those is harder than it sounds.
Prize Categories
Best Use of Gemma: Gemma 4 is the referee, the game director, and the reason a round has a personality. It chooses what to say, which joint to attack, and how to summarize your failure.
Best Use of Render: STILL runs on a Render web service created from a render.yaml blueprint, with a health check and a free instance that wakes up when someone wants to lie down.


Top comments (0)