Hex engine

The hex engine is a custom game engine for turn based games on a hex grid. It includes lua for the gameplay scripting and a custom editor. In this project I was one of the engine programmers, responsible for writing part of the engines core. Including the platform and entity component system.

What did I do?

  • Collaboratively designed the engine together with the team
  • Designed, implemented, and maintained most for the core systems. Including the entity component system, transform system, prefab system, platform layer, input, application, and high-level control flow.
  • Rewrote the tile system from the initial prototype to add more functionality and better define its edge cases.
  • Created the token system, an abstraction allowing entities to be interacted with as pieces on a hex grid.
  • Contributed to the editor, most notably adding an inspector allowing objects to be placed anywhere in the game world and their properties to be changed.
  • Rewrote the asset system to add support for automatic reference counting, decouple the logic for loading certain types of assets, and async loading of certain asset types such as meshes.
  • Added serialization to the engine, allowing the engine and game state to be saved and loaded to and from disk.
  • Refactor and maintain the engine throughout its development, adjusting systems where required to keep the engine maintainable. Most notably after improving our concept with the team, splitting out the gameplay code into a separate layer from the engine code.

Project details

Role(s): Engine programmer, build engineer
Year: 2016 - 2017
Team size: 4 - 8
Duration: 30 weeks
Engine: Custom
Languages: C++
Technology: SDL Cereal, stb, Jenkins, glm