CoOp:Anything
Search any game and see how much of it you can play with friends: every co-op mod, its stage, quality and community rating.
Punch, kick and launch waves of stickmen across the arena. Chain hits, chase the combo.
GamesJavaScript · CSSGitHub @Waleee7OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
A stickman ragdoll brawler for the browser. Plain HTML, CSS and JS, zero runtime dependencies, 60 fps on a phone.
Taken from the repository README
Loading the full README.
Read the full README ↗ragdoll-riot.vercel.app on desktop or phone. Nothing to install.
| Three-hit combo | Punch three times fast. The third punch is an uppercut that launches. |
| Kick | Sends them flying. A flying body knocks down anyone it hits: that's a STRIKE. |
| Juggle | Hit enemies while they're airborne for bonus points. |
| Live ropes | Launch enemies into the electric ropes for a ZAP bonus. Get knocked in yourself and you get zapped too. |
| RIOT super | Every hit fills the RIOT meter. Full meter: press L and blast the whole ring off its feet. |
| Multiplier | Every 4 hits in a row raise it, up to ×10. Getting hit resets it. |
| Arrives | How to beat it | |
|---|---|---|
| Grunt | Wave 1 | A ! over its head means a swing is coming. |
| Runner | Wave 2 | Fast and fragile. It jabs, then backs off. |
| Brute | Wave 3 | Huge and slow. When you see the !, back off or jump. |
| Shield | Wave 4 | Blocks punches from the front. Kick to break the guard, or hit it from behind. |
| The Bouncer | Every 5th wave | Too heavy to launch, and it pounds the floor. Jump the shockwaves. |
| Action | Keyboard / mouse | Touch |
|---|---|---|
| Move | A D / arrows | Left stick |
| Jump | W / Space | Flick the stick up |
| Punch | J / left click | Big button |
| Kick | K / right click | Small button |
| Super | L (when the meter is full) | SUPER button |
| Pause | P / Esc | ‖ top right |
| How to play | H | HOW TO PLAY button |
flowchart LR
input["Input<br/>keys · mouse · touch"] --> shell
subgraph shell ["Shell"]
engine["Fixed-step engine<br/>60 Hz sim, any-Hz render"]
juice["Juice<br/>hit-stop · shake · slow-mo"]
sfx["Web Audio synth<br/>no sound files"]
end
shell --> game["Game rules<br/>waves · AI · combos · ropes · super"]
game --> fighter["Fighters<br/>procedural poses, 2-bone IK"]
fighter --> rig["Verlet rig<br/>11 points, 11 sticks"]
game --> canvas["Canvas 2D<br/>cached background layer"]
Measured with scripts/verify.mjs in headless Chrome on an M3 Pro: 480 frames at 1440×900, 2× pixel ratio, 12 ragdolls on screen.
| Average frame | p95 frame | Frames over 17.5 ms |
|---|---|---|
| 8.33 ms | 8.40 ms | 0 |
npm install # Playwright, for the tests only
npm test
scripts/verify.mjs (17 checks): loads on desktop and phone, touch controls only on touch, PLAY starts a run, 60 fps under load, an idle player reaches game over, instant restart, zero console errors.scripts/features.mjs (33 checks): How to Play and pause flows, the key legend, tips, the RIOT super, shield block and guard break, rope zaps, the boss's shockwaves and the phone controls.git clone https://github.com/Waleee7/ragdoll-riot && cd ragdoll-riot
python3 -m http.server 5173 # then open http://localhost:5173
The game uses ES modules, so it needs a local server; opening index.html straight from disk won't load it. Add ?debug to the URL for an FPS overlay.
index.html screens, HUD and touch controls
style.css layout, HUD and touch styles
js/main.js boot
js/shell.js title → play → game over flow, pause, how to play, key legend
js/engine.js fixed-timestep loop
js/game.js waves, enemy AI, combat, live ropes, RIOT super, boss, tips, HUD
js/fighter.js attack specs, procedural poses, drawing
js/rig.js Verlet ragdoll: 11 point-masses and distance constraints
js/juice.js easing, shake, hit-stop, slow-mo, flash, zoom punch
js/particles.js pooled sparks, dust, rings and popup text
js/audio.js Web Audio sound synth
js/input.js keyboard, mouse and touch (floating stick) mapped to actions
js/storage.js localStorage wrapper that survives private mode
scripts/ headless browser tests (Playwright)
Made by Joshua Dare with Claude Code · GitHub
© 2026 Joshua Dare. All rights reserved. The source is public to read and learn from; it isn't licensed for reuse.