180 days - 25 members - AI Programmer - Unreal Engine 4

Project Info

Project Summary

Made with Unreal Engine 4

The project is focused on creating a game through the concept, pre-production, production and release phase of development with a cross-disciplinary team.


This is my third team project that has been released and the first to do so on Steam, it was released on 17 June 2022

Team Composition

1 Producer

7 Programmers

5 Artists

13 Designers

Duration

4 Blocks - 36 weeks - 180 Project Days

8 September 2021 - 25 June 2022

Project Goals

The goal of this project is to create a first-person shooter with fast-paced movement set in a military research facility in the 1950s with the player being the sole survivor of an alien invasion. This project is a collaborative effort between the 3 disciplines: Programming, Visual Art and Design & Production, along with help from outsource teams.


My Contributions

Role: AI Programmer

Working on the enemy functionality and related systems


I created the Information and Token System (commonly referred to as "Overarching system") that is used by various enemies as well as the creation of the Tank Enemy.


Overarching System

The Overarching System was an idea that appeared early on during the concept phase of the project, and through the collaborative effort between the Lead Designer and myself the system can be separated into two part: The Information System and The Token System.


Information System

The Information System would serve as the brains of the overarching system, it has a simple purpose of gathering all the required information of all the enemies, like location and state, and store it in the system. All of this was created in Unreal Engine C++ and while I have worked plenty with C++, this was not the case for working with it in Unreal Engine. Learning how to do this was a great learning opportunity for me, but it did take time and caused a few crashes later down the line, which then had to be fixed.


Token System

The Token System serves as the bridge between the Information System and the Enemies. When the Enemy requests a Token, the system checks based on given conditions and the stored information in the Information System if it receives a Melee, Ranged or No Token. The Enemy will execute the functionality that is tied to the received token. The amount of available tokens can easily be changed by designers in the event we want more or less enemies to simultaneously attack the Player.


The Token System was something that took longer to develop because of uncertainties with the design, and it caused a few issues later on, which was also a result of some mistakes I made in Unreal C++.


Enemies

As the main AI programmer of the team, I was responsible for the creation of the main enemy of the game, referred to as the Tank enemy. I also had input on the much simpler Grunt enemy when it came to its group functionality.

Tank Enemy

The main enemy of the game, which I was involved with from the very start, initially creating a prototype for the proof of concept and then reworking and expanding upon its system from the Pre-Production phase onward.


The Tank Enemy had its functionality complete for the most part by the beginning of the Production phase, but there were a lot of bugs that had to be fixed, and this was partly my fault for not properly testing it in a variety of situations from the very start.


Despite that, due to the efforts of both my team members and I, we managed to get rid of many issues and are now polishing it for the release of the game.

It was however not only the functionality of the Tank Enemy that I worked on, but also ensuring that the animations created by the animators were implemented and match up with given values and functionality, a process that took a lot of time but was also a great learning experience.


Grunt Enemy

The secondary enemy of the game, which was created by a fellow programmer as a more simple enemy the player will face. While I did not work on the Grunt enemy directly for the most part, my work on the Tank and Base enemy served as a template for the Grunt enemy. Due to this, any issues that we came across on the Grunt that were related to the Tank could easily be fixed for both of them simultaneously.


The work I did on the Grunt myself aside from fixing bugs was related to my work on the Overarching system, wanting there to be a form of Group behaviour between the Grunt enemies we made use of the Token System for this. If in a close area, more than one Grunt was present, half of them would receive a melee token and allowing them to make a melee attack when the player turned their back to them. This took some time to make the required customizations to the Information System and get the proper conditions for the Token System, but I managed to implement it as intended.


Unfortunately, due to design decisions made later on, part of this functionality would become redundant, but it was still a challenge and learning experience for me.


The Crusher

With the successful launch of the game, members of the team wanted to add a final conclusion to the game, something we did not have the time for before the intended release date, for this the enemy now known as "The Crusher" was made. It was a simplified version of the Tank enemy shown above, larger with some additional functionality added to it for the boss fight, but the core of it was still the same functionality made by me before it was decided to not be included in the game.


Thanks to the work by the Lead Designer, Lead Programmer and me, we managed to finish off the game with a great boss battle.