Game Designer, Team Barrel
March 2022 – July 2022
Bullet points:
- Used Unreal Engine 4 and Blueprints visual scripting to create a randomly generated hallway level to generate a new path towards the objective on game start and runtime.
- Created a common distance mesh level in Unreal Engine 4 using Blueprints visual scripting of a space scene with moving asteroids and a rotating planet to be used in all other levels.
- Maintained project using Perforce and the Atlassian Suite.
- Kept up communication with the team daily and led the team through troubleshooting steps to maintain project health.
Full description
Background
Created as the final project for Full Sail University, with the design goal of creating a completed game using industry software, developing the game in Unreal Engine 4.26, with source control through Perforce, and task tracking in Jira and Confluence.
The team came up with a sci-fi horror design, where the player plays as the medic aboard a space station orbiting an unknown planet, waking up with the rest of the crew wondering confrontational to the player in an unknown haze, as the security systems of the station have turned against the player.
Development
For this project, I was responsible for the initial design concept, development of the final level, programming of the initial enemy AI state system, and the common distance mesh level.
Concept
The initial design was based on Dead Space, and many of our designs came from that – trying to emulate the atmosphere of Dead Space while changing to make the player mostly useless against the enemies and having to sneak behind enemies to disable them.
Enemy AI state system
For the initial state machine driving the enemies, I created a state machine with the base states of Wander, Pursue, Idle, and Disabled.
The enemies began in a wander state – taking the max distance variable and choosing a random point around that distance for pathfinding. At each location, the enemy would enter the idle state and look in their immediate vicinity for certain objects to become ‘interested’ in, if any of the chosen objects (hospital beds, wall panels, turrets) were around the enemies a random chance would determine if the enemy would walk directly to the object and stay there for a few seconds before exiting back to a wander state. If no objects were found, or the random check failed, the enemy would go directly back into the wander state.
For the pursue state, the enemy would simply check if the player was in range, standing up, with no objects in between the player. If all of the above were true, the enemy would chase after the player until they either killed them, or the player loses them for 2 seconds.
And finally, the disabled state ‘kills’ the enemy if the player manages to sneak up behind the enemy and inject them with a medicine pickup within the game. This state prevents any exit from the state, and tells the enemy to lay down.
Distance mesh level
To help the player feel grounded in one consistent world, the team decided to have a common distance level outside of the windows of the station and between each level. Originally, this was designed as a master streaming level, which would contain all other levels of the game and handle the loading/unloading of each level as the player progressed through the game – while randomly generating the connecting hallway between levels.
Due to the level requirements of the school project, we were forced to scrap the implementation of the randomly generated hallways in the release of the game, though initial implementation and proof of concept was completed.
The randomly generated hallways worked by utilizing splines and instanced static meshes, the generation controller blueprint would find the ending door of one level, and the starting door of the next level, then it would generate a spline path of linear points between these doorways – changing its primary axis along the Y or X axis for each point. This let it create straight line sections of hallway, but change where the corners on the hallway was so that each hallway generated was unique. This spline path was then used to place instances of flooring and walls, enclosing it for the player to walk in.
In addition to the hallway generation, the distance level contained an asteroid belt, planet, stars, and the global light source. The light source let us keep lighting consistent between each level, while the asteroid belt and planet let the player stay grounded in space. The asteroid belt was created using a hierarchical instanced static mesh component, creating instances of a rock asset, rotating around a common axis while randomizing size and individual rotation. While the planet simulates rotation by using a panner node on the material to rotate the material around a sphere. For the stars, another sphere static mesh was created to surround everything, and a stars texture was added to the material passing as emissive color.