Group: MindtreeGames
Site: https://kpwashere.itch.io/the-last-light
Code Samples: Github
Language: C++
Engine: Unreal
The Last Light was my senior capstone project. I joined the MindtreeGames team at the second semester, and was immediately tasked with creating a lighting system for the game. The key gameplay element of The Last Light was having to interact with switches and circuit breakers to power on the lights to various sections of the level. The darkness was the enemy, How the team had been coding this, was to hard code events in the level blueprint to handle when lights should turn on/off. However, as development continued, this would produce a lot of back-end work for the designers and programmers. In addition, Unreal’s blueprint files are largely incompatible with git, or other repositories.My solution was to, utilize a singleton data object to keep track of all the various elements; lights and gates, that could be modified by the breakers/switches. Each object would know what “circuits” it was on, and switches would simply tell the singleton to turn on “circuit 2”, and all the lights on that circuit would come on. However, when I designed the system, I made a rather big blunder. Instead of conceptualizing the registering object as a component, I conceptualized it as another object. This meant that whenever a new element was supposed to be added to the circuit system, I had to invest more time on creating a new object. Instead, like in the code sample, I should have made better use of Unreal’s entity-component system (ECS), and instead have used simple components, instead of new objects.
What do you think?