Davos Game Engine

2020 · Team of 2

3D Game Engine and UI subsystem.


Gameplay video

Description

This project was made for a university subject in a team of 2.

It is a 3D Game Engine with a UI subsystem made with C++, OpenGl and other libraries.


Role

I didn't have a specific role during this project, we both did a little bit of everything but I focused mainly on the resource manager and the UI system.


Features

Resource Management

Implementation of the assets pipeline. Consisting of:

- A virtual file system using PhysFS library to manage reading/writing files.

- Serialization of resources into own file format that can be effectively used by the engine.

- Reference counting to improve the efficiency of the pipeline by only loading and unloading assets once.

- Properties customization by having the resource's data as parameteres inside the inspector panel.


Panels

Dear ImGui library was used to create and handle the GUI of the project.

I coded the panels layout with the GUI module, adding docking and modifying the style. For the panels themselves I was in charge of the Configuration Panel and the Assets Browser.

- The configuration panel is the panel where the user can change all the settings for the project and view a general status of the app.

Configuration Panel

- The assets browser is the panel that connects the resource manager with the user, it is the visual component for the filesystem and lets the user create and modify files from inside the engine.

Assets Browser
UI System

Implementation of the UI Manager which controls the lifecycle of the UI elements in the scene. As well as adding support for loading images and creating buttons.

UI Elements