This game was made in collaboration with a group of 20-25 people, for a university project. We all worked in different areas on different areas of the game. My role on this project was focused on the technical side, where I worked on creating different mechanics within the game, and alongside this I did some more technical design, designing systems and formulas for the different mechanics within the game. The main role I was assigned to do was working on creating the different AI systems present in the game, but I also handled many other aspects in order to create a finalised game.
The game my group decided on making was a fishing game, with a simple core game loop, where the player needs to go out to sea and catch fish, then sell them, and use that money to upgrade their equipment so they can journey further out to catch more rare fish. The game has been split up into 4 weeks, where the player is required to reach a quota by the end of the week, or else they will lose, and be forced to reset the week. If the player manages to complete all the weeks they will win the game. To help create a more realistic fishing experience, we decided to spawn the fish themselves into the water so the player can see and interact with them. This also means they require some form if AI to be attached to them to create the image of a simple ecosystem within the sea.
As a technical designer, I created a system for the fish themselves, defining how they work and the data that would be assigned to them including information such as rarity, location and other necessary pieces of information they may need. I compiled all this data into a excel sheet that designers could use to add fish to the list and assign the values too and see information such as the price in real time so they can be more easily balanced. Inside the table I also created a simple formula that calculates the price of the fish based off of the different data values assigned to them so they can be balanced and viewed. I also used the values to assign a difficulty value to the fish with it's own formula that could be translated in game to control the difficulty level of the fishing mini game played in order to catch the fish and this difficulty value is adjusted based off of the fish itself and the level of rod the player has. Alongside this I branched further out and designed the shop systems and damage systems for the game alongside the formulas necessary so they can be balanced easily. All of this data could be transferred into a data table in engine so they can be integrated in game. Things such a the shop system had a formula in place that averages out the price of the fish to create a appropriate cost for each item in the shop.
On the more technical side of things, the main area I worked on in the first few weeks was the AI systems present in the game, controlling how the fish move and interact with the player and the environment. At first I attempted to use the behaviour tree system, but after some time and talking to my group I decided against it and swapped over to creating a Finite state machine to handle the AI. I used this to create a simple movement system for the fish that simulated a more realistic moving pattern, and kept it simple so it wouldn't be too computationally expensive so many of them can be run at the same time. The fish were designed with a simple wander behaviour, alongside a Interest behaviour so they can notice and path to the players bobber, and a hooked behaviour that handles the movement necessary for the fishing mini game, there is also a flee behaviour so in the event the player fails the game or something else gets too close they can run away. Alongside the fish I also created the AI attached to the shark, with a few key behaviours attached to make it seem more realistic. I added a simple pursuit behaviour so it can chase the player, and a circling behaviour so the shark can circle the boat like which is a classic trope attached to sharks. There is also a balancing system in place that increases the sharks wander range and agro range based off of the time of day, to create a scaling difficulty on the shark so they are more commonly encountered the later in the day it is. One of the main problems I encountered working with the AI was the type of agents I needed to make. Due to the nature of the environment I couldn't use Unreal's built in navigation mesh system, as the AI's required 3 Dimensional movement across all axis and varying heights, and the navigation mesh provided is a 2D one working with a flat plane. To get the movement working I had to manually create the movement systems and handle things such as pathfinding where necessary while keeping the complexity minimal so they could work at a larger scale.
I also handled smaller systems such as integrating the shop in engine by translating the information over from the spread sheet to get it working correctly, the weathering system attached to the boat to add general damage from the ocean, helped start the fish spawning system, the boat visual update system to match the purchased upgrade, integrating systems such as weight and armour into the boat, and I created the end credit sequence alongside a dynamic method that populates the credits based off of a data table.
This was one of my first experiences working with such a large group and it was a great experience to have helping show me how working with a large group works, with getting feedback collaboratively and working on that with a short deadline. It helped inform me on the kind of environment I could expect working with many different people and gave me insight on how creating on large scale games may work with delegating tasks to help create a larger product.