Coder Social home page Coder Social logo

hhy5277 / halley Goto Github PK

View Code? Open in Web Editor NEW

This project forked from amzeratul/halley

0.0 1.0 0.0 13.55 MB

A lightweight game engine written in modern C++

License: Apache License 2.0

CMake 3.45% C++ 91.17% Lua 0.09% GLSL 0.30% HLSL 0.44% C 4.54%

halley's Introduction

Halley Logo

License Language Standard

Halley Game Engine

A lightweight game engine written in C++14. It has been used to ship Wargroove, a turn-based strategy game, on Windows, Mac (experimental), Nintendo Switch and Xbox One (soon PS4!).

The Halley Game Engine is licensed under the Apache 2.0 license.

Make sure to check out the Halley-template repository for a blank sample.

Design guidelines & objectives

  • Modern graphics pipelines, with first-class shader support
  • Written in modern C++
  • "True" entity system based, with components that store data and systems that operate on families of components
  • Tuned for high performance
  • Code-first: no reliance on editor to generate anything
  • Easy to use: games should be easy to implement
  • Easy to maintain: games should be easy to keep working on long-term, after it has grown to a large project size
  • Cross-platform: support as many platforms as possible
  • No legacy: don't bother supporting legacy systems, such as Windows XP or older Android/iOS devices
  • Rich tools: where possible, provide tools to assist in development and debugging
  • Fast iteration time: hot-reloading wherever possible
  • Support scripting in other languages, such as Lua

Modules

Halley is divided in a several sub-projects:

  • engine
    • core: Core features of the engine, including looper, API management, resouces, 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
    • 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!)

Platforms

The following platforms are supported:

  • Windows: Tested on Windows 10 Professional 64-bit (Should work on as low as XP 32-bit)
  • Mac OS X: Tested on Mac OS X 10.9.6
  • Linux: Tested on Ubuntu 16.04

Installation

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.

halley's People

Contributors

amzeratul avatar aszlig avatar blitworks-jmoya avatar oserranoblit avatar tcoxon avatar

Watchers

 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.