Frequently Asked Questions

Common questions about playing and developing brkrs.

Gameplay

Why does my paddle not respond to mouse input?

The game might be paused. Press ESC to toggle pause, or click to resume. If running in WASM (browser), ensure the game canvas has focus by clicking on it.

How do I rotate the paddle?

Use your mouse scroll wheel during gameplay to rotate the paddle. This allows you to angle the ball in different directions.

Why is the ball moving slowly / strangely?

Each level can define custom gravity settings. Some levels use gravity to create unique ball physics. Check the level file’s gravity field if editing levels.

Can I use a gamepad or touch controls?

Not currently. brkrs is designed for keyboard and mouse only. See the {doc} quickstart for the full control scheme.

Building & Running

The game won’t compile. What should I check?

  1. Ensure you have Rust 1.81+ installed: rustc --version

  2. Run cargo clean and try again

  3. Check the Troubleshooting guide for common build issues

How do I run the game in release mode?

cargo run --release

Release mode provides better performance but slower compile times.

How do I build for WebAssembly?

See the WASM section in {doc} developer-guide. You’ll need the wasm32-unknown-unknown target and a local server to test.

Level Design

How do I create a new level?

Levels are RON files in assets/levels/. Copy an existing level and modify:

  1. Update the number field to a unique level number

  2. Edit the 20×20 matrix grid:

    • 0 = empty

    • 1 = paddle spawn

    • 2 = ball spawn

    • 3 = brick

See Asset Format for the complete level format specification.

Can I add custom brick types?

The brick system is extensible but currently only standard bricks (3) are implemented. Indestructible bricks and other types are planned features.

What happens if I forget to place a paddle or ball?

The game uses fallback spawn positions. Your level will load, but the paddle and ball will appear at default locations.

Development

How do I run the tests?

cargo test

For verbose output with test names:

cargo test -- --nocapture

What’s the project structure?

See {doc} architecture for the ECS design and module organization. Key modules:

  • src/level_loader.rs — Level parsing and entity spawning

  • src/pause.rs — Pause state machine

  • src/systems/ — Game systems (respawn, textures, etc.)

How do I tune physics properties?

Physics properties are centralized in src/physics_config.rs:

  • BallPhysicsConfig — Ball bounciness, friction, damping

  • PaddlePhysicsConfig — Paddle physics

  • BrickPhysicsConfig — Brick collision properties

Modify these resources to adjust gameplay feel. All configs include validation to prevent invalid physics values.

How do I contribute?

Read the {doc} contributing guide for the PR workflow, code style requirements, and commit message conventions.

Documentation

How do I build the docs locally?

cd docs
pip install -r requirements.txt
make html

Open _build/html/index.html in your browser.

Where is the API documentation?

The Rust API docs are generated with cargo doc. See {doc} api-reference for links to the embedded rustdoc.