#winapi #windowing #platform #xcb #game-engine

bin+lib rovella

A game library that, at present, only consists of a windowing and events wrapper

5 releases

0.1.6 Aug 11, 2022
0.1.5 Jul 29, 2022

#1091 in Game dev

30 downloads per month

GPL-2.0-or-later

40KB
1K SLoC

Rovella

A game engine/library which will be multipurpose but will be primarily aimed at 2D games and visual novels.

Note: This version is unstable

Features

  • Wraps Platform windowing code
  • Wraps Platform events
  • Wrappers are thin with minimal overhead (or at least planned minimal overhead)
  • Supports the raw-window-handle for xcb and win32 (or linux and windows)

Planned

  • New features will have optional usage
  • Multithreading API with SIMD, OMP, GPGPU and standard threading support
  • Some rendering helper methods/functions (similar to glfw)
  • A renderer (this is long term)
  • An input manager

Platforms:

  • Windows (Full Support - Not well tested)
  • Linux (X11 and XCB) (Partial Support - Window Close Event not working - Not well tested)
  • MacOS (Planned)

Example Program

fn main() {
    let mut app: rovella::App = rovella::App::create(
        "hello world",
        15,
        15,
        1920,
        1080
    ).unwrap(); // Only if your lazy :)

    while app.is_running() {
        let event_op = app.poll_events();
        if event_op.is_none() {
            continue;
        }

        let event = event_op.unwrap();

        match event {
            rovella::Event::WinClose => {
                app.quit();
            }
            rovella::Event::KeyDown(key) => {
                if key == rovella::Key::Escape {
                    app.quit();
                }
            }
            _ => {}
        }
    }

    app.shutdown();
}

Dependencies

~0.7–1.4MB
~23K SLoC