Oppenheim

Unity Engine C# Split-screen multiplayer Three varying stages 4 unique characters Group of 5
View code on Github Download and play from itch.io

Things I Worked On

  • Support for multiple controllers
  • Scene transition shader
  • The car character and bug fixing the others
  • Per stage section checkpoint system
  • Majority of the puzzle designs and implementation
  • The tutorial stage
  • Implementing automated code style analysers
  • Implementing an event system architecture

Made as a third-year project with the overall goal of refining and further developing our understanding of a games full development process, through the use of the project management software, Jira and close collaborations with others from the sound and music department.

To facilitate the communication between the various classes used, two C# event systems were setup, one for handling game events, such as players death, and another for UI events such as button clicks and scene transitions. This was done to further streamline development by reducing the need to assign components within the Unity inspector, enabling certain functions such as player respawning to be simpler to handle. Further to this, a number of editor tools were developed a script to generate cube walls of any size and another to generate an A* Pathfinding over a 3D grid between the buttons/ switches and the object they interact with.

One challenging system was with the development of the per checkpoint save system as all dynamic objects within the stage needed a way to be properly saved and reset when a player died. This was achieved by using an overlapping box over each section of the stage so that each item with the saveable interface could be collected and stored. Along with this each of these items was given a unique integer Id which was able to check and update itself whenever a new saveable item was added or removed from the editors hierarchy. A key issue here was in ensuring that once an Id was set for an item it would not change as this could break the save system if two different items were given the same Id. This was solved by generating an error message if the system detected that two items ended up with the same Id, enabling me to manually change the appropriate one so that the saving would not be broken. As well as this a dictionary of dictionaries was used to hold all this data, where each stage had its own dictionary, storing all the data for each section as its own element within it, and this all being stored in an outer dictionary which held the data for each stage as its elements.

A car dashing into some toy letter blocks stacked in a wall fashion

This car character presented its own unique set of challenges as, initially a custom vehicle physics setup was under development for it so that I could understand the physics behind how they worked. However due to issues with the implementation of the suspension of the wheels and time constraints, this ended up being moved over to the use of the wheel collider component from within Unity itself, so that the character would be completed on time. Along with this, further systems were developed, through some vector mathematics to ensure that the dash ability was able to go in a straight line and stick to the ground.