CoOp:Anything
게임을 검색해 협동 플레이 가능한 모드·단계·품질·커뮤니티 평점을 확인합니다
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기A stickman ragdoll brawler for the browser. Plain HTML, CSS and JS, zero runtime dependencies, 60 fps on a phone.
저장소 README에서 가져옴
README 전체를 불러오는 중입니다.
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.