Introduction
“Hellbound” is the first full game I’ve developed in a custom game engine built from the ground up. Before this, I worked on the “Carrr” Engine which ended up being scrapped due to bad engine design. In contrast, “Hellbound” was highly successful and received great praise for being the best game made with a custom engine by a team of inexperienced 2nd Years at BUas.
I worked mostly as a Graphics programmer, specializing in the PlayStation 5, but in the end, I switched to fully working on Gameplay as graphics were finalized and we needed manpower to finish the game.
If you want to check out the game, here’s a link to its itch.io page where you can download it!
Project Description
Hellbound is a top-down beat-em-up game where you fight a huge Skull-O-Pendra boss chasing it through Hell until you defeat it. You play as a fallen angel, who escaped from his chains and uses them to bring vengeance on the evil that had you locked up. Here’s the Trailer for the Game:
The Team
The Team behind Hellbound consists of 17 people:
– 8 Programming Students
– 4 Design & Production Students
– 5 Visual Art Students
Timeline
I was involved with this project for 4 months. From the concepting phase of the game until its release at the end of the academic school year.
Technologies Used
The project was fully written in C++
The Rendering backend for Windows was written with DirectX12.
The one for PlayStation 5 was written using Sony’s own API.
Helper Libraries used:
– tinyGLTF
– OpenGL Mathematics
– FMOD Studio
– EnTT
– Dear ImGui + ImGuizmo
– stb_image
– JSON Parser
Contributions
As I said previously, on this project, I was responsible for maintaining the backend of the PlayStation 5 Renderer, as well as implementing new features, specifically needed for our game.
Below I’ve a few examples of the most impressive work I did on this project. If you want to see a full list check out Gallery > Year 2 > Hellbound (link) for all videos of my work I’ve recorded during this project
I researched how Computer Shaders work, understood how to bind resources and work with that, and with that knowledge implemented bloom, tone-mapping, and a monochromatic shader. I also spent a tiny bit of time creating a prototype translator unit so we could use the same HLSL shader code for some of the simpler compute shaders on both platforms:
I also worked on maintaining many of our other different render pipelines. More specifically the 3D model PBR, 2D Sprite & Particles, and UI Render Pipelines.
During 2 sprints of this project, one artist and I worked closely to implement the visual effects/particles in this Hellbound. He created the assets, I tested them in the engine and we tweaked both the exposed settings there and the ones in Substance Designer until the assets looked coherent:
One of the less fun, but quite necessary, tasks I worked on was Alpha Blending + Depth Sorting:
Lessons Learned
The most important skills I learned throughout this block were reviewing and collaborating with programmers, each specialized in a separate field. This time, since we were such a large programming team, we were constantly reviewing each other’s code trying to make sure it made sense. I learned how to review code better and how to respond correctly to my code getting reviewed.
As for technical skills, I learned how a game’s render pipeline is made. I understood many of the difficulties that come with creating a more complex graphics pipeline for a game and how different it is from creating a renderer-only project.
In addition to this, I discovered compute shaders and more complex post-processing effects.
The most valuable experience of all though, I would have to say was working in a team that felt like a well-oiled machine. All decisions were taken based on the “cool” factor. This was a pipeline that worked really well for the technical side and was plain good fun. Here’s a photo of our team:
​
About the Author
If you want to learn more about my work, please check my “About Me” page or any of my other blog posts about my projects on my Portfolio page.
Thank you for reading my blog post. Feel free to reach out to me for any comments/suggestions.