Ossium is a bare-bones 2D game engine being built in C++ with SDL 2 and Box2D. I'm developing this project because I want to learn how to create a highly crossplatform, lightweight 2D game engine with minimal dependencies and use it for other personal projects.
- Low number of dependencies (SDL 2 with a few small extension libraries and Box2D for physics)
- Extendable input system with action bindings, states and input claiming
- Flexible Entity Component System
- Game event system with delay-based queuing
- Extendable serialisation support via completely code-based schemas
- Animation system based around timelines and animator clips
- CSV and JSON parsing
- Basic texture packer with mipmap generator
- Audio playback and mixing
- Vector maths functions and various intersection tests for primitive shapes
- Simple unit testing framework
- Rendering with layer support
- A compiler with the C++17 standard (e.g. GCC 8.1.0)
- SDL 2.0.8 (or greater)
How to Use
At some stage I intend to write up documentation for Ossium (once I've cleaned up the code a bit). Until then, you can check up on my website from time to time for blog posts and articles about Ossium (and other projects I'm working on). Or you can dive into the code to better understand how different parts of the engine work for yourself. Note that the engine is constantly being updated and improved currently, so if you intend to use it for your own games and projects beware of bugs and changes over time.
If building from scratch, you will also need to build Box2D as a static lib and have that outputin
libBox2D.a. The Code::Blocks project is setup to link against it should you wish to build Ossium yourself.
I'm developing this project using Code::Blocks 17.12 on Windows 10 64-bit currently (and sometimes on (arm) Linux 64-bit)
with the GNU GCC/G++ compiler. The engine is easily portable to Linux or Mac (you may need to change SDL 2 includes by find and replace of initial
<SDL2/SDL for Linux builds) and I intend it to be as crossplatform as SDL 2 at all times, so it's possible to make mobile builds and so on with some appropriate tweaks to the code.
Before building, please make sure you are compiling with C++17 enabled (use compile option
-std=c++17 and make sure you're using GCC 8 or later) as the project makes use of some of those features.
Check out Lazy Foo's SDL 2 tutorials at www.lazyfoo.net if you're unfamiliar with SDL; if you don't know how to setup SDL 2 to build Ossium, check out the first tutorial.
P.S. if you make anything cool with Ossium, I'd love to hear about it!