Git Product home page Git Product logo

game's Introduction

The best game engine ever

Windows status Linux Status Language License

This was meant to become the most awesome C++ game engine (in terms of the object model and iteration speed).

Here are the key R&D innovations of this engine:

  • automatic code generation of serialization & GUI binding routines for classes thanks to the static reflection - based on the technique from this project (but moved from a hacky Python script to using LibClang to parse the C++) - DRY!!!
  • a very flexible object model where polymorphic objects can be composed at runtime (with the help of dynamix which helps separate the interface from the implementation) and each component can be built into a separate shared object
  • thanks to the 2 things above you could modify almost any part of the code and recompile it without having to stop the running engine - it would magically pick up the changes - this is achieved by: 1) serializing the components of all objects which will be reloaded, 2) removing those components from the objects, 3) reloading the shared objects which define the components, 4) recreating the components in the objects, and 5) deserializing the state into them - with the ability to add or remove fields from classes/structs (changing the memory layout)! Even entire subsystems are reloadable (like the Editor) and can be developed while the engine is running!
  • integrated RCRL (a REPL for C++) and the entire engine API can be used - this was demoed at CppCon 2018

youtube cppcon video showcase

Unfortunately it was really hard to convince any studio to pour resources into the development of a new engine - this was deemed too impractical in 2018... So I'm sorry to say the project has been abandoned.

Building

You'll need:

  • Python 2.7/3.x
    • you'll also need the colorama package - pip install colorama
  • CMake 3.0 or newer
  • Compilers (one of them)
    • VS 2017
    • g++ 7
    • clang 5 (call export CXX=clang++ before calling ha -g gcc)
  • you will also need LibClang - for windows install the 64 bit version in the default path from here: https://llvm.org/builds/
  • Required packages for ubuntu: xorg-dev, libx11-dev, libgl1-mesa-dev (and probably others...)

Use the ha python script in the root of the repository to build the project (it has help). Emscripten requires Python 2.7 and has been setup to work only on windows.

ha -s        # setup repository
ha -g msvc   # generate msvc solution
ha -b gcc    # build with gcc or clang (implicitly calls "ha -g gcc" to generate makefiles)

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.