25 releases (7 breaking)
0.12.5 | Sep 13, 2020 |
---|---|
0.12.2 | Jul 23, 2020 |
0.7.1 | Mar 5, 2020 |
#602 in WebAssembly
72 downloads per month
390KB
11K
SLoC
Oxygengine
The hottest HTML5 + WASM game engine for games written in Rust with web-sys
.
Table of contents
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/
Installation
Make sure that you have latest oxygengine-ignite
binary installed (cargo install oxygengine-ignite
) - this binary is a set of vital tools that will govern managing most of your project.
Teaser
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.
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. NOTE: Because of engine not using NPM at all since version 0.12.0, this template is forced to use version 0.11.2 of the engine until new way of JavaScript scripting method will be developed.
using:
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 inCargo.toml
or by calling:cargo update
- upgrading from versions before 0.12.0 requires to create new project with latest ignite tool, then copy by hand your source files to the new project sources, as well as put assets from old project
/static/assets
directory into new project/assets
directory, preferably using new way of assets directory structure (so you won't have to modify pipeline.json file a lot).
Speeding up compilation for new projects (best use case for gamejams and quick feature prototypes):
- install SCCACHE, a tool for caching and sharing prebuilt dependencies between multiple game projects (https://github.com/mozilla/sccache):
cargo install sccache
- add these lines to the
Cargo.toml
:[package.metadata] # path to the sccache binary sccache_bin = "sccache.exe" # path to the sccache cache directory sccache_dir = "D:\\sccache"
From now on you will have to wait for full long engine build only once, for any other new game project you create, it will perform first compilation in matter of minute, not 20.
Building for development and production
-
Launch live development with active code recompilation and assets baking in the background on change:
oxygengine-ignite live
additionally to allow it to start http server to serve your build files in the browser, run:
oxygengine-ignite live -- -p 8080
files will be served from: http://localhost:8080.
-
Build binaries in debug or release mode (binaries will be put in
/bin
folder):with debug symbols:
oxygengine-ignite build
optimized release mode:
oxygengine-ignite build -p release
-
Build only the crate:
cargo build
-
Package application build with assets ready for distribution (package files will be put in
/dist
folder):oxygengine-ignite package
this command will run release build, assets pipeline and bundle package.
Roadmap
Current milestone progress: https://github.com/PsichiX/Oxygengine/projects/1
Dependencies
~8–11MB
~213K SLoC