TheOneEngine is a videogame engine created by three students in the first semester of their 3rd year of Videogames Design & Development degree at CITM. Then it was chosen by the whole class as the engine to be improved on for Project III. It was developed concurrently with the game Alien: Nemesis and has been constantly updated.


Features

Custom Layouts

Our engine makes use of ImGUI, a C++ graphical user interface library. Users can customize the editor interface to meet their specific needs.

Resource Manager

Optimizes asset usage by reusing resources such as models, textures, materials and shaders, reducing the engine load.

Animation

By passing an .fbx file with an animation in it, you can use it to animate models in the engine. You can use them alongside the Scripting Module to create blending animations to have a smoother transition.

2D Physics

The physics module currently supports 2D physics fully implemented from scratch. You can attach Collider components to the GameObjects to see the colliding behaviour.

Shaders

The scenes are rendered in a separated render pipeline. Also includes vertex shaders and fragment shaders. Can also be controlled in the scripting module in order to create custom shaders.

Lighting

Alongside the shaders, we are able to render lights and shadows in the engine. In the editor, you can choose which type of light you want to create, like spotlights.

User Interface

With the shaders, the engine allows to use 2D canvases that can act as the user interface for the game. It supports text, images and buttons, and the behaviour from it can be edited in the scripting module.

Particles System

The particle system allows the user to create custom particles, by using images or solid colors. The properties can be modified to your liking in the panel inspector.

Audio

TheOneEngine has an audio module using Wwise. In the editor, you can use AudioSource so that the GameObject can generate sounds. Needs to be used alongside the Wwise editor to edit the sounds inside the engine.

Camera

The editor features the use of cameras. You can add as many cameras as you want thanks to the frame buffer developed. Also includes camera easings to make smooth movements.

Scripting

Using mono as the software platform to create cross platform application, allows to use C# as the scripting language to create GameObject behaviors. Many of the modules can be accessed by the scripting engine.

Scene Serialization

Using our own custom format, you are able to save the scene along with the GameObjects, scripts and load it as many times you need to.

Batch Renderer 2D

Migration from immediate mode to a Renderer 2D using the Batching technique with the ability to render 2D primitives such as Quads, Images, Lines, Circles and Text.

Instance Renderer 3D

Renderer 3D making use of an instance buffer for each type of mesh, saving draw calls and increasing performance.

CRT

We also feature a CRT effect in our Renderer options inside the engine if you want to add a retro effect in the game you are making.


Libraries

Assimp

A library to import and export various 3D-model-formats including scene-post-processing to generate missing render data.

OpenGL

An interface to draw graphics.

GLEW

OpenGL Extension Wrangler Library is a cross-platform open-source C/C++ extension loading library.

GLM

It is a header only C++ mathematics library for graphics software based on the OpenGL Shading Language (GLSL) specifications.

Mono

An open source implementation of Microsoft's .NET Framework as part of the .NET Foundation and based on the ECMA standards for C# and the Common Language Runtime.

SDL2

Simple DirectMedia Layer is a cross-platform software development library designed to provide a hardware abstraction layer for computer multimedia hardware components.

ImGui

Dear ImGui is a bloat-free graphical user interface library for C++.

ImGuizmo

ImGuizmo is a library built with ImGui that allows you to manipulate (rotation & translation) 4x4 float matrices.

ImPlot

An immediate mode, GPU accelerated plotting library used with ImGui.

DevIL

Developer's Image Library is a programmer's library to develop applications with very powerful image loading capabilities.

RapidJSON

A complete library that allows JSON parsing and generator for C++.

Ozz-animation

An open source C++ 3D skeletal animation library. Provides runtime character animation functionalities.

Wwise

An Audiokinetic's software for interactive media and video games.

FreeType

A freely available software library to render fonts written in C.