Sven van Huessen

Work / School / Year 2 / Block A

Game Engine

During this block I had 8 weeks to create a game engine. The only thing I got at the start was a basic render engine. All other stuff had to be made by me. The engine is called BEE, which stands for "Breda Educational Engine".

The goal of this block was to make a cross-platform game engine with a simple demo game. The game had to be made using my engine and run on both PlayStation 5 and PC.

A quick overview of the implemented features made by me:

  • Cross-platform Engine API to make games
  • Entity Component System using entt
  • Game Editor
  • Undo/Redo system
  • Serialization using Cereal
  • Resource manager
  • GLTF Loader / Asset Browser
  • Multiple Viewports / Render Modes
  • Particle System

On this page I will showcase some of these features.

Particle System

Confetti

Smoke

Sparks

Customizable paramneters

Custom mesh/texture

GLTF Loader

It's the famous helmet!

Each node can be moved!

City boulder GLTFS

Asset Browser

Editor

Scene Hierarchy / Inspector

FPS / Latency Profiler

Multiple Viewports/Cameras

Tile Editor

Resource Manager (see all loaded resources)

Undo/Redo System

Another feature I implemented was the Undo/Redo system. This system is used to undo and redo actions in the editor. I used the Command Pattern to implement this feature. This way I simply had an undo and redo stack with commands. When an action was done, a command was pushed onto the undo stack. When the user wanted to undo an action, the command was popped from the undo stack and executed.

Playstation 5

The goal from the start was to make the engine cross-platform. This meant that certain parts of the engine had to be made in a way that it could run on both PlayStation 5 and PC. There are multiple ways of doing this; I chose the inheritance approach. This method uses abstraction to create a base class that is inherited by platform-specific classes. Examples include rendering, device handling, input, file system, etc.

Because of NDAs I can't show the PlayStation 5 version, but I can show the PC version. Below are 2 videos of my demo games running on PC. These games were made using my engine and run on both PlayStation 5 and PC.

Github

The engine is open source and can be found on my Github

Feedback from Teachers

"Very nice work this block. Your evidence provides a good overview of your design decisions and how you integrated with the ECS.

Good overview of what you learned and used this block to make your code more efficient and reliable. Nice variety of content, from memory alignment to error handling.

Impressive amount of additional features, technically challenging and with a lot of variety. Also great explanations of the implemented features, with small dedicated videos per feature. Keep up the good work."