Brief Overview: Disc-Go is a couch co-op party game developed by students on Staffordshire University's '1-Up Scheme' internship. Battle against your friends or AI in multiple game modes and maps, using your disc to create havoc!
During the project I had the role of Lead Programmer/Technical, in which it was my responsibility to collaborate with the production team, design team and art team to ensure we had a fun a polished project by the end of 6 weeks.
As well as my responsibilities as Lead Programmer, I also developed the projects AI systems (and more), allowing for players to engage a challenging yet fair opponent.
Nominations: Disc-Go has (so far) reached the shortlist for the TIGA Awards best social game category!
Technologies Used: Unreal Engine 5, Behaviour Trees, Microsoft Teams, Miro.
Duration: 6 Weeks (Mon-Wed)
Role: Lead Programmer
Objective: To create a fun and engaging couch co-op game which could be taken to events and played at exhibitions with drop in and drop out features.
Gameplay: Select one of Disc-Go's game modes and fight against your friends or AI using the dual stick controls. Try to have the most points by the time the game's timer runs out to avoid the frantic overtime.
Disc-Go has multiple game modes, and players in each mode. To allow for these modes, we needed multiple different AI behaviors and behaviour trees. I designed, set up, and implemented the majority of the functionality for these trees and (ai) modes.
Zone Mode:
In zone mode, the player's objective was to keep the ball on the opposite side of the arena, and while it is on the oppositions side, to collect points which spawn in your half of the arena. To have smart, fun AI we needed to allow the AI to 'understand' the rules of the game, and be able to respond events accordingly.
For the zone mode AI, the main difference in behaviour depends on which side of the arena the ball is on. If the ball is on the AI's side, the AI will attempt to get behind the ball/launch it into the opposition's side of the arena to start the spawning of points.
If the ball was on the opposite side, each AI would try to get points which were close to them, but far from the other AI, allowing them to effectively spread and collect points. At least one of the AI would also attempt to stay relatively close to mirroring the ball on the Y axis of the arena, so they would be in a good position to return the ball.
For fairness, we added some randomness to the accuracy of the AI's shots, as well as added small (not noticeable to players) delays to their decision making process, to make them more accurate to a normal player. This led to an AI which was a challenge for players but not impossible to beat.
Heat-seeker mode:
In the Heat-Seeker mode, the player's objective is to get the (heatseeking) ball into the opponents goal. The ball's target will be the opposition's goal of whomever last hit it (if team purple hits the ball, or the ball hits the back wall of team purples half of the arena, the ball will heat-seek towards the orange team's goal).
For this mode, to be competitive, we focused on making the AI work well as a team (even with the player). To do this we assigned 'roles' for the AI, with one AI acting as the goal keeper, and one as the attacker. If a player joined the team of an AI, the AI would automatically become the 'goalkeeping' version, as we believed the player would prefer to attack.
The goal keeping AI keeps relatively close to the goal, moving slightly further away from the goal when the ball is further away, and fires its disk at the ball whenever it is coming towards the goal (aiming to shoot it off course, calculating 1 bounce ahead). The AI also positions itself between the goal and the ball to block the ball with its body.
The attacking AI was relatively simple, trying to bounce the enemies goal keeper out of the way and touch/hit the ball as much as possible to keep it going after the enemies goal.
Overall, the AI for this mode is (in my opinion) extremely fun to play against, challenging, and fair, with players always shouting and having fun fighting the AI.
During the development of Disc-Go, I was the lead programmer for the Disc-Go team. Working alongside the production team, Designers, Artists it was my and my team's job to ensure the games vision would be achieved in code.
Throughout the project I maintained short daily stand-up meetings, keeping track of each team members progress as well as working with the artists and designers to make sure we had everything we need to reduce roadblocks.
I ensured each team member was working efficiently, and not getting stuck on one system for too long, providing hints, coding and debugging help.
Kept the Microsoft teams task list up to date, making sure team members efforts were logged.
Participated in lead meetings with the production team, ensuring that members could be moved between teams as needed.
TIGA Award Shortlist