RIT Project
Digital Game - Classic Doom
A recreation of the original Doom within Unreal Engine.
My Contributions:
Create enemy AI using blueprints, making custom tasks, and leveraging Unreal Engine’s built-in behavior tree system and pathfinding.
Implement projectiles and weapons
Implement pickups and connect them to player stats and UI
Implement door and key system
Tools Used:
Unreal Engine 5
UE5 Blueprints
Assets used from Original Doom
The Challenge:
When trying to recreate Doom, we had to break the game down and prioritize what was most important to recreate the feeling of Doom. The gunplay and enemies were a key part, along with the player’s stats and pickups. One of my main goals was to focus on enemy AI, and I decided to learn more about the built in behavior tree editor, along with other AI tools like pawn sensing. I was able to leverage these tools to quickly iterate on the AI to create an engaging experience for the player.
Requirements:
The Process
Recreate core gameplay from a classic game
Develop the game in 4 weeks with a partner
The Implementation:
My goal was to learn more about Unreal’s built in Behavior Tree editor. I was already familiar with the theory behind Behavior Trees, but their support with creating custom tasks, leveraging pre-existing ones, and services proved very useful.
Services proved to be a powerful tools for checking status’s and updating blackboard variables. This allowed me to easily manage the different checks for each node. When creating new tasks, their system was easy to organize and provided reusability. Unreal provides built-in tasks like “Move To” or “Wait” which helped speed up the iteration process and made sure I didn’t need to make everything from scratch.
For the attacks, the implementation was straight forward. I wanted to have both a melee and ranged attack. I leveraged two main tools for attacking, the first being line tracing and the second was making a projectile. For both, I had to calculate the line from the enemy to the player. By using built in tools and vector math, I was able to make this translation. While the melee attack just used the vector for line tracing, the vector was leveraged for setting the direction of the projectile.