brkrs — a fun, playable brick-breaker game & learning playground
brkrs is a real, playable Breakout/Arkanoid-style game written in Rust 🦀 using the Bevy engine.
It’s also a hands-on learning project, letting you explore:
- Spec-first development with GitHub speckit
- Incremental feature development through issues & PRs
- AI-assisted and agentic coding experiments
Every feature starts as a spec, flows through an issue or PR, and ends as working Rust code. You can play the game, explore the code, and learn modern Rust/Bevy workflows all at the same time.
Linus Torvalds said: “Talk is cheap. Show me the code.”
brkrs lets you play, tinker, and see the specs come alive in a real game.
The Story Behind brkrs
I always wanted to rewrite my old Arkanoid/Breakout-style game, YaAC 🐧, in a modern game framework.
I began by manually implementing the core gameplay foundations: reading documentation, following examples, and building a basic proof-of-concept with the essential mechanics (ball, paddle, bricks).
It quickly became clear that doing everything manually would involve a steep learning curve and a lot of time.
brkrs was born as a solution: a way to learn modern Rust game development, apply spec-first workflows, and experiment with AI-assisted coding, all while still having fun playing a real game.
Try it now
You can play a web version on GitHub Pages
Key Features
brkrs is a Breakout/Arkanoid style game implemented in Rust with the Bevy engine. It extends the classic formula with richer physics, paddle rotation, and per-level configuration.
- Classic Breakout-style gameplay: paddle, ball, bricks, and levels
- Levels are human-readable and easy to modify
- Spec-first workflow: every feature begins as a spec and ends as working Rust code
- Small, incremental PRs demonstrate the development workflow and learning path
- Crate-ready and cross-platform (desktop + WebAssembly builds)
- A fun, approachable way to learn Rust, Bevy, and modern coding practices
Quickstart (play & learn)
Prerequisites: Rust + Cargo + Git
git clone https://github.com/cleder/brkrs.git
cd brkrs
cargo run --release
Controls: move paddle with mouse, scroll wheel to rotate (if enabled), ESC to pause.
Play, tweak, and learn — modify levels, bricks, or mechanics to see specs turn into features.
Core Systems
- Physics (Rapier3D) – 3D physics constrained to a flat play plane.
- Game State – (planned) menu, playing, paused, game over, transitions.
- Level Loader – RON file parsing, entity spawning, per-level gravity.
- Brick System – Extensible brick behaviors via components & events.
- Pause System – ESC to pause, click to resume, with window mode switching (native).
Learning Path & Contribution
This project is intended to be fun and educational. Suggested learning steps:
- Read a spec in the repo or wiki
- Pick a small issue to implement
- Submit a PR that fulfills the spec
- Experiment with AI-assisted features or gameplay tweaks
Documentation
Full documentation is available at brkrs.readthedocs.io:
- Quickstart Guide — Get running in 10 minutes
- Developer Guide — Set up a development environment
- API Reference — Rust API documentation
Why You’ll Enjoy It
- Play a real game while learning coding practices
- Watch specs transform into working features
- Experiment safely with Rust, Bevy, and AI-assisted workflows
- Learn by doing in a hands-on, playful way
Top comments (4)
I experimented with Bevy and Rust, inspired by your brkrs, and put together a simple Breakout with Rapier physics and RON levels, but after a marathon of coding, my brain was craving an epic world to reboot. I chose Genshin Impact, but instead of tedious farming, I bought an account with top characters and Primogems through Genshin Impact Accounts . Now I'm drawing ideas from the game for my projects, and everything is moving along more smoothly. Your spec-first approach is fantastic, I'll add it to my workflow!
It is not a silver bullet though. In the beginning everything runs smooth and productive, and then you can hit a brick wall, where the LLM goes around in circles, fixes one bug and introduces another one in the process, fixes that one introduces the first one again, and similar problems.
Once the project is over a certain threshold of complexity, you have to take a step back, look at the architecture and unravel the spaghetti manually.
Really impressive work—your approach to learning and building through hands-on specs is super inspiring. I’d love to explore this more and see how we might collaborate or learn from each other.☺
Thanks :-)
You are very welcome as a contributor, have a look at the backlog if anything tickles your fancy ;-)
There are programming as well as non-technical tasks available. Give me a shout if you need some more information.