Skip to content

Game Engine focused on Voxels and Data-Oriented Programming

License

Notifications You must be signed in to change notification settings

DannyIsYog/cubos

 
 

Repository files navigation

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. Engine

cubos. Engine logo

Voxel based engine

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.

Structure

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 on core. One example use case of cubinhos is convert from external voxel formats to the internal format used by CUBOS..

Further reading

You can find more information about how the engine is structured in the documentation.

Contributing

Check out the contribution guidelines for more information.

Getting the engine

Executables

There are no releases of CUBOS. so far. We will update this section once we release official binaries.

Building from the source code

Dependencies

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.

Compiling

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?

Samples

Both the core and the engine contain samples that you can run to get an idea of how the engine works.

Testing

CUBOS. uses GoogleTest for unit testing the engine. To test the engine's core you can use the following command: cd build/core && ctest.

Who is making this engine

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:

Twitter

Facebook

Instagram

Youtube

itch.io

About

Game Engine focused on Voxels and Data-Oriented Programming

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 98.1%
  • CMake 1.8%
  • Nix 0.1%