tge 0.0.2

A lightweight cross-platform 2D game framework written in pure Rust and based on OpenGL 3.3+.
Documentation

TakWolf's Game Engine (tge)

Crates.io Docs.rs License

A lightweight cross-platform 2D game framework written in pure Rust and based on OpenGL 3.3+.

Inspired by LÖVE.

Tge is currently in a very early stage of development. The API may be changed. Until the version to 0.1.0.

Features

  • 2D only.
  • Hardware-accelerated rendering base on OpenGL.
  • Dynamic font rendering with text layout.
  • Interface for handling keyboard, mouse, touch, touchpad and gamepad.
  • Audio play. (TODO)

Non goals

  • 3D.
  • Visual editor.

The following does not contain, but can easily work with other crates:

Usage

Add the dependency line to your Cargo.toml file:

[dependencies]
tge = "0.0.2"

To release performance, also add the following configs:

[profile.dev]
opt-level = 3

Then create a basic template. Here is the minimal example that will create a window:

use tge::error::GameResult;
use tge::engine::{Engine, EngineBuilder};
use tge::window::WindowConfig;
use tge::graphics::Color;
use tge::game::Game;

struct App {}

impl App {

    fn new(_: &mut Engine) -> GameResult<Self> {
        // load assets
        Ok(Self {})
    }

}

impl Game for App {

    fn update(&mut self, _: &mut Engine) -> GameResult {
        // handle logic
        Ok(())
    }

    fn render(&mut self, engine: &mut Engine) -> GameResult {
        engine.graphics().clear(Color::BLUE);
        // draw sprites
        Ok(())
    }

}

fn main() -> GameResult {
    let mut engine = EngineBuilder::new()
        .window_config(WindowConfig::new()
            .title("My Game")
            .inner_size((800, 600)))
        .build()?;
    let mut app = App::new(&mut engine)?;
    engine.run(&mut app)
}

That is!

You can also see the examples/ directory to learn some other examples.

More complete demos can be found in tge-demos.

Performance

See the example bunny_mark and sprites.

TODO

The following is working in progress:

  • blend
  • program uniform
  • screenshot
  • graphics transform matrix
  • virtual assets path
  • assets load async
  • audio
  • document

License

MIT OR Apache-2.0