top of page

Acerca de

This was a class project wherein the goal was to create a 3D game engine in C++. We were given a baseline engine to build off of, the DirectX & OpenGL libraries, and specifications for our engine. Everything else about the engine we were given freedom as to how to program and design.

In the interest of full disclosure, the baseline engine had the following functionalities:

  • The ability to open windows and render a single color to them.

  • The ability to log error messages.

  • Some basic concurrency and threading.

  • Some basic math & physics operations involving Matrices, Quaternions, and Vectors.

  • Basic time measurement and update cycle functionality.

  • Infrastructure to support future processing of data assets.

  • Basic Keyboard input.



While working on this project, the following features were added:

  • DirectX and OpenGL support for Meshes and Shaders/Materials (processed on a secondary thread).

  • Easy shader conversion from DirectX to Open GL (and vice-versa) for simple operations.

  • Supports movement and rotation of objects in 3D space.

  • Two independent update cycles (a per-frame cycle and a per-time-interval cycle).

  • Is framerate independent when updating physics and gameplay.

  • Supports physics with Collision and Collision resolution (does not rotate objects during collision resolution and does not support stacked objects).

  • Physics support partially elastic collisions, trigger volumes, and can call events when collisions occur.

  • Processes Meshes, Shaders, and Audio into binary files.

  • Audio support (incorporating a library made by a fellow student).

  • Platform independence (regarding DirectX and OpenGL) in the codebase (excepting platform specific graphics implementations).

 

 


Demo Controls:

  • WASD to move.

  • Q & E to rotate.

  • The goal is to collect all the blue crystals.

© 2022 — Joshua Butner.

bottom of page