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.
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
ScriptableGameEventsScriptable Object is created which containsEventHandlers 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 theScriptableGameEventsobject 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%.