{"_id":"@caputchin/game-wall-smash","_rev":"5-bf879bea97c72d0b8265d58487f10d38","name":"@caputchin/game-wall-smash","dist-tags":{"latest":"0.3.0"},"versions":{"0.2.0":{"name":"@caputchin/game-wall-smash","version":"0.2.0","keywords":["caputchin","caputchin-game","captcha","bevy","breakout","arkanoid","game"],"license":"MIT","_id":"@caputchin/game-wall-smash@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":"ce0954e74c20bec92aae1215c15d7386aebbff7e","tarball":"https://registry.npmjs.org/@caputchin/game-wall-smash/-/game-wall-smash-0.2.0.tgz","fileCount":11,"integrity":"sha512-F4Mc17xjPpXo9l0yQOBBPt2pC77pdF01WwWylnyihUWRbZjTc45I5U+V2XF00RwJE306hncwCtlNgFumvH6SVg==","signatures":[{"sig":"MEUCIEufzVaNxQObcT7E6uEXYDaV/RF6sryo0BXUcNRSv8XkAiEAvgyRvAVF5nk5V7i102blq6HpO+mELl8vJoCdImc39Xg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":19455341},"type":"module","_from":"file:caputchin-game-wall-smash-0.2.0.tgz","private":false,"scripts":{"dev":"tsup --watch","test":"cargo test && vitest run","build":"tsup","predev":"{ [ -f build/wall-smash-headless.wasm ] || pnpm build:wasm:headless; } && { [ -f src/generated/live-wasm.ts ] || pnpm build:wasm:live; }","pretest":"[ -f build/wall-smash-headless.wasm ] || pnpm build:wasm:headless","prebuild":"{ [ -f build/wall-smash-headless.wasm ] || pnpm build:wasm:headless; } && { [ -f src/generated/live-wasm.ts ] || pnpm build:wasm:live; }","typecheck":"tsc --noEmit","build:wasm":"bash scripts/build-wasm.sh","test:watch":"vitest","build:wasm:live":"WS_LIVE_ONLY=1 bash scripts/build-wasm.sh","build:wasm:headless":"WS_HEADLESS_ONLY=1 bash scripts/build-wasm.sh"},"_npmUser":{"name":"caputchiner","email":"info@caputchin.com"},"_resolved":"/tmp/bb62ef2b42e70ac1b3553045f407651b/caputchin-game-wall-smash-0.2.0.tgz","_integrity":"sha512-F4Mc17xjPpXo9l0yQOBBPt2pC77pdF01WwWylnyihUWRbZjTc45I5U+V2XF00RwJE306hncwCtlNgFumvH6SVg==","repository":{"url":"git+https://github.com/Caputchin/caputchin-games.git","type":"git","directory":"packages/wall-smash"},"_npmVersion":"10.9.8","description":"Smash the wall of bricks with the ball to prove you're human. A Bevy-engine captcha. A Caputchin first-party game.","directories":{},"sideEffects":["./dist/wall-smash.js"],"_nodeVersion":"22.22.3","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^2.0.0","happy-dom":"^15.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","@caputchin/game-sdk":"^3.0.0","@caputchin/replay-contract":"^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/game-wall-smash_0.2.0_1780326769732_0.06155325923011201","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@caputchin/game-wall-smash","version":"0.2.1","keywords":["caputchin","caputchin-game","captcha","bevy","breakout","arkanoid","game"],"license":"MIT","_id":"@caputchin/game-wall-smash@0.2.1","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":"bbd37f0cc25ac02f12b064f88dcf0233869caea7","tarball":"https://registry.npmjs.org/@caputchin/game-wall-smash/-/game-wall-smash-0.2.1.tgz","fileCount":11,"integrity":"sha512-UiZ3x0bN71NV5Hp5Fg2hredAK+GBFUZWAFhI9glEr8z3kxdonOncRhlTCA+2fS+K0ufTD3AoLTEzZC3KuRNlSQ==","signatures":[{"sig":"MEMCIEVwKC4X0qkn4+or3KGakj8rco0kUSTmRpSNqRJYrk5hAh8zqD1PfPlEQHzEcsfphG+EH6ZjUXnyFBn01pImlLsz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7621127},"type":"module","_from":"file:caputchin-game-wall-smash-0.2.1.tgz","private":false,"scripts":{"dev":"tsup --watch","test":"cargo test && vitest run","build":"tsup","predev":"{ [ -f build/wall-smash-headless.wasm ] || pnpm build:wasm:headless; } && { [ -f src/generated/live-wasm.ts ] || pnpm build:wasm:live; }","pretest":"[ -f build/wall-smash-headless.wasm ] || pnpm build:wasm:headless","prebuild":"{ [ -f build/wall-smash-headless.wasm ] || pnpm build:wasm:headless; } && { [ -f src/generated/live-wasm.ts ] || pnpm build:wasm:live; }","typecheck":"tsc --noEmit","build:wasm":"bash scripts/build-wasm.sh","test:watch":"vitest","build:wasm:live":"WS_LIVE_ONLY=1 bash scripts/build-wasm.sh","build:wasm:headless":"WS_HEADLESS_ONLY=1 bash scripts/build-wasm.sh"},"_npmUser":{"name":"caputchiner","email":"info@caputchin.com"},"_resolved":"/tmp/935852449640e7797a5eb0d55e8ad3ed/caputchin-game-wall-smash-0.2.1.tgz","_integrity":"sha512-UiZ3x0bN71NV5Hp5Fg2hredAK+GBFUZWAFhI9glEr8z3kxdonOncRhlTCA+2fS+K0ufTD3AoLTEzZC3KuRNlSQ==","repository":{"url":"git+https://github.com/Caputchin/caputchin-games.git","type":"git","directory":"packages/wall-smash"},"_npmVersion":"10.9.8","description":"Smash the wall of bricks with the ball to prove you're human. A Bevy-engine captcha. A Caputchin first-party game.","directories":{},"sideEffects":["./dist/wall-smash.js"],"_nodeVersion":"22.22.3","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","fflate":"^0.8.2","vitest":"^2.0.0","happy-dom":"^15.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","@caputchin/game-sdk":"^3.0.0","@caputchin/replay-contract":"^0.2.0"},"_npmOperationalInternal":{"tmp":"tmp/game-wall-smash_0.2.1_1780340678872_0.5080243104921967","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@caputchin/game-wall-smash","version":"0.2.2","keywords":["caputchin","caputchin-game","captcha","bevy","breakout","arkanoid","game"],"license":"MIT","_id":"@caputchin/game-wall-smash@0.2.2","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":"2ceec20173005f4685f7899d9bc967b728022e75","tarball":"https://registry.npmjs.org/@caputchin/game-wall-smash/-/game-wall-smash-0.2.2.tgz","fileCount":11,"integrity":"sha512-TEpXUbDomzPK9qiC34qg7e5MXgGA7recJlpQkykfxmtEfWMk/uecFpyND0FuZy8fJ4buTjcdhb0HLWrXyHWGMA==","signatures":[{"sig":"MEUCIQDiCSFZIUIk3B+lZGkpcSEOHMyTs/lKSPKc8xlzB2+mzQIgWGKK/0gDJR/CxRJmZ6lX0q1stzS/YMdKQ0JdkPzDZPw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7620906},"type":"module","_from":"file:caputchin-game-wall-smash-0.2.2.tgz","private":false,"scripts":{"dev":"tsup --watch","test":"cargo test && vitest run","build":"tsup","predev":"{ [ -f build/wall-smash-headless.wasm ] || pnpm build:wasm:headless; } && { [ -f src/generated/live-wasm.ts ] || pnpm build:wasm:live; }","pretest":"[ -f build/wall-smash-headless.wasm ] || pnpm build:wasm:headless","prebuild":"{ [ -f build/wall-smash-headless.wasm ] || pnpm build:wasm:headless; } && { [ -f src/generated/live-wasm.ts ] || pnpm build:wasm:live; }","typecheck":"tsc --noEmit","build:wasm":"bash scripts/build-wasm.sh","test:watch":"vitest","build:wasm:live":"WS_LIVE_ONLY=1 bash scripts/build-wasm.sh","build:wasm:headless":"WS_HEADLESS_ONLY=1 bash scripts/build-wasm.sh"},"_npmUser":{"name":"caputchiner","email":"info@caputchin.com"},"_resolved":"/tmp/b0839ade7bed902043e6a5a7c8dab401/caputchin-game-wall-smash-0.2.2.tgz","_integrity":"sha512-TEpXUbDomzPK9qiC34qg7e5MXgGA7recJlpQkykfxmtEfWMk/uecFpyND0FuZy8fJ4buTjcdhb0HLWrXyHWGMA==","repository":{"url":"git+https://github.com/Caputchin/caputchin-games.git","type":"git","directory":"packages/wall-smash"},"_npmVersion":"10.9.8","description":"Smash the wall of bricks with the ball to prove you're human. A Bevy-engine captcha. A Caputchin first-party game.","directories":{},"sideEffects":["./dist/wall-smash.js"],"_nodeVersion":"22.22.3","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^2.0.0","happy-dom":"^15.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","@caputchin/game-sdk":"^3.1.0","@caputchin/replay-wasm":"^0.2.0","@caputchin/replay-contract":"^0.3.0"},"_npmOperationalInternal":{"tmp":"tmp/game-wall-smash_0.2.2_1780543962280_0.27108757542349826","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@caputchin/game-wall-smash","version":"0.2.3","keywords":["caputchin","caputchin-game","captcha","bevy","breakout","arkanoid","game"],"license":"MIT","_id":"@caputchin/game-wall-smash@0.2.3","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":"20ee099745fdd68331c3668011505e888489f5cc","tarball":"https://registry.npmjs.org/@caputchin/game-wall-smash/-/game-wall-smash-0.2.3.tgz","fileCount":11,"integrity":"sha512-aaoBmc5B0+qDSEHqCfFVA13Lwqko5it3nVTSt+lN2glrd39pyyJUxma2sqBqQLJwtTUKXFmdZuds8GU/sqDajg==","signatures":[{"sig":"MEUCIQCeBHNV4mUvSGtwp6IsI8w+4/+7jgayG06cqAnAYacYjAIgCjv3GY/ETe2b86McR8I00ODbmQaskJrrMz0X57hgbHM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7620906},"type":"module","_from":"file:caputchin-game-wall-smash-0.2.3.tgz","private":false,"scripts":{"dev":"tsup --watch","test":"cargo test && vitest run","build":"tsup","predev":"{ [ -f build/wall-smash-headless.wasm ] || pnpm build:wasm:headless; } && { [ -f src/generated/live-wasm.ts ] || pnpm build:wasm:live; }","pretest":"[ -f build/wall-smash-headless.wasm ] || pnpm build:wasm:headless","prebuild":"{ [ -f build/wall-smash-headless.wasm ] || pnpm build:wasm:headless; } && { [ -f src/generated/live-wasm.ts ] || pnpm build:wasm:live; }","typecheck":"tsc --noEmit","build:wasm":"bash scripts/build-wasm.sh","test:watch":"vitest","build:wasm:live":"WS_LIVE_ONLY=1 bash scripts/build-wasm.sh","build:wasm:headless":"WS_HEADLESS_ONLY=1 bash scripts/build-wasm.sh"},"_npmUser":{"name":"caputchiner","email":"info@caputchin.com"},"_resolved":"/tmp/f9a90e16243f16c8a66ef22db3cb714c/caputchin-game-wall-smash-0.2.3.tgz","_integrity":"sha512-aaoBmc5B0+qDSEHqCfFVA13Lwqko5it3nVTSt+lN2glrd39pyyJUxma2sqBqQLJwtTUKXFmdZuds8GU/sqDajg==","repository":{"url":"git+https://github.com/Caputchin/caputchin-games.git","type":"git","directory":"packages/wall-smash"},"_npmVersion":"10.9.8","description":"Smash the wall of bricks with the ball to prove you're human. A Bevy-engine captcha. A Caputchin first-party game.","directories":{},"sideEffects":["./dist/wall-smash.js"],"_nodeVersion":"22.22.3","_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.0.0","vitest":"^2.0.0","happy-dom":"^15.0.0","typescript":"^5.4.0","@types/node":"^20.0.0","@caputchin/game-sdk":"^3.1.0","@caputchin/replay-wasm":"^0.3.0","@caputchin/replay-contract":"^0.3.0"},"_npmOperationalInternal":{"tmp":"tmp/game-wall-smash_0.2.3_1780596206623_0.18259331316488359","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@caputchin/game-wall-smash","version":"0.3.0","description":"Smash the wall of bricks with the ball to prove you're human. A Bevy-engine captcha. A Caputchin first-party game.","keywords":["caputchin","caputchin-game","captcha","bevy","breakout","arkanoid","game"],"homepage":"https://github.com/Caputchin/caputchin-games#readme","repository":{"type":"git","url":"git+https://github.com/Caputchin/caputchin-games.git","directory":"packages/wall-smash"},"license":"MIT","private":false,"type":"module","sideEffects":["./dist/wall-smash.js"],"devDependencies":{"@caputchin/game-sdk":"^3.2.0","@caputchin/replay-contract":"^0.3.0","@caputchin/replay-selfcheck":"^0.2.0","@caputchin/replay-wasm":"^0.3.0","@types/node":"^20.0.0","happy-dom":"^15.0.0","tsup":"^8.0.0","typescript":"^5.4.0","vitest":"^2.0.0"},"scripts":{"build:wasm":"bash scripts/build-wasm.sh","build:wasm:headless":"WS_HEADLESS_ONLY=1 bash scripts/build-wasm.sh","build:wasm:live":"WS_LIVE_ONLY=1 bash scripts/build-wasm.sh","pretest":"[ -f build/wall-smash-headless.wasm ] || pnpm build:wasm:headless","test":"cargo test && vitest run","test:watch":"vitest","prebuild":"{ [ -f build/wall-smash-headless.wasm ] || pnpm build:wasm:headless; } && { [ -f src/generated/live-wasm.ts ] || pnpm build:wasm:live; }","build":"tsup","predev":"{ [ -f build/wall-smash-headless.wasm ] || pnpm build:wasm:headless; } && { [ -f src/generated/live-wasm.ts ] || pnpm build:wasm:live; }","dev":"tsup --watch","typecheck":"tsc --noEmit","check":"node scripts/check.mjs"},"_id":"@caputchin/game-wall-smash@0.3.0","bugs":{"url":"https://github.com/Caputchin/caputchin-games/issues"},"_integrity":"sha512-BHeGceMNYLABsTSvyQSKRzj03Gty1LOts3cogqdBmutrMyIwNRxljhIUqS+trqbKPr74IBkeIiU25EBCzXHF3w==","_resolved":"/tmp/92624d2cae1e941f0c4717e2099a9afb/caputchin-game-wall-smash-0.3.0.tgz","_from":"file:caputchin-game-wall-smash-0.3.0.tgz","_nodeVersion":"22.22.3","_npmVersion":"10.9.8","dist":{"integrity":"sha512-BHeGceMNYLABsTSvyQSKRzj03Gty1LOts3cogqdBmutrMyIwNRxljhIUqS+trqbKPr74IBkeIiU25EBCzXHF3w==","shasum":"4c023725bdfab05aa462e887e72a38892a404bdb","tarball":"https://registry.npmjs.org/@caputchin/game-wall-smash/-/game-wall-smash-0.3.0.tgz","fileCount":11,"unpackedSize":7621012,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCCzekcIvM4jC0LWu5dku8DJpgMAop8Md9m7yQ3xZvh9gIhAOAkKuKPgT8BSmUW70lPGSX9duqzqYcaz3GVFIvDR1CR"}]},"_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-wall-smash_0.3.0_1780846584359_0.8835536776352801"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-01T15:12:49.426Z","modified":"2026-06-07T15:36:24.770Z","0.2.0":"2026-06-01T15:12:49.981Z","0.2.1":"2026-06-01T19:04:39.228Z","0.2.2":"2026-06-04T03:32:42.542Z","0.2.3":"2026-06-04T18:03:26.946Z","0.3.0":"2026-06-07T15:36:24.645Z"},"bugs":{"url":"https://github.com/Caputchin/caputchin-games/issues"},"license":"MIT","homepage":"https://github.com/Caputchin/caputchin-games#readme","keywords":["caputchin","caputchin-game","captcha","bevy","breakout","arkanoid","game"],"repository":{"type":"git","url":"git+https://github.com/Caputchin/caputchin-games.git","directory":"packages/wall-smash"},"description":"Smash the wall of bricks with the ball to prove you're human. A Bevy-engine captcha. A Caputchin first-party game.","maintainers":[{"name":"caputchiner","email":"info@caputchin.com"}],"readme":"# Wall Smash\n\nBounce the ball off your paddle to smash every brick before time runs out. A\nCaputchin first-party game, and a Breakout/Arkanoid take built on the\n[Bevy](https://bevyengine.org) engine (Rust compiled to WebAssembly), with two\ndistinct looks: a flat top-down retro board and a real 3D arcade arena.\n\n## How it plays\n\nThe ball starts stuck to your paddle at the bottom of the arena. Launch it, then\nkeep it in play by sliding the paddle under it, and clear the whole brick wall.\nWhere the ball strikes the paddle sets its rebound angle, so you aim by position.\nClear one wall and the next (a different pattern) drops in; clear the configured\nnumber of walls before the timer runs out and you pass. The countdown only starts\nonce you launch the first ball, so there is no rush while you read the board.\n\nA heads-up display along the top shows your remaining lives, the time left, the\ncurrent wall, and your score, plus a button to mute the sound. On-screen prompts\n(built with the engine's own UI, not a web overlay) walk you through the round: a\nlaunch hint, a \"Level N\" toast between walls, a verified screen when you pass, and\na round-over screen with a retry button if you run out of lives or time.\n\nThe launch angle and the starting wall layout are both seeded by the server, so\nthe first bounce and the brick pattern differ every session: a memorized winning\nrun does not transfer to a fresh challenge. The board is tuned to be solved in\nseconds, not minutes.\n\n| Input | Keyboard | Mouse | Touch |\n|---|---|---|---|\n| Move paddle | hold `Left`/`Right` or `A`/`D` | hold the left button and slide (paddle tracks the cursor) | touch and slide (paddle tracks your finger) |\n| Launch ball | `Space` / `Up` | click the board | tap the board |\n\n### Keep playing\n\nOnce you have passed, the verified screen offers a **Keep playing** button that\ndrops you into endless bonus walls: untimed, no lives lost, each one a little\nharder than the last. It is purely for fun and never affects the verification\n(that was already submitted on the pass), so play as long as you like.\n\n## The two looks\n\nThe look is a **skin** the site picks (the `retro` light-theme skin or the\n`modern` dark-theme skin), so it switches with the rest of the site's theming:\n\n- **Retro** (the light-theme skin) is a flat, top-down board (the classic arcade\n  read): blue grid field, colored brick rows, a cylinder paddle, a glowing ball.\n  It runs on every device, including machines with software-only WebGL.\n- **Modern** (the dark-theme skin) is a real 3D arena viewed from a top corner,\n  with lit blocks, bloom, and contact shadows. It needs a hardware GPU; on a\n  software-only renderer the game automatically serves the smooth retro look\n  instead. Either look plays identically and replays the same on the server.\n\n## Customization\n\nEverything is driven by [`caputchin.json`](caputchin.json) and resolved by the\nwidget into the game's runtime context:\n\n- **Skins**: every color is a site-settable preset. `background` and `accent`\n  (the glow and break-particle color) always apply; `ball` and `paddle` recolor\n  those pieces; an optional `brick` color recolors the whole wall to one shaded\n  hue, and leaving it unset keeps the default multi-color arcade wall. Ships with\n  `retro` and `modern` color presets.\n- **Configurations**: paddle width, ball speed, number of walls to clear, lives,\n  the solve time limit, and sound on/off (a player can also mute from the in-game\n  button). Ships with `default`, `casual`, and `hardcore` presets. (The 2D/3D look\n  is a skin, not a configuration; see above.)\n- **Languages**: the HUD and on-screen prompts ship in 11 locales (English,\n  Spanish, French, German, Portuguese, Russian, Arabic, Indonesian, Chinese,\n  Japanese, Korean), rendered by the engine from a compact embedded multi-script\n  font, with right-to-left support for Arabic. The widget picks the language from\n  the visitor's locale.\n\n## Accessibility and support\n\nKeyboard-, mouse-, and touch-operable, fully responsive (it reflows to any widget\nsize and reframes the 3D camera live), with optional sound the site or player can\ndisable. A hidden live region announces the game state (launch, level, life lost,\nverified, round over) to screen readers in the visitor's language, so the round is\nfollowable without sight. The core challenge is still a real-time aim-and-reflex\ntask, so it is **not** screen-reader *solvable*; pair it with an accessible\nalternative challenge where that matters.\n\n## Add it to your site\n\nWall Smash embeds with a single element and runs sandboxed behind a Caputchin\nverification check, the same as every game in the pack. Preview it live and copy\nits embed snippet from the [Caputchin marketplace](https://caputchin.com/marketplace).\n\n## License\n\nMIT, see [LICENSE](LICENSE). Built on the Bevy engine (MIT/Apache-2.0); all\nin-game art is generated procedurally at runtime, and the only bundled asset is a\nsubset of the Noto Sans fonts (SIL Open Font License 1.1) for the on-screen text.\nSee [THIRD-PARTY-NOTICES.md](THIRD-PARTY-NOTICES.md).\n","readmeFilename":"README.md"}