Hello, this is an older version of the CUBOS. Game Engine, until I worked on it. You can see my contribution to the Input System (core/include/cubos/io ; core/samples/input_manager.cpp ; core/src/cubos/io) and to the ECS System (core/include/cubos/core/ecs ; core/samples/ecs.cpp ; core/src/cubos/core/ecs ; core/engine/samples).
You can check the updated version of the engine here.
CUBOS. aims to be a simple, but powerful engine for PC, where everything is made out of voxels.
It aims to support vast render distances and destructibility, which sets it apart from other engines. Written in C++, built with OpenGL, it's a high-performance engine.
The source code is divided into three main parts:
core
: library which is shared between the tools and the games. This includes some basic functionality like serialization, logging, render devices, input handling and others.engine
: library with code exclusive to the game execution. This includes the main loop, the asset manager and systems like the renderer and physics.cubinhos
: a tool which helps you with the game development and which may depend oncore
. One example use case ofcubinhos
is convert from external voxel formats to the internal format used by CUBOS..
You can find more information about how the engine is structured in the documentation.
Check out the contribution guidelines for more information.
There are no releases of CUBOS. so far. We will update this section once we release official binaries.
The following dependencies are used to compile CUBOS.:
Name | Importance | Submodule Path | Installed Separately |
---|---|---|---|
CMake | Essential | - | Yes |
json | Essential | - | No |
glad | Essential | - | No |
glfw | Essential | core/lib/glfw |
Optionally |
glm | Essential | core/lib/glm |
Optionally |
fmt | Essential | core/lib/fmt |
Optionally |
spdlog | Essential | core/lib/spdlog |
Optionally |
yaml-cpp | Essential | core/lib/yaml-cpp |
Optionally |
googletest | Required for tests | core/lib/googletest |
Optionally |
Dependencies marked as Essential are required to compile the engine. CUBOS. uses CMake as its build system, so you must install it to compile the engine.
Most dependencies come as submodules, so, you may choose whether to install
them separately or not. If you choose to install some or all of them
separately, you can do so easily by using the package manager of your choice.
If you use Windows, it should be easier to simply install all of them with the
engine by cloning the whole repository with the --recursive
flag.
If you chose to install some dependencies separately, you must pass the
corresponding -D
flag to CMake. For example, if you installed GLFW, GLM and
CMake separetely you would pass the following flags to CMake:
cmake -H. -Bbuild -DGLFW_USE_SUBMODULE=OFF -DGLM_USE_SUBMODULE=OFF -DYAMLCPP_USE_SUBMODULE=OFF
The following is a list of all the options available to configure the engine:
Name | Description |
---|---|
WITH_GLFW |
Use GLFW? (Required for now) |
WITH_OPENGL |
Use OpenGL? (Required for now) |
GLFW_USE_SUBMODULE |
Compile glfw from source? |
GLM_USE_SUBMODULE |
Compile glm from source? |
YAMLCPP_USE_SUBMODULE |
Compile yaml-cpp from source? |
GOOGLETEST_USE_SUBMODULE |
Compile GoogleTest from source? |
SPDLOG_USE_SUBMODULE |
Compile spdlog from source? |
FMT_USE_SUBMODULE |
Compile fmt from source? |
BUILD_CORE_SAMPLES |
Build CUBOS. core samples? |
BUILD_CORE_TESTS |
Build CUBOS. core tests? |
BUILD_ENGINE_SAMPLES |
Build CUBOS. engine samples? |
Both the core
and the engine
contain samples that you can run to get an
idea of how the engine works.
CUBOS. uses GoogleTest for unit testing the engine.
To test the engine's core you can use the following
command: cd build/core && ctest
.
We are Gamedev Técnico, a student group from Instituto Superior Técnico who makes games. Our goal is to build a game engine from the ground up.
Find us at: