Terrate
Project Description
A second year project for Falmouth University, made by a small team of students including myself.

A Brief Description:
Terrate is a small survival adventure game where the player's overall goal is to migrate their village to a new location.
Along the players journey they can encounter friendly or hostile animals, but they better not waste time, because every night it rains. The player is a salt golem so any contact with water can be deadly.
Furthermore, any actions such as walking, running, throwing punch's and more costs the players some of their health, so they'll have to either scavenge for left over salt, or hunt wildlife for theirs.

What Went Well?
This wasn't just my first project using Unreal Engine and C++, it was also the first time most of my teammates used unreal engine as well.
As a result, the game wasn't thoroughly implemented using industry standards throughout. However, it was a perfect test ground for us to learn Unreal Engine, try new things out and have fun along the way.
Not only did we come out of this project smarter, but the game itself also came out great. At the Games Expo we got a lot of positive feedback which was great to hear, as well as some good critiques I'll carry forward into any future projects.

Reflection.
Reflecting upon the project, one of the biggest mistakes I've made early on is not thoroughly designing and planning systems ahead.
Being the only C++ programmer on the team, and also being new to UE5/C++, I took the leverage of implementing things in a less modular way without thinking of the project holistically.
However, this doesn't prepare me for the industry as well as for my final year project where I'll be on a team with 2 other C++ programmers.
To prevent this from happening again, as I write this I'm going to start prototyping and designing systems over the summer leading to the start of my final University year.
COMBAT

How and Why?
When the player holds right click they start to aim, this forces their character to face forward and enables the player to perform a melee attack by pressing left click.
This implementation has been a bit controversial, as some players find it intuitive and others find it a bit uncomfortable. The reason I implemented it this way is mainly due to mostly playing FPS's and also trying to make combat as easy as possible for less experienced gamers.
Feedback on the original prototype said combat was a bit too difficult, so I made a zoom in button to make smaller creatures such as rabbits and wolves easier to see and track, I moved the camera further to the side so the player's character takes up less screen space, and finally I increased the number of line traces used from 1 to 81 so that aiming is more forgiving. This makes it so the difficulty stems from the player's ability to manage distance between them and the threat.
Villagers

How and Why?
The generic villagers aren't meant to serve any gameplay purpose, they are there to help the player get immersed in the world. They are also the very first thing I've worked on in this project.
They have 3 simple behaviours, either go to a random location in the village and stand for a brief second, go to the benches near the camp fire and take a seat, or go back to their house and take a nap. They also go home to sleep when it turns night time and starts raining.
There is also a specialized villager at the back of the village which does serve a gameplay purpose, more on him below.
Wildlife

How and Why?
There are 3 different types of wildlife in the game, rabbits ("prey" in code), wolves ("predators" in code), and bears ("apex predators" in code).
Rabbits have two behaviours, they either peacefully roam around or they run away from potential threats (anything that isn't another rabbit).
Wolves have the same two behaviours as rabbits except they have an extra behaviour where they hunt rabbits or players tagged as hostile. Players are hostile if they attack any wolf and don't break line of sight for at least 10 seconds continuously.
Bears either roam or hunt anything, including other bears. Bears deal the most damage, move the fastest and have the most health, they also only spawn in the second section past the bridge so the player only encounters them when they're on the last mission.
This is so the player has time to get accustomed to the controls, and by that point the player might've engaged in combat with wolves as practice, though this is optional since wolves by default won't attack the player.
Other Contributions
On top of everything I shard here, I worked on numerous of other smaller systems such as the crafting system, mission markers/compass system and anything related to the players health. I was the only C++ programmer so anything written in C++ in this project is my own. As for blueprints, our team had another blueprint only programmer, who worked on the inventory system, missions and UI. A good rule of thumb is that anything related to my contributions is mostly made by me, for any clarification regarding my contributions feel free to get in contact with me and I'll be happy to explain further.
Reflection 6 Months Later
After reviewing this project 6 months after officially stopping all work on it, it's great to see how far I've come. I used this project to get to grips with UE5 and C++ and as a result was too too scared to take advantage of things like Object Orientated Programming (to create a base animal class and inherit and override behaviours from it) or using interfaces (to create a character interface which would have taking damage or healing functions). But this still served as a perfect foundation from which I built my knowledge on over the summer, if you do want to see my enhanced skills taking advantage of polymorphism to create a scalable gadget/ability system check out my page on Endless Vendetta

