MOTIVATION
Training Data was my first 3D game, made while learning Unreal Engine (5). With this game my goal was to implement multiple simple yet essential game mechanics to strengthen my foundation in UE and bolster my confidence in tackling more complex challenges in future Unreal/3D projects. The project started out as a demo space for these mechanics, but after generating some ideas I figured the best way to get familiar with the Unreal Engine would be to make a near feature-complete game.
GAME CONCEPT
As the next generation of artificial intelligence, you are tasked with completing a series of platforming and puzzle challenges to prove that your coordination and problem solving are ready for public integration. The Overseer will guide you through the chambers and upload your neural net to a new robot body should you suffer a system failure. Through perseverance, you may be able to complete your objective and confront the real world.
GAMEPLAY CLIP
AVAILABLE TO PLAY
DEVELOPMENT
Tech: Unreal Engine 5
Role: Solo Project
Prior to the development of this game, I had completed a few tutorials that got me introduced to the Unreal Engine, but the breadth of tools needed to make a 3D game required me to learn a lot of techniques on the fly, such as texture scripting, generating meshes, and build optimization. Lighting was another big issue that was new to me. In 2D games lighting is mostly an aesthetic choice, but in 3D games it has an incredibly important functional role that impacts both gameplay and performance. With a game that takes place entirely indoors, I got intimately familiar with point lights and their drawbacks. The relatively simple mechanics allowed me to get familiar with the events and methods available for all the different UE components. One of the trickier programming problems I ran into was getting held rotated items to snap to a multiple of 15 degrees relative to the world rotation. Because the reflection puzzles in the game required precise angles, rotating the object needed to account for any physics interactions that could put it at an off angle. With some trial and error with the physics handle and a little bit of math I was able to get an implementation I'm really happy with, and the reflection puzzles feel much better for it.
TAKEAWAYS
One aspect of 3D development I neglected until it was almost too late was optimization. Although my programming fundamentals kept my scripts efficient, my lack of experience in Unreal led to me making some performance costly choices. I should have packaged a build sooner to catch the performance hits earlier. Instead, near the end of the project I had to comb through each level and adjust problematic lighting/objects, resulting in a lot more work than what would've been necessary. In the end the game was running well at 60fps, but I will definitely take this lesson with me.