kualta / core

game engine focused on performance and flexibility

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Core Engine

FINALLY, A NEAT GAME ENGINE

MIT License Codacy Badge

Main Features

  • 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

Building

For full guide, read Building the engine

  1. 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)
  1. Add Core Engine to your CMakeLists.txt as subdirectory and link against core target:
add_subdirectory(Core)
target_link_libraries(MyApplication PUBLIC core)
  1. 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

Using the engine

For full guide, read Quick Start guide for newcomers

  1. In your application, #include all module files you wish to use, together with CoreConfig.h header:
#include <core/Modules.h>
#include <core/CoreConfig.h>
  1. Use CoreConfig to configure your Core 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();
  1. 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;
}
  1. 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

Contributing

Get involved into Core Engine development, read Contributing guidelines

License

Core Engine is destributed under MIT License, check LICENSE for details



About

game engine focused on performance and flexibility

License:MIT License


Languages

Language:C++ 73.3%Language:CMake 25.8%Language:C 0.9%