Parklife

Details

Role: Gameplay Designer & Programmer
Duration: 6 Weeks
Team Size: 1
Engine: Unity [C#]

About

This project was developed during my studies at University of Staffordshire. Developed through using 6 sets of sprints, with each lasting a week, and being with the parameters of “telling a story” as the overarching theme.

Introduction

The theme for this project allowed me a blank canvas to build upon and gave me lots of opportunity to explore systems I had yet to perfect in previous projects. Whilst previous projects were been smaller in scale, I found it imperative that I pushed myself to learn optimal techniques within coding. Along those parameters I also wanted to revisit C# events and their usages within games.

Furthermore, I wanted to experiment with creating unique combat systems for projects, in order to give players and antagonists a different combative approach than justy simply shooting, or directly running into the player to provide a more unique experience.

C# Events

In previous projects I had experimented with implementing C# events, using them to create a robust player input controller. From both personal motivation and encouragement from lecturers, I decided to research into using C# events within my games. In prior projects I had been using references to connect code, which did have its uses within my code but the use of C# events allowed for me to decouple my code and follow the single dependency, enhancing my games. For this project I used C# events for health related events, such as taking damage or dying. This script didn’t need to share its functions publicly but it could be used to send the necessary data to any of the “subscribers”, in this case the antagonists and player characters.

Code - Health

Custom Box Physics

The central mechanic to this game was the players ability to push objects and antagonists. Whilst interaction with antagonists was simple to include, creating an interactive object took more effort. I used Unity’s collision system so that once a player attempted to push the object, a ray cast would be sent out in the opposite direction to find a piece within the level. It would then move towards the found target and would cast a circle perimeter which scanned for antagonists to collide with.

After recieving feedback from play testers, I concluded that whilst the system was fun, it felt like it couldn’t be used more than a few times due to objects being stuck. I amended this by adding a ‘bounce’ feature but this caused issues due to the system using world coordinations, which countermanded the coordinates used for the initial movement and resulted in the object trying to move to the other side of the ‘world-space’. To amend this, the game now stored where the player hit the object, before moving it towards that vector for only a moment to unstick it.

Code - Pushable Box

What was Learnt

Originally I had imagined a different game concept that followed 'a walk through the park, focusing on a story aspect in which the world around the player changed. The original idea was to have it move through the seasons as you progressed through the park. Whilst it was a compelling idea, I only had a short time frame to develop this prototype, and the idea felt like it would be unachievable to its full potential if used in prototyping. This change of concepts initally caused disruptions throughout the project, but in employing the use of agile sprints, I took a step back and reshaped the idea to fit into the even smaller development window which had lessened from the shifting of concepts. I instead reused the park concept to tell a story in which the plkayer had to save a park from an infestation of bugs.

This experience taught me the importance of being able to adapt to unforseen circumstances. Whether that be self-evaluted changes or changes within a team, software development is never a straight line. The use of sprints allowed for the progress of this project to be broken into sections that could be evaluted at the start of each iteration. Agile sprints perfectly encapsulated my work flow in allowing me to weigh up the importance of getting certain sections done whilst still leaving room for experimentation and learning to allow the game to thrive.

Project Repository