The project started as a fork of Voxel with some modifications so can be used as a Game Engine but was abandoned after some time due to Voxel became the main project, now reborn as a Physically Based Rendering Engine. The difference is that now only works as a rendering engine leaving all the game logic to the programmer (Physics, Stages, Map, etc). This allows a modular, lighter and portable engine that isn’t limited to specific needs of a game. The base code for this engine will come from Voxel’s rendering system, this renderer supports a lot of features but is tied to the game logic making it hard to use in other projects.
More info will be released soon.
The rewrite is progressing very well, major parts of the World system are nearly completed and the rendering is starting to be re factored, the Windowing code has been re factored and now supports new features as multiple windows and better input. The rendering system will be detached in modules that implements a generic API, this allows to the engine to switch between OpenGL or Vulkan. This system allows to use multiple rendering APIs without changing code that no relies on the generic API.
Screen Space Lights
The engine now supports Screen Space Lights, this technique of rendering lights uses the data stored in the GBuffers and renders the lights in Screen Space, the advantages of using this are:
- Better performance: instead of rendering in the pixels of the model they are renderer in a flat quad using the data available.
- Nearly infinite lights: right now supports 256 independent point lights to be rendered in a single call.
Two PostFX have been ported to the actual system.
Depth of Field
The Voxel code is being rewritten by HACKhalo2, from 70% to 80% is new code. Most features are retained but some had to be modified to accommodate the new code. Here is a list of what features were changed or replaced
- ECS Components has been reworked.
- State Machine.
The reason for this is to convert Universal in the core and on top write the client and server, this serves to keep most of the shared code in one place, speeding up the development process. The actual state of the code don’t allow to play, because of that there will be no updates until reaches a playable state.
If you what to check the process or contribute please go to Github.