{"_id":"@caputchin/game-paddle-rally","_rev":"2-f3f485e173cca1087e2f519a71d120f8","name":"@caputchin/game-paddle-rally","dist-tags":{"latest":"0.3.0"},"versions":{"0.2.0":{"name":"@caputchin/game-paddle-rally","version":"0.2.0","keywords":["caputchin","caputchin-game","captcha","phaser","pong","game"],"license":"MIT","_id":"@caputchin/game-paddle-rally@0.2.0","maintainers":[{"name":"caputchiner","email":"info@caputchin.com"}],"homepage":"https://github.com/Caputchin/caputchin-games#readme","bugs":{"url":"https://github.com/Caputchin/caputchin-games/issues"},"dist":{"shasum":"7ea4e5118946961e49d02ae503fa01ccd2d47b47","tarball":"https://registry.npmjs.org/@caputchin/game-paddle-rally/-/game-paddle-rally-0.2.0.tgz","fileCount":10,"integrity":"sha512-c691kOL+o+CziEjpvoxMHO4xw0Z4pldrPC5CatRcUldZlAbF5wWrkGIz/w8txcKaP3Uo/eSgsy+kFxrNF0S9WA==","signatures":[{"sig":"MEQCIE0QVdU1aLJUEVCD/bUyIWkLKFVlNB96igT4FwDFe/1NAiB5w5vOwXHIyWovsA2PKx3wWYiby8zofn1dLWZ/m1Bb9w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2830904},"type":"module","_from":"file:caputchin-game-paddle-rally-0.2.0.tgz","private":false,"scripts":{"dev":"tsup --watch","test":"vitest run","build":"tsup","check":"node scripts/check.mjs","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"caputchiner","email":"info@caputchin.com"},"_resolved":"/tmp/327eae66040827d96d615840db0e2f50/caputchin-game-paddle-rally-0.2.0.tgz","_integrity":"sha512-c691kOL+o+CziEjpvoxMHO4xw0Z4pldrPC5CatRcUldZlAbF5wWrkGIz/w8txcKaP3Uo/eSgsy+kFxrNF0S9WA==","repository":{"url":"git+https://github.com/Caputchin/caputchin-games.git","type":"git","directory":"packages/paddle-rally"},"_npmVersion":"10.9.8","description":"Rally the ball past a CPU rival, or keep it alive solo, to prove you're human. A Phaser-engine captcha. A Caputchin first-party game.","directories":{},"sideEffects":["./dist/paddle-rally.js"],"_nodeVersion":"22.22.3","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","phaser":"^4.1.0","vitest":"^2.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","@caputchin/game-sdk":"^3.1.0","@caputchin/preset-phaser":"^0.2.0","@caputchin/replay-contract":"^0.3.0","@caputchin/replay-selfcheck":"^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/game-paddle-rally_0.2.0_1780543632054_0.45367213563954456","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@caputchin/game-paddle-rally","version":"0.3.0","description":"Rally the ball past a CPU rival, or keep it alive solo, to prove you're human. A Phaser-engine captcha. A Caputchin first-party game.","keywords":["caputchin","caputchin-game","captcha","phaser","pong","game"],"homepage":"https://github.com/Caputchin/caputchin-games#readme","repository":{"type":"git","url":"git+https://github.com/Caputchin/caputchin-games.git","directory":"packages/paddle-rally"},"license":"MIT","private":false,"type":"module","sideEffects":["./dist/paddle-rally.js"],"devDependencies":{"@caputchin/game-sdk":"^3.2.0","@caputchin/preset-phaser":"^0.2.0","@caputchin/replay-contract":"^0.3.0","@caputchin/replay-selfcheck":"^0.2.0","@types/node":"^20.0.0","phaser":"^4.1.0","tsup":"^8.0.0","typescript":"^5.4.0","vitest":"^2.0.0"},"scripts":{"build":"tsup","dev":"tsup --watch","typecheck":"tsc --noEmit","test":"vitest run","test:watch":"vitest","check":"node scripts/check.mjs"},"_id":"@caputchin/game-paddle-rally@0.3.0","bugs":{"url":"https://github.com/Caputchin/caputchin-games/issues"},"_integrity":"sha512-O3hKOicaNaIfsBgYeaNg2SLIC3mTCCjvt6k/8j5gKyhEnldTy8zAsXzz9/vYiOjCqGkT5+c0nl1OD9vKvMkRpQ==","_resolved":"/tmp/c5fcdef434490e73a4fe0413b104ea83/caputchin-game-paddle-rally-0.3.0.tgz","_from":"file:caputchin-game-paddle-rally-0.3.0.tgz","_nodeVersion":"22.22.3","_npmVersion":"10.9.8","dist":{"integrity":"sha512-O3hKOicaNaIfsBgYeaNg2SLIC3mTCCjvt6k/8j5gKyhEnldTy8zAsXzz9/vYiOjCqGkT5+c0nl1OD9vKvMkRpQ==","shasum":"2f61f5fc25338a6d20ead2398862d4db37d51bbb","tarball":"https://registry.npmjs.org/@caputchin/game-paddle-rally/-/game-paddle-rally-0.3.0.tgz","fileCount":10,"unpackedSize":2831212,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCTwT8lDMkWatq794qj/qaY08EILkg0WJvSSvOVzqIAagIhAIfA7JvH8QX+tAbMKSFsKZMOXfvvYx9/ZElbVI0b3juf"}]},"_npmUser":{"name":"caputchiner","email":"info@caputchin.com"},"directories":{},"maintainers":[{"name":"caputchiner","email":"info@caputchin.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/game-paddle-rally_0.3.0_1780846228323_0.006359454216587235"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-04T03:27:11.864Z","modified":"2026-06-07T15:30:28.682Z","0.2.0":"2026-06-04T03:27:12.199Z","0.3.0":"2026-06-07T15:30:28.562Z"},"bugs":{"url":"https://github.com/Caputchin/caputchin-games/issues"},"license":"MIT","homepage":"https://github.com/Caputchin/caputchin-games#readme","keywords":["caputchin","caputchin-game","captcha","phaser","pong","game"],"repository":{"type":"git","url":"git+https://github.com/Caputchin/caputchin-games.git","directory":"packages/paddle-rally"},"description":"Rally the ball past a CPU rival, or keep it alive solo, to prove you're human. A Phaser-engine captcha. A Caputchin first-party game.","maintainers":[{"name":"caputchiner","email":"info@caputchin.com"}],"readme":"# Paddle Rally\n\nRally the ball to prove you're human. Paddle Rally is a Pong-style Caputchin captcha built on the Phaser engine, one of the first-party Core Pack games. It ships two modes, chosen by the site owner:\n\n- **Rival** (default): classic Pong against a CPU paddle, first to the target points. A deliberate flick of your paddle puts spin on the ball to out-skill the rival; a held key cannot.\n- **Solo:** no rival. The right side is a wall; keep the ball alive and survive a target number of returns. The ball runs faster here, since there's no rival to outrun, so it's a pure reflex test.\n\n## How it plays\n\n**Rival:** keep the ball in play and slip it past your rival's paddle to score. First to the target (three points by default) wins and clears the check; a sharp flick angles the ball where the rival isn't. After a win you can keep rallying in a relaxed endless mode that isn't scored.\n\n**Solo:** the ball bounces off the right wall back to you; keep returning it. Survive the target number of returns (five by default) and you clear the check; miss once and you retry. The ball ranges the full court and speeds up, so it rewards tracking.\n\n| Action | Keyboard | Touch / pointer |\n|---|---|---|\n| Move your paddle up | Up arrow or W | drag up |\n| Move your paddle down | Down arrow or S | drag down |\n| Keep playing after a round | Space | tap |\n\nYour paddle is on the left.\n\n## Customization\n\nSite owners can tune Paddle Rally from the marketplace, no code required:\n\n- **Gameplay** (configurations): mode (rival or solo), points to win / returns to survive, paddle speed, difficulty, and sound. Presets: `default` (rival), `hardcore` (rival), `solo`, `solo-fast`.\n- **Languages** (locales): ships the full official language set (English plus ten more). Pick one, or let it follow the visitor's browser.\n- **Look** (skins): court, paddle, and ball colors, in dark and light themes. Presets: `default`, `night`, `sandlot`.\n\n## Accessibility and support\n\n- **Keyboard:** fully playable with the arrow keys (or W and S) and space.\n- **Touch:** fully playable by dragging anywhere on a phone or tablet.\n- **Responsive:** fills any container size and aspect ratio, portrait or landscape, with no letterboxing.\n- **Screen reader:** the score and each serve are announced through a live region, and the play area carries a descriptive label. The announcer follows the active language and reading direction.\n- **Audio:** optional. Short procedural blips mark the serve, paddle hits, and wall bounces; turn them off with the sound setting. Every cue is also shown on screen, so Paddle Rally is fully playable muted.\n\n## Security model\n\nPaddle Rally is a *skill* check: it filters non-playing input, not all automation. Be clear-eyed about what that means. Both modes share the same posture.\n\n- **What it stops, by construction:** a paddle that sits still or holds one direction never wins. In rival mode it imparts no flick, so its shots stay soft and the rival always returns them; in solo mode the ball ranges the full court, so a still paddle is always left behind. Non-playing input loses, in either mode.\n- **What it does not claim:** Paddle Rally is not a Turing test. A program that genuinely tracks and returns the ball plays the way a person does and can pass, as it could for any skill-based challenge. A random/erratic bot can also luck through at a small, bounded rate (a few percent at the easiest settings, lower at the defaults). It is a probabilistic filter, not a proof.\n- **Where it fits:** the game is one signal. Caputchin combines it with behavioral and server-side checks; it is never the sole line of defense.\n- **Why a win can't be forged:** the verdict is recomputed by deterministic server-side replay of your recorded inputs, so the result cannot be faked in the browser.\n\n## Add it to your site\n\nPaddle Rally embeds like any Caputchin game: a single element, sandboxed behind a Caputchin verification check, with zero tracking. Browse the pack, preview Paddle Rally live, and copy its embed snippet from the [Caputchin marketplace](https://caputchin.com/marketplace).\n","readmeFilename":"README.md"}