The Azul Engine is a custom-built game engine that was designed to put my programming skills to the test over three rigorous classes while earning my Master's Degree from DePaul University.
The final project uses nearly 200 files, 4 customized libraries, and a separate project that converts GLTF models into Azul-ready files using Google's Protocol Buffers.

Link to Part 2

Link to Part 3

Used in Development:
* C++
* OpenGL
* Google Protocol Buffers
* JSON
* Intel SIMD
* Visual Studio Enterprise
* Perforce
Developed in Part 1:
Game Object:
* Basis of all objects in the game
* Held in a PCS Tree hierarchy (see Custom Libraries below)
* Contains a Graphics Object for rendering
* Update function can be overridden in derived classes for more specific functionality
Graphics Object:
* Contains a Mesh and a Shader
* Encapsulates all rendering details
Mesh:
* Reads custom Azul model files and stores all VBO data
* Instanced, meaning only a single Mesh object is required per model to be used in any number of Game Objects
Shader:
* Reads GLSL files and stores data for the Graphics Objects
* Also Instanced in the same manner as the Meshes
* Some Shaders allow the use of Textures
Camera:
* Implemented World to Camera to Screen calculations
* Perspective and Orthographic Cameras can be customized
* Multiple cameras can be used and interchanged in a scene
* Easy to use movement system
Lighting:
* Types: Directional, Spot, Point, and Echo-Location
* All types can be finely adjusted for a given scene
* Lights are only sent to the GPU once during the Draw function in their own Uniform Buffer that any Shader can use
Custom Libraries:
Math:
* Vectors (Length 3 and 4)
* Matrices (3x3 and 4x4)
* Quaternions
* Trigonometry Functions
* All functions and structures utilize Intel SIMD
Resource Manager:
* Node base class that all primary object types derive from
* Nodes can be grouped into Linked Lists, Stacks, and Queues
* Manager objects create and destroy commonly-used objects with the Factory design pattern
* Manager objects act as Object Pools to handle reusing Node-based objects, preventing extraneous calls to new and delete
Parent-Child-Sibling (PCS) Tree:
* Tree hierarchy allows simple management of all Game Objects
* Easily traversable for the game's Update and Draw functions
File:
* Wrapper for the Windows File System
* Customized functions allow for lighter footprints in classes that require access to reading and writing files

You may also like

Back to Top