19 releases (6 breaking)

✓ Uses Rust 2018 edition

0.10.1 Jul 1, 2020
0.9.1 Jun 17, 2020
0.7.1 Mar 5, 2020
0.5.0 Dec 31, 2019

#33 in Audio

Download history 29/week @ 2020-03-14 43/week @ 2020-03-21 30/week @ 2020-03-28 19/week @ 2020-04-04 100/week @ 2020-04-11 32/week @ 2020-04-18 22/week @ 2020-04-25 7/week @ 2020-05-02 33/week @ 2020-05-09 2/week @ 2020-05-16 20/week @ 2020-05-23 33/week @ 2020-05-30 47/week @ 2020-06-06 19/week @ 2020-06-13 12/week @ 2020-06-20 56/week @ 2020-06-27

121 downloads per month
Used in 3 crates

Custom license

3.5K SLoC


Oxygengine GitHub CI crates-io version GitHub tag

The hottest HTML5 + WASM game engine for games written in Rust with web-sys.

Table of contents

  1. Understanding ECS
  2. Installation
  3. Teaser
  4. Project Setup
  5. Building for development and production
  6. Roadmap

Understanding ECS

Oxygengine is highly based on specs crate used for its ECS framework. You can get understanding of it by reading specs book and tutorials here: https://specs.amethyst.rs/docs/tutorials/


  1. Make sure that you have latest node.js with npm tools installed (https://nodejs.org/)
  2. Make sure that you have latest wasm-pack toolset installed (https://rustwasm.github.io/wasm-pack/installer/)
  3. Make sure that you have latest oxygengine-ignite binary installed (cargo install oxygengine-ignite)


Visual Novel

Project Setup

Create Oxygen Engine project with oxygengine-ignite:

cd /path/to/parent/
oxygengine-ignite new <project-name>

Which will create default web game project using web-composite-game preset. Then you have to go to your project directory and run npm install to install all nodejs dependencies. You can create projects with different presets:

  • desktop-headless-game - typical server-like project without graphics.
  • hybrid-script-game - it's a web-composite-game with JavaScript scripting module to make prototyping with Oxygengine faster and easier. Please note that JS scripting compared to pure Rust version is slower so it's not a great idea to use it in a production-ready game with lots of entities and logic, it should only help to prototype a game systems that will be later rewritten in Rust for best optimization.


cd /path/to/parent/
oxygengine-ignite new <project-name> -p desktop-headless-game

You can also tell it where to create project:

oxygengine-ignite new <project-name> -d /path/to/parent/

Updating to new engine version:

  • reinstall oxygengine-ignite:
    cargo install oxygengine-ignite --forced
    OXY_UPDATE_PRESETS=1 oxygengine-ignite --help
  • update oxygengine version either in Cargo.toml or by calling: cargo update

Building for development and production

  • Launch live development with hot reloading (app will be automatically recompiled in background):
npm start
  • Build production distribution (will be available in /dist folder): with debug symbols:
    npm run build
    optimized release mode:
    OXY_RELEASE=1 npm run build
  • Build crate without of running dev env:
cargo build


Current milestone progress: https://github.com/PsichiX/Oxygengine/projects/1


~110K SLoC