57 releases

Uses new Rust 2021

0.7.0-alpha1 Jan 7, 2022
0.6.7 Nov 5, 2021
0.6.6 Oct 10, 2021
0.6.5 May 26, 2021
0.2.2 Dec 24, 2018

#17 in Game dev

Download history 15/week @ 2021-09-26 107/week @ 2021-10-03 185/week @ 2021-10-10 98/week @ 2021-10-17 157/week @ 2021-10-24 134/week @ 2021-10-31 149/week @ 2021-11-07 61/week @ 2021-11-14 111/week @ 2021-11-21 137/week @ 2021-11-28 163/week @ 2021-12-05 151/week @ 2021-12-12 37/week @ 2021-12-19 32/week @ 2021-12-26 174/week @ 2022-01-02 145/week @ 2022-01-09

418 downloads per month
Used in less than 6 crates

MIT license

1.5MB
9K SLoC

Tetra

Build Status Crates.io Documentation License

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

Features

  • XNA/MonoGame-inspired API
  • Efficient 2D rendering, with draw call batching by default
  • Easy input handling, via polling or events, with support for gamepads
  • Deterministic game loop by default, à la Fix Your Timestep
  • Common building blocks built-in, such as:
    • Font rendering
    • Cameras
    • Screen scaling

Installation

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

tetra = "0.7.0-alpha1"

You will also need to install the SDL2 native libraries - full details are provided in the documentation.

Examples

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

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

struct GameState;

impl State for GameState {
    fn draw(&mut self, ctx: &mut Context) -> tetra::Result {
        // Cornflower 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(|_| Ok(GameState))
}

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

The full list of examples is available here.

Support/Feedback

Tetra is fairly early in development, so you might run into bugs/flaky docs/general weirdness. Please feel free to open an issue/PR if you find something! You can also contact me via Twitter or the Rust Game Development Discord.

Dependencies

~23MB
~480K SLoC