brkrs 0.0.1

Breakout/Arkanoid-style game built in Rust using the Bevy engine, with physics powered by bevy_rapier3d
Documentation
# 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 {doc}`troubleshooting` guide for common build issues

### How do I run the game in release mode?

```bash
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 {doc}`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?

```bash
cargo test
```

For verbose output with test names:

```bash
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 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?

```bash
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.