Engine And Editor Programmer

September 2018 – June 2019


Engine And Editor Programmer

September 2018 – June 2019

core responsibilities

  • Decision making and technical design of features and systems for the editor.
  • Implementation of editor systems and features like entity hierarchy, entity inspector, undo/redo, play-pause-stop-restart, console log, world/level management and more.
  • Advisor and technical design of features and systems for the core engine.
  • Implementation of engine systems and features like input and log system.
  • Setup, maintenance and improvement of the QA pipeline for the engine and editor to maintain stability and make improvements.

Game Information

Bit-Buster is an Action Shooter where you alone or with a friend get thrown into steampunk-inspired japan, that got overrun by yokai – Japanese spirits. Through passing a deadly disk between each other, you can blaze through any enemy or obstacle that shows up in your way.

Project information

Bit-Buster is a game with a world entirely made out of voxels. Bit-Buster has been created with a custom game engine and editor called Voxagine. This was a second year project within the IGAD course. It started with the development of the engine and editor in the first block with four programmers including myself. The second block we worked with nine programmers. In the last block we made a game with the engine and editor with a team of 26 students of which nine programmers, ten designers and seven artists.

4 - 26
24 Weeks

my contribution

Entity hierarchy window

The editor has an entity hierarchy window which visually represents which entities exist within the world. It grants the user an easy to use interface to manipulate those entities within the world from a central point.

The entity hierarchy offers features like creating plain entities, creating prefabs, destroying entities, copying entities, changing parent-child relationships and moving these around when selected.

entity inspector window

Voxagine also offers the flexibility to modify entities on the fly through the Entity Inspector window. This allows each entity instance to be customized independently.

Users are able to add components, remove components, modify components and entity related values. Values of the entities and components can be defined with metadata in C++ and automatically read within the editor. It supports a variety of types and also containers. Changes made are instance based and are included in saving the world.


One other important feature is the undo redo of certain actions made within the editor. The amount of actions kept within the memory is customizable.

The actions supported range from both entity/component creation, destruction, modifications made and parent-child changes.


Within the editor you’re able to play-test levels with the Play-Pause-Stop-Restart feature. When you press play, a copy of the world is created and pushed on the stack. Stopping it is just removing it from the stack and restart is just stop and start after one and other.

The power of this feature is that you can still make changes during Play mode but these are discarded when returning to Edit mode. These changes apply to the Entity Hierarchy, Entity Inspector and Undo-Redo.

Logging system and console log

For the core engine I’ve designed and developed the logging system including the console log within the editor for visualization. The logging system and console log are decoupled in a sense that the console log only reads from the logging system.

It’s a very basic system in which each logging message contains values like description, category, level and time. Within the console log you can filter on these values to easily find the messages you are looking for.

asset Management editor

It’s also possible to create, open and modify worlds within the editor. The editor also has a back-up system which autosaves the current world being worked at. Values like interval or fully disabling it can be configured in the Editor Settings window.

Other assets which can be loaded manually are vox models, sound and fonts. This can be done with the same process as worlds or just by putting assets within the asset folder of the project. When starting the editor, it will scan through the asset folder and load everything in. This folder can be set manually in the editor config file.

input handling

I’ve also refactored the input handling system to support more than one player. I’ve implemented this system to be generic to have PS4 support (PS4 release got canceled later on).

This means that input data either from PS4 or desktop is converted to our own values and always can be accessed the same way. The input handling allows up to 8 players including controller support on Desktop. It works with mapping of actions and axises to input and different layers to split logic for example between editor and the game or custom ones.