I'm a passionate game developer hailing from Perth, Western Australia. My fascination with games dates back to my earliest memories, where I found joy in understanding how they worked. This curiosity led me to delve into modding strategy games like Hearts of Iron IV, until my encounter with Unreal Engine 5 in 2021 sparked a newfound inspiration. Through self-guided learning during Unreal Engine 5's early access phase, I unearthed my innate passion for game development.
Joining Liquid Donkey Games in 2022 marked the beginning of an enriching journey with "Folklore Hunter," a horror game where I transitioned from a generalist junior role to project lead by 2023. Through my time working on Folklore Hunter, my proficiency in Unreal Engine and C++ flourished, shaping me into a seasoned developer. While my expertise primarily lies within Unreal Engine, I thrive on acquiring new skills, adeptly navigating various applications and coding languages.
Currently, I am pursuing a Bachelor of Science at the University of Western Australia, studying computer science to deepen my theoretical understanding. If I'm not hard at work on a professional project, I can be found experimenting in personal projects, playing video games or go-kart racing!
I have developed an expansive and dynamic class-based inventory system featuring intuitive drag-and-drop functionality, all contained within a component. Within this system, each inventory slot is equipped with a unique class, allowing the seamless integration of new items into the game with remarkable ease. Moreover, to enhance the overall gaming experience, I've incorporated a sophisticated network prediction system. This system effectively eradicates any visible latency and eliminates packet loss associated with inventory mechanics. This achievement is made possible through the implementation of a buffer, ensuring the smooth replication of the entire system while maintaining optimal performance.
A significant aspect of the game revolves around a rewarding progression system, where players can level up and unlock new weapons and equipment. To ensure that players can seamlessly resume their progression after exiting the game, I've developed a robust system for saving and loading all their in-game progress that has significant advantages over Unreal Engine's "SaveGame" system.
The pipeline I've implemented involves storing all user data on components within the "Player State." Each of these components contains members that are saved into a JSON file, which is then encoded and securely stored on disk. Some variable types cannot easily be serialised, such as JSON objects and certain structures. For these instances, I created a way to execute custom serialisation functions which are implemented seamlessly using interfaces.
This approach facilitates the effortless serialization and deserialization of any type of data while also removing the need to create new variables for any new data types; allowing for infinite scalability. Additionally, this method of serialisation also serves as an effective deterrent against save-game editing, as each data type is stored in an encoded JSON file; a notable improvement over Unreal Engine's default system.
I've designed a system that leverages the reuse of story content to generate replayable experiences through randomized gameplay elements. The process involves the generation and replication of various objectives for all players. Once players load into a level, these objectives persist, allowing players to track their objectives even across multiple levels.
To enhance the replayability factor, players have the ability to pick up items with semi-randomized data, ensuring a fresh and unique looting experience in every playthrough. This approach allows designers to recycle fundamental elements while crafting a completely distinct experience each time the game is played. The successful implementation of this system required an intimate understanding of replication and asset management.
During my time on Folklore Hunter, I took charge of designing nearly all the in-game playable levels. Among my responsibilities was orchestrating a specific sequence of player actions, despite the inherent non-linearity of the genre. This involved guiding players by utilising landmarks and points-of-interest to ensure they hit certain beats in the intended order. To achieve this, a significant amount of planning and testing was required.
Furthermore, an important aspect of level design involved populating and decorating the environments. This is highly important as players will quickly become frustrated and bored if their interest isn't peaked on a frequent basis. A balanced population of major and minor POIs throughout each level was paramount to maintaining engagement, and as such a multitude of maps were designed and tests conducted in order to minimise what I called "time-between-content".
To streamline this process, I employed a range of custom-built tools, enhancing efficiency in creating a visually compelling and immersive gaming experience.