Pinzy
Pull-the-pin physics puzzle: slide or drop pins, route and color the balls, dodge bombs and fill the cup. 30 handcrafted levels, Matter.js physics, procedural Web Audio. Phaser 3, no build step.
Pinzy is a complete pull-the-pin physics puzzle built with Phaser 3 and Matter.js. Slide or drop pins in the right order, release the colored balls, teach the gray balls a color by routing them past the right stream, dodge the bombs (or drop them through the floor gaps) and fill the cup to clear the level. 30 handcrafted levels, procedural Web Audio sound and music, and localStorage progress - all in plain JavaScript with no build step.
Highlights
- Physics-driven pull-the-pin gameplay: horizontal pins slide, vertical pins drop - order matters
- Color-transfer mechanic: gray balls pick up the color of the first ball they touch
- Bombs explode on contact; some levels have floor disposal gaps to get rid of them safely
- 30 handcrafted levels defined as plain one-line data (walls, pins, balls, bombs, floor mode)
- 5x6 level select grid with locks: clear a level to unlock the next, progress saved automatically
- HUD with level number and live fill progress, pause menu with resume and restart
- Result panels for level clear, failed runs and the full campaign complete
- All sound effects and background music synthesized in code with Web Audio - zero audio files
- Sound and music toggles persisted with the rest of the progress
- Menu, level select, gameplay and result scenes with animated decor and confetti
- Mouse and touch controls, responsive scale, portrait-friendly layout
Technology
- Phaser 3.80.1 with Matter.js physics, bundled locally in vendor/ - fully offline-ready, no CDN
- Plain JavaScript ES modules, no build step, no frameworks
- SVG-based textures (ball, pin, bomb, cup) with an svgAssets manifest
- One-file theming: every color, font and board constant lives in src/data/theme.js
- Levels as readable one-line data in src/data/levels.js - the grid and unlock chain adapt automatically
- Systems cleanly split: LevelBuilder, Collision, Collection, Color, Explosion, Audio, ProgressStore
Requirements
- Any modern browser and any static host (or a local static server for testing)
- No Node.js, no npm, no build tools, no accounts
What You Get
- Complete, commented Phaser 3 + Matter.js source: scenes, systems, entities and UI
- 30 levels in plain data with a documented format for adding your own
- documentation.html: setup, structure, branding, one-file re-skin, level format, physics tuning, audio and publishing checklist
- README.md with a quick-start and project overview
- 8 gameplay screenshots
- Full rights to rebrand, reskin, extend and publish on any website or app store wrapper
Please note: this is a source code template, not a compiled app. Basic knowledge of HTML and JavaScript is recommended for customization. If you have questions, use the contact form on the site, I usually reply within 24 hours.


