volcoma / EtherealEngine

C++ Game Engine and Editor
BSD 2-Clause "Simplified" License
970 stars 159 forks source link
editor engine entity-component-system game pbr wysiwyg

Ethereal Engine - Cross-platform C++ Game Engine

THIS REPO IS NO LONGER MAINTAINED. IT can be used for educational purposes... Development has been moved to https://github.com/volcoma/ace

Codacy Badge Join the chat at https://gitter.im/EtherealEngine/Lobby Build Status Build status license language c++ msvc2017+ mingw-5.3+ gcc-5.0+ clang-3.8+ Get more details at codescene.io.

INFO

Using c++14

WYSIWYG Editor

STATUS

WIP - not production ready in any way

Building

Don't forget to update submodules

git clone https://github.com/volcoma/EtherealEngine.git
cd EtherealEngine
git submodule init
git submodule update

mkdir build
cd build
cmake ..

PLATFORMS

It is written in a cross-platform manner using c++.

msvc2017+ windows linux
msvc2017+ yes
mingw-5.3+ yes
gcc-5.0+ yes
clang-3.8+ yes

ASSETS

Some high quality assets: https://github.com/volcoma/Library

Supported texture formats: png, tga, dds, ktx, pvr

Supported mesh formats: obj, fbx, dae, 3ds

Supported audio formats: ogg, wav

SUGGESTIONS AND ISSUES

Any suggestions and help will be appreciated.

BUILD

The engine uses the CMake build system.

CODEBASE

c++ Using the latest and greatest features of the language.

CODE STYLE

#include "some_header.h"
#include "some_other_header_impl.hpp"

namespace nsp
{
class some_class
{
public:

//-----------------------------------------------------------------------------
  //  Name : some_method ()
  /// <summary>
  /// This is a method comment description.
  /// </summary>
  //-----------------------------------------------------------------------------
  void some_method();

  //-----------------------------------------------------------------------------
  //  Name : some_templated_method ()
  /// <summary>
  /// This is a method comment description.
  /// </summary>
  //-----------------------------------------------------------------------------
  template<typename T>
  void some_templated_method();
public:
  /// this is a member comment
  int some_public_member = 0;

private:
  /// this is a member comment
  int some_private_member_ = 0;
}

template<typename T>
inline void some_class::some_templated_method()
{
// If the class is fully templated it is acceptable to put this inside the class
}

PREVIEW

screenshot1

screenshot2

screenshot3

LIBRARIES

bgfx - https://github.com/bkaradzic/bgfx

cereal - https://github.com/USCiLab/cereal

rttr - https://github.com/rttrorg/rttr

spdlog - https://github.com/gabime/spdlog

imgui - https://github.com/ocornut/imgui

assimp - https://github.com/assimp/assimp

glm - https://github.com/g-truc/glm

openal-soft = https://github.com/kcat/openal-soft