Powered by Rust. Developed by Hampus Avekvist.
Table of Contents
- More of me
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.
The networking library - Not implemented yet
This will implement TCP and HTTP for communications with a wide variety of servers.
Implementing the core parts of the engine - Partially implemented
This will implement event-handlers for different operating systems used by the other modules.
The physics engine - Not implemented yet
Will support both 2D and 3D physics.
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.
- A simple OpenGL test window
The API and algorithms library - Partially implemented
Will implement logging, Steam integration, Perlin Noise and more.
- A logging system
The File IO library - Not implemented yet
Will make simpler abstractions for file handling.
The input library - Not implemented yet
Will support gamepads, joysticks as well as mouse and keyboard controls.
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.
- 2D Vector
- 3D Vector
- 2x2 Matrix
- 3x3 Matrix
- 4x4 Matrix
- Fraction datatype
- Complex datatype
- Quaternion datatype
#[derive(Matrix)], albeit not fully functional yet.
- Will soon implement
The audio engine - Not implemented yet
Will support both recording and playback of audio.
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
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)!