The Oxygen Engine is a rendering and physics framework powered by Rust. Developed by Hampus Avekvist.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
bond
core
electron
emission
engine
examples
orbit
photon
planning/filetype_specifications
quantum
quark
sandbox
suite
wave
.gitignore
.travis.yml
Cargo.toml
LICENSE
README.md

README.md

Oxygen Engine

Powered by Rust. Developed by Hampus Avekvist.

Build Status Coverage Status

Table of Contents


Modules

Engine

The main component of the framework - Partially implemented

This will hold all of the required components to make a simple game or simulation. For more in-depth use, refer to using all the different modules thoroughly.

Bond

The networking library - Not implemented yet

This will implement TCP and HTTP for communications with a wide variety of servers.

Core

Implementing the core parts of the engine - Partially implemented

This will implement event-handlers for different operating systems used by the other modules.

Electron

The physics engine - Not implemented yet

Will support both 2D and 3D physics.

Emission

The rendering engine - Partially implemented

A rendering engine that will support DirectX, Metal, OpenGL and Vulkan.

Will implement a new shading language that compiles to the respective shading languages.

Currently implemented

  • A simple OpenGL test window

Orbit

The API and algorithms library - Partially implemented

Will implement logging, Steam integration, Perlin Noise and more.

Currently implemented

  • A logging system

Photon

The File IO library - Not implemented yet

Will make simpler abstractions for file handling.

Quantum

The input library - Not implemented yet

Will support gamepads, joysticks as well as mouse and keyboard controls.

Quark

The maths library - Partially implemented

Will implement a wide variety of matrices as well as support easy creation of new ones, alongside different types of vectors. Holds a new datatype called Fraction used for most calculations to increase precision.

Currently implemented

  • 2D Vector
  • 3D Vector
  • 2x2 Matrix
  • 3x3 Matrix
  • 4x4 Matrix
  • Fraction datatype
  • Complex datatype
  • Quaternion datatype

Quark Derive

  • Implements #[derive(Matrix)], albeit not fully functional yet.
  • Will soon implement #[derive(Vector)]

Wave

The audio engine - Not implemented yet

Will support both recording and playback of audio.

Suite

A suite of tools for making assets compatible with the Oxygen Engine - Not implemented yet

Tools available in the suite will be:

  • A script editor
  • An image editor
  • Level editor (both 2D and 3D)
  • Sound editor
  • Model editor

Disclaimer

The framework is expanding as I acquire new knowledge. Since I'm a student, I can't work on it all the time, but when spare time is available, I'll make sure to develop something new for it (or just fix bugs).

The greatest support you can give (except for just implementing stuff yourself and making a pull request) is to issue bugs and features in the Issue tracker, since I will read those and check what I have to make once I get time. If you want to support my work in another way, check out my Patreon, although it can't give me much time right now, it can help me gauge the interest of this project and more, as well as give you more insight in my work process, as I've stated to provide such things to a patron at a certain tier.

How to contribute

Have Rust setup and clone the repository. Start coding and have fun! I would recommend that you check out the list of issues to see what you could fix, and if you don't find anything interesting there, just go and check out the projects instead.

If you contribute, it's highly recommended that you apply the practices from test-driven development, by writing tests first and then production code, but it isn't strongly enforced.

Otherwise, just issue your own bugs and features with the issue tracker. I'll be sure to check them out and tag them accordingly (if they aren't already)!


More of me

Email

Instagram

Patreon

Twitch

Twitter

Website

YouTube