Iridium is a game engine written entirely in C, designed for the purpose of efficiency and compression. The engine supports only 3D projects, and does not have a GUI. Iridium is cross-platform--currently only between Windows and Linux, although that list may expand. It relies minimally on outside libraries, instead opting to craft solutions moulded exactly for our use-cases.
Iridium provides APIs for loading files, creating windows, handling keys, and many more tasks. Each of these APIs is fully documented by the time they hit the stable branch, so you shouldn't run into any problems there. However, if you do, please reach out to a maintainer and we'll get you straightened out. All APIs are created in pure C, but are C++ compatible.
Many of our processes are designed specifically for the systems we target, so it's likely you'll have little luck getting Iridium to work properly on unsupported operating systems. Currently, the engine aims to be fully compatible with x32, x64, and arm64, but a list of the currently supported architectures is below, alongside the OS support list. "X" represents an unsupported but planned system, while "O" represents a fully supported system.
- Windows
- Windows 8 [X]
- Windows 8.1 [X]
- Windows 10 [X]
- Linux
- X11 [X]
- Wayland [O]
- x86_64 [O]
- x86_32 / x86_86 [X]
- ARM64 [X]
Compiling Iridium is designed to be as simple as possible. However, the project uses CMake as its build system, which means you must have a CMake binary installed in order to properly build. Beyond that, the project needs very little; simply input the configurations and flags you want, and then sit back and watch. The whole process should look something like this;
cmake $IRIDIUM_ROOT -B $BUILD_FOLDER # plus any flags like -DCMAKE_BUILD_TYPE
cd $BUILD_FOLDER
make # or the build tool you've chosen instead
cd Iridium && ls
# Should produce an output similar to:
# .. LICENSE.txt libIridium.so Iridium.h [API header files...]
Using Iridium is meant to be as simple as possible--in fact, if anything is unclear or poorly laid out, open an Issue--so usgae is truly not that difficult. Every Iridium function or type is prefixed with "ir_" and then their name. Iridium, while being written in C and following typical C design patterns, is compatible with C++ projects. A very brief example of how one may use the Iridium engine is as follows;
#include <Iridium.h>
#include <Reporting.h>
int main(int argc, char** argv) {
ir_error_code init = Ir_SetupEngine(argc, argv);
if(init != no_error) {
Ir_ReportError(init, IR_FC);
Ir_TerminateEngine();
return -1;
}
// Display function initialization code goes here.
// Rendering setup code goes here.
// Object set--whatever. You get it.
Ir_RunDisplayLoop();
Ir_TerminateEngine();
}