XUtils

Halley

A lightweight game engine written in C++14 with a "true" entity-component system. [Apache 2.0]


Modules

Halley is divided in a several sub-projects:

  • engine
    • core: Core features of the engine, including looper, API management, resources, and graphics engine
    • audio: Audio engine
    • entity: Framework for dealing with entities, components, and systems
    • utils: Utilities library
    • net: Networking library
    • ui: UI library
  • plugins
    • asio: Network/Asio implementation
    • dx11: Video/DX11 implementation
    • opengl: Video/OpenGL implementation
    • metal: Video/Metal implementation (experimental)
    • sdl: System/SDL, Input/SDL and AudioOut/SDL implementations
    • winrt: System/WinRT, Input/WinRT, Platform/WinRT and AudioOut/XAudio2 implementations
  • tools
    • editor: Editor UI
    • cmd: Command-line interface to tools
    • runner: Provides an entry point for execution and dynamic reloading. Highly experimental.
    • tools: Editor tools to generate files and assets
  • tests
    • entity: Stress test of entity system
    • network: Stress test of network system
  • samples
    • (The samples project was taken down due to being too outdated, sorry about that!)

Tools required

  • CMake 3.10+
  • C++14 capable compiler:
    • Visual C++ 15.3 (Visual Studio 2017)
    • Clang 3.5
    • GCC 5.0

Library dependencies

  • Engine:
    • Boost 1.66.0 (header only)
    • OpenGL [optional]
    • SDL 2.0.2 (2.0.7 recommended) [optional]
    • Windows 10 SDK [optional]
  • Also required if building Tools:
    • Boost 1.66.0 libraries: filesystem, system
    • Freetype 2.6.3
    • yaml-cpp 0.5.3

Set up

  • Ensure that all dependencies above are set up correctly
  • Build with CMake
    • Typical:
      
      cmake -DCMAKE_INCLUDE_PATH=path/to/headers \
         -DCMAKE_LIBRARY_PATH=path/to/libs \
         -DBOOST_ROOT=path/to/boost ..
      
    • Engine only:
    cmake -DBUILD_HALLEY_TOOLS=0 -DBUILD_HALLEY_TESTS=0 [...]
    
  • Run halley-editor tests/entity (or whichever other project you want to test)
  • Launch that project

Documentation

The full documentation is available on the Wiki.


Articles

  • coming soon...