Feathered Fugitive

Feathered Fugitive is a third-person 3D game played on PC with either a keyboard and mouse or controller. In this game, you are a chicken on a farm plotting your es- cape. You will need to gather a number of keys through a series of challenges and exploration, unlock the electri- cal box to turn off the power to the gate and make your grand escape, all the while farmers and their dogs try to stop you.

Game Manager

The game manager uses the observer design pattern. The goal of the game manager and other managers is to ensure there is a single point of communication between classes to reduce dependencies

UML of Observer

AI

The AI system mainly consists of 3 behaviour trees (Farmer, Dog and Tractor), these utilize actions to create their Behaviours. They also link to a Detector which is used for applying the constraints used to find the chicken. All enemy objects are listed in the AIManager which controls the overall strategy of all the AIs through its logic and that of ChokePointDetector. As the AIManager triggers events they are notified to the GameManger, also events of the GameManager are used to alter certain behaviours of this script.

AI UML diagram

Cameras

The cameras rely on the CameraSwitcher script, this is a script which holds all the Cinemachine cameras and is in charge of switching them out for the different views, i.e. looking behind and the regular camera. LookBack is a script that takes advantage of this and notifies the GameManager on what it does, in turn triggering the AimUI and the PlayerShootEggs. There is another script which manipulates the cameras called CameraControl, this is in charge of looking up, it will lower the position of the chicken on the screen so you can see more above you.

Camera UML

Tutorial

Interactables

Interactables work by a script on the player which raycasts a certain distance in front of the player and checks for obstacles which contain IInteractable every time the interact button is pressed. If such an object is present it will go and trigger the interaction.

UML for Interactables

Prompts

Within the game there are prompts, these are text boxes that are displayed above some interactables when you come into range. They work by taking the world coordinates of the prompt object and translating it into 2D coordinates for the HUD, at which point it will instantiate a text prefab on these coordinates.

Prompts UML diagram