GithubHelp home page GithubHelp logo

cubos's Introduction

CUBOS. Engine

cubos. Engine logo

Voxel based engine

CUBOS. is a simple, but powerful engine for PC, where everything is made out of voxels.

IMPORTANT NOTE: CUBOS. is a work in progress still in its very early stages. This description matches our hopes for the engine, not its current state.

CUBOS. is a 3D game engine that is perfect for beginners, but also a powerful tool in the hands of experienced developers. Its vast render distances and the destructibility it allows set 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.
  • tools: contains programs that help you with the game development and which may depend on the core. One example is the future editor. Right now the only finished tool is the embed tool.

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

cubos's People

Contributors

riscadoa avatar joaopat98 avatar ratuspro avatar edswordsmith avatar darkerqueensara avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.