Made for: ARU 2nd Year – Semester 2
Duration: 5 Months
Engine: Unreal Engine 4.19
Language: C++/Blueprint
Position: Project Manager
Brief (Excerpt):
“Students will work within a group environment taking on the specific professional roles. Working together they will produce a vertical slice which is essentially a professionally developed section representing a potential full game.”
(from Jagex introduction):
This was my second opportunity to do this module having done so the year before. There was a much larger team than before with three others from my course and five artists.
The Game
Live and Kicking is a fast-paced, co-op, first person shooter with a cyberpunk setting. The demo we are produced was a single level with a solo player.

Set in a penthouse, high above the city, the main character must break into a vault and steal a next-gen power cell while fending of the security measures that try to stop them.

The artists really wanted to make a cyberpunk shooter and we though it would be possible to get a result with this drawn-in scope.
What I did
Project Management
As project manager I had to be in constant communication with the artists and the rest of the team, assigning work and giving feedback on completed tasks. Alongside my own programming work, I implemented art and audio given by other team members to keep the project moving.
AI
The bulk of my programming work was creating the behavior of the enemies that the player shoots at.
They encounter 4 distinct enemy types during the game and each had their own challenges to implement. While the individual abilities of each type differed, they were all controlled by an overarching manager that handles spawning and attacking so as not to be overwhelming. This manager takes into account the enemy type as well as location and visibility to the player. This means enemies can engage or disengage as combat moves around the map.
All enemies have to reload after firing for some time, giving the player a window to attack.
Drones

These smaller enemies fly above the player, raining down lead above cover in the main atrium. They navigate via basic environmental queries within a given radius of themselves, moving from point to point and aiming at the player.
Bipeds

These robots fulfill a more conventional combat role, moving on foot and wielding a rifle to attack the player. As part of their behavior they receive recommended locations from the AI manager to path-find towards. These locations are updated based on queries, taken at certain locations in the map at regular intervals. These tests provide a set of recommended locations to attack the player from and are shared to reduce the performance cost of many enemies querying separately. If there are too many enemies attacking the player, others will simply patrol room to room. They can also take cover to reload if it is available nearby.
I setup the animation blueprint for different movement speeds, aim offsets, various montages and foot-ik.
When they are destroyed, their limbs can be separated by shooting at them individually. A significant explosion can also tear them apart.
Turrets

The simplest of the enemies, turrets deploy from points in the level to continuously fire at the player until they are destroyed. Since they remain stationary they need only rotate to face the player on a couple of axes.
Mech

This enemy serves as a boss battle towards the end of the mission. The thrusters on its rear can be blasted off, reducing the rate at which it can turn. The reloading state also makes it more vulnerable.
It uses a similar navigation system to the drones but at ground level.
Objectives
Certain objects can be picked up, interacted with or reached to progress through the level. I created the high level completion and randomization functionality in C++ which is exposed in blueprint for bespoke reactions per object. Examples of this are keycards, circuit breakers and the mainframe computer.

Environment
I was also implementing much of the artwork into the engine, helping people with materials and scale references to ensure a smoother workflow. Since the artists had a lot of work I also took on some of the more time consuming tasks to improve fidelity in areas like laying out the surrounding cityscape.
I added elements like the lights, roads, boats, trains and moving advertisements to make it feel more alive.
Effects
Most of the particle effects were done by myself, relying on a couple of simple renders in Houdini for smoke and various textures to add sparks, flashes and flares to explosions, lights and rain.
At the beginning of the level the player smashes through a skylight window. I simulated this using Houdini to be imported into the engine when the collision of the area was finalized. This was towards the end of the project however so I couldn’t implement it in time. Instead I opted to use a standard build-in physics fracture that takes damage at the time of impact.

The rain outside of the building was achieved with a panning material on the windows and sheet particles spawning on the other side of the glass.

As the level progresses, puddles are added to the floor as the rain pours in through the broken skylight.
Audio
I was responsible for mixing and looping the final music track, setting up the triggering of sound cues in the level and creating sound effects that proved difficult to find.
A radio voice communicates objectives to the player. While I provided the final lines for this role, I also setup the playback system that handles a queue with weighted randomization for both initial reminders and reiterations of objectives.
The robots in the game also talk, picking from almost 300 lines provided by most of the team and modulated on my end using Reaper. These are triggered in certain contexts like reloading and spotting the player with a background system ensuring the bots aren’t talking over each other.
Cutscenes
A couple of simple scripted sequences were made to introduce and end the level. Timing the audio cues, UI and camera animation took some time but the outcome made a huge difference to the end result.
UI
Lastly, I created a basic main menu and pause menu flow for getting into the game and back out again. Screens for when the player failed or succeeded were needed too.

In summary, this was the largest project that I had the chance to work on yet and being in a lead role proved to be a challenge. Since the bar I set for ourselves was high, a lot of work had to be done in order to reach that standard.
This was relevant when other team members were doing work of a lower quality which would’ve made certain areas of the game seem functionally inconsistent in comparison. In other cases there simply wasn’t enough time for people to work on a specific feature. I knew not to push those who didn’t want to spend more time than was allocated to the practical sessions. Rather than conceding and sitting back, I was constantly jumping between different parts of the project in order to bring that quality level higher.
While the end result didn’t come as close to fulfilling the brief as it could have done, I am proud of the where the game ended up. Plenty of people had fun playing it and were impressed by the level of functionality on display.
The art assets did end up looking less than cohesive but I am still happy with what the artists could achieve. I think it’s better to see original assets that may look a little janky rather than imported content from the marketplace for a project like this.

