My Contributions

Rendering

Implemented PBR and Lighting using Deferred Rendering. I also made Particle Systems, 2D Sprites and Text Rendering using Distance Fields.
Added support for loading FBX files and having different LOD levels in the same file.
Texture Manager that updates all kinds of textures in real-time, such as model textures and 2D sprites.

Effects

Implemented Bloom using Gaussian blur. Also made other post processing effects such as SSAO, FXAA, Color Grading, Linear Fog and Fading.

Engine

I wrote the initial threading of the engine and worked on our Component System’s structure making sure everything was thread safe, this was done using a Worker Pool, Object Pools and my own Unique Identification System for classes.
Took care of all the Windows API related window and event handling.
Implemented threaded loading of levels with a dynamic loading screen.

Gameplay

Implemented the player and camera movement, the “tunnel” restricted area that flows through the levels, aim assist and intersection with the hoops.

Tools

Wrote tools for our LD’s so they could work more efficiently in Unity. I also made a custom exporter from Unity to our Engine.

Project Details

  • 10 weeks half time
  • Our own engine
  • C++ and DirectX 11
  • Unity as editor
  • Team Size: 5 programmers, 3 graphical artists, 3 level designers, 2 technical artists.

Pipeline Challenges

There were a lot of challenges when it comes to the pipeline while building our own engine.

I had to work closely with our Technical Artists, Level Designers and Graphical Artists to make sure that all Models and Textures made it through our Pipeline from Maya > Unity > our Engine. Some of the problems we faced were:

  • We had to make sure the models looked exactly the same while moving through different coordinate systems, since Maya, Unity and our Engine all worked a little bit differently. This was a really tricky one, but after lots of testing, we got everything working well.
  • We wanted to support different LOD levels for a model in a single file, which was something that none of us had any previous experience with. So me and the Technical Artists worked together to find a solution to this problem.

Screenshot