Tetra

Build Status Crates.io Minimum Rust Version Documentation License Gitter chat

Tetra is a simple 2D game framework written in Rust. It uses SDL2 for event handling and OpenGL 3.2+ for rendering.

Note that Tetra is still extremely early in development! It may/will have bugs and missing features (the big one currently being audio playback). That said, you're welcome to give it a go and let me know what you think :)

Features

Installation

To add Tetra to your project, add the following line to your Cargo.toml file:

tetra = "0.2"

Tetra currently requires Rust 1.31 or higher.

You will also need to install the SDL2 native libraries, as described here. The 'bundled' and 'static linking' features described can be activated using the sdl2_bundled and sdl2_static_link Cargo features in Tetra.

Examples

To get a simple window displayed on screen, the following code can be used:

```rust use tetra::graphics::{self, Color}; use tetra::{Context, ContextBuilder, State};

struct GameState;

impl State for GameState { fn draw(&mut self, ctx: &mut Context, _dt: f64) -> tetra::Result { // Cornflour blue, as is tradition graphics::clear(ctx, Color::rgb(0.392, 0.584, 0.929)); Ok(()) } }

fn main() -> tetra::Result { ContextBuilder::new("Hello, world!", 1280, 720) .build()? .run(&mut GameState) } ```

You can see this example in action by running cargo run --example hello_world.

The full list of examples available are:

Support/Feedback

As mentioned above, Tetra is fairly early in development, so there's likely to be bugs/flaky docs/general weirdness. Please feel free to open an issue/PR if you find something, or leave a question in the Gitter chat.

You can also contact me via Twitter, or find me lurking in the #gamedev channel on the Rust Community Discord.