[][src]Crate tetra

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.3"

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 find me lurking in the #games-and-graphics channel on the Rust Community Discord.

Re-exports

pub use vek as math;
pub use crate::error::Result;
pub use crate::error::TetraError;

Modules

audio

Functions and types relating to audio playback.

error

Functions and types relating to error handling.

graphics

Functions and types relating to rendering.

input

Functions and types relating to handling the player's input.

time

Functions and types relating to measuring and manipulating time.

window

Functions and types relating to the game window.

Structs

Context

A struct containing all of the 'global' state within the framework.

ContextBuilder

Settings that can be configured when starting up a game.

Enums

Event

Events that can occur while the game is running.

Traits

State

A trait representing a type that contains game state and provides logic for updating it and drawing it to the screen. This is where you'll write your game logic!