Project RedSky is a DirectX 11 based graphics and physics engine built as part of my Further Games and Graphics module, this project went through many iterations and was heavily changed from the original project we were given (which just drew a single triangle onto the screen).

Built in C++14 using DirectX 11.2

Built in 6 months. October 2020 - April 2021

Features

  • Rigidbody Physics
  • Particle Physics
  • Collision Detection and Resolution
  • Entity Component System Architecture
  • Level Saving and Loading using JSON files
  • Controllable Attributes using ImGUI windows
  • Skyboxes
  • 3D Model Loading
  • Tweets

    Challenges

    Architectural design: The early days of this project was a very poorly structured project that did a lot of things in a very confusing way, this made expanding and maintaining current features a massive pain. I resolved this by first introducing a “Bindable” system this means that every object that interacted with DirectX would have bindables for vertices, indices, textures etc when the object would need to be drawn it would mean each of these Bindables would be bound to the pipeline, this massively reduced code duplication and improved workflow in the project. I also introduced a entity component system to handle physics, transforms and rendering this reduced the amount of setup for each object to essentially none.

    Creating a Reliable and readable scene loading system: Each scene in this project was loaded from a JSON file that listed all of the objects in the scene and each component they would have along with default values for all that components attributes, this massively reduced the amount of initialization code for each scene and made handling the levels much easier.

    How I could've improved it

    Demonstration Video