- Modular architecture
- with modern C++17/20 codebase
- Full-featured GUI Module powered by Dear ImGUI
- Easy-to-use Input Module
- Neat Entity-Component System
- High-performance Event System
- Scene, SceneGraph and Layers support
- Quick Model Importer
- with all major 3D file formats support
- On-board Math library powered by Magnum
- Full-featured Renderer powered by Magnum
- with PBR Rendering coming in 0.8.0
- Networking Module coming in 0.5.0
- Physics Module coming in 0.6.0
- Audio Module coming in 0.7.0
- Editor Module coming in 0.9.0
Check out Core Engine Roadmap
For full guide, read Building the engine
- Clone the main repository:
git clone --recursive https://github.com/kualta/Core.git
1.1 On Unix-like systems, make sure you have sdl2 library installed:
sudo apt install libsdl2-dev # on Ubuntu / Debian
sudo pacman -S sdl2 # on ArchLinux
brew install sdl2 # on macOS (via Homebrew)
- Add Core Engine to your
CMakeLists.txt
as subdirectory and link againstcore
target:
add_subdirectory(Core)
target_link_libraries(MyApplication PUBLIC core)
- Generate & Build your application like you usually do
cmake -G "CodeBlocks - NMake Makefiles" ./
cmake --build ./build --target MyApplication
Note: Make sure you're using 64bit version of your compiler
For full guide, read Quick Start guide for newcomers
- In your application,
#include
all module files you wish to use, together withCoreConfig.h
header:
#include <core/Modules.h>
#include <core/CoreConfig.h>
- Use
CoreConfig
to configure yourCore
and then build it:
using namespace core;
int main() {
CoreConfig config;
config
.Add(NewModule<InputModule>)
.Add(NewModule<EngineModule, InputModule>)
.Add(NewModule<SceneModule>)
.Add(NewModule<ApplicationModule>);
shared<Core> core = config.Build();
- Create a window and enter the main engine loop like so:
// window title x, y, w, h
Core::GetModule<ApplicationModule>()->CreateApplication("Core Engine", { 0, 0, 1280, 720 });
Core::GetModule<EngineModule>()->Main(); // Enter engine main loop
return 0;
}
- You're amazing!
Congratulations, you've successfully built your first Core
and put it to work!
Find out how to make more exciting stuff with Core Engine by reading architecture guides: Engine Architecture introduction
Check out Core Engine Wiki for more information and guides
Get involved into Core Engine development, read Contributing guidelines
Core Engine is destributed under MIT License, check LICENSE for details