FactoRX


Project Type: Video Game

Project Duration: 5 months

Software Used: Unity

Languages Used: C#

Platforms: PC, Web

Role(s): Programming, Design, Art


FactoRX is an arcade style reimagining of the factory builder genre, incorporating bullet hell elements to create a fast-paced, action-packed gameplay experience.

Avatar
Avatar
Avatar

FactoRX was created as an individual project by myself.

Some of the more interesting parts of the project’s architecture are:

  • Scriptable Object Event System:

    FactoRX features a Scriptable Object based event system inspired by Ryan Hipple’s Unite Austin 2017 talk. A ScriptableGameEvents Scriptable Object is created which contains EventHandlers for game events, such as points being scored or lives being lost. Any game object that needs to invoke or subscribe to these events can be provided the ScriptableGameEvents object in order to do so. This pattern allows for communication between systems while avoiding tight coupling.

  • Modular Interactive Game Objects:

    I took a highly composable approach to interactive game objects. I created components for basic iteractive behaviours between the player and game objects, such as picking up/putting down objects and rotating objects. These components could then simply be added to objects to give them the desired functionality, allowing new objects to quickly be composed from these existing behaviours. The modular approach also allowed new behaviours to be added with minimal friction.

  • Scriptable Object “Brains”:

    The extraction of behaviours into Scriptable Object “brains” as discussed in Richard Fine’s Unite 2016 talk was used in the implementation of many systems across the game. Creating a simple component that handles the behaviours generic across all objects of its kind and extracting the specific behaviours into Scriptable Objects was very effective in creating highly extensible systems.

  • Level Up System:

    Level up rewards were defined as Scriptable Objects. Each reward was given a weighting for how frequently it should be offered and a pool of all available level up rewards was created. When the player levels up a weighted random selection of three elements is taken from this pool as the reward options the player can choose from for that level up.


FactoRX was the final project for my BSc Computer Science degree, achieving a grade of 77%.