pixels/examples/invaders/README.md

42 lines
1.2 KiB
Markdown
Raw Permalink Normal View History

2019-10-14 12:35:47 +11:00
# Pixel Invaders 👾
![Pixel Invaders](../../img/invaders.png)
The pixels have invaded!
2019-11-07 17:37:16 +11:00
## Running
```bash
cargo run --release --package invaders
2019-11-07 17:37:16 +11:00
```
## Keyboard Controls
2019-10-14 12:35:47 +11:00
<kbd>🡰</kbd> <kbd>🡲</kbd>: Move tank
2019-10-14 12:35:47 +11:00
<kbd>Space</kbd>: Fire cannon
<kbd>Pause</kbd> <kbd>P</kbd>: Pause
<kbd>R</kbd>: Reset Game
<kbd>escape</kbd>: Quit
## GamePad Controls
`D-Pad 🡰` `D-Pad 🡲`: Move tank
`XBox 🅐` `PS 🅧` `Switch 🅑`: Fire cannon
`XBox/PS ≡` `Switch ⊕︀`: Pause
2019-10-14 12:35:47 +11:00
## Goal
Shoot all of the invaders before they reach Earth and begin a hostile takeover. Be careful, because the entire fleet is coordinated and acts as a hive mind. Their aggression increases as their numbers dwindle.
## Architecture
Pixel Invaders uses the `simple-invaders` crate for all game logic and drawing. Be sure to check out that crate if you are interested in any of the inner workings of the game.
This example is simply glue code that uses `winit` for windowing/event handling and keyboard input. The `winit` event loop is used to drive the `simple-invaders` state and rasterize each frame. Finally, `pixels` takes the rasterized frame buffer and sends it to the screen, optionally through a series of render passes.