A synthwave-inspired WebGL block-catching game that will test your reflexes and captivate your senses.
Fast โข Accessible โข Beautiful โข Tested
Time is ticking. Neon blocks cascade from the digital sky. Your mission? Catch them all.
In this retro-futuristic arena, you control a sleek white paddle in a race against time. Each block type demands different strategies:
- ๐ธ Pink Blocks โ 1 point โข Large & leisurely โข Perfect for beginners
- ๐ฃ Purple Blocks โ 5 points โข Medium challenge โข The sweet spot
- ๐ท Cyan Blocks โ 25 points โข Lightning fast โข High risk, high reward
Goal: Score 500 points in 60 seconds. Sounds easy? Think again.
- Synthwave aesthetics with neon colors and retro vibes
- Smooth WebGL rendering at 60fps
- Responsive design that works on any screen
- Dynamic sound effects powered by Web Audio API
- Pitch-shifted audio based on block types and scores
- Spatial audio that responds to your performance
- Full ARIA support for screen readers
- Keyboard navigation throughout the entire interface
- Focus management that never leaves you lost
- High contrast modes for visual accessibility
- TypeScript for type safety and developer experience
- Object pooling for smooth performance
- Comprehensive testing with 141 test cases
- Modern build system powered by Bun
โ โ Arrow Keys Move your paddle
SPACE Start game / Pause
Audio Button Toggle sound
- Start with pink blocks to build momentum
- Chase cyan blocks when you're confident
- Watch the timer - panic leads to mistakes
- Use audio cues to anticipate block drops
# Get the code
git clone https://github.com/zerebos/BlockCatcher.git
cd BlockCatcher
# Install & run (requires Bun)
bun install
bun devbun dev # Development server
bun run prod # Production build
bun test # Run test suite
bun run lint # Code quality checksrc/
โโโ managers/ # System orchestration (audio, DOM, input, rendering, pools)
โโโ entities/ # Game objects (player, blocks) with behavior
โโโ utils/ # Pure functions (math, geometry, vectors)
โโโ audio/ # Modular sound effect system
โโโ types/ # TypeScript definitions
โโโ styles/ # Synthwave CSS architecture
- Unit tests for individual components
- Integration tests for game mechanics
- DOM tests using Happy-DOM for realistic environments
- Edge case coverage including accessibility scenarios
- Object pooling prevents garbage collection hitches
- Efficient collision detection using AABB algorithms
- Minimal DOM manipulation with batch updates
- Optimized bundle under 20KB total
| Metric | Value |
|---|---|
| Bundle Size | 18.81 KB (JS) + 13.40 KB (CSS) |
| Test Coverage | 141 tests, 100% core functionality |
| Performance | 60 FPS WebGL rendering |
| Accessibility | WCAG 2.1 AA compliant |
| Browser Support | All modern browsers with WebGL |
Why these choices?
- Bun โ Lightning-fast runtime and bundler
- TypeScript โ Type safety without complexity
- WebGL โ Hardware-accelerated graphics
- Web Audio API โ Immersive sound design
- Happy-DOM โ Realistic testing environment
- GitHub Actions โ Automated deployment
Love the game? Here's how to make it even better:
- ๐ Report bugs with detailed reproduction steps
- ๐ก Suggest features that align with the synthwave aesthetic
- ๐งช Add tests for edge cases you discover
- โฟ Improve accessibility - there's always more to do
- ๐จ Enhance visuals with new effects or animations
- Write tests for new features
- Maintain TypeScript strict mode compliance
- Follow the existing code style (ESLint configured)
- Ensure accessibility standards are met
Apache 2.0 - Build upon it, learn from it, make it your own.
Built with โค๏ธ using modern web technologies
