Software projects
I've worked on several traditional software projects, mostly as assignments in various university courses. Some of the more interesting things can be found on this page.
2024
Pummel Party for the Nintendo Switch and Xbox One
I ported Pummel Party to the Nintendo Switch and Xbox One consoles. This involved implementing platform-specific functionality for online services (server browser, game invites, online connectivity), account management and controller management. Much of the game's general functionality was built around interfaces, so the console-specific logic could be built and plugged into the game (replacing the Steam-specific functionality) with relative ease.
The Switch port initially ran terribly, even on menus where not much was happening. This required a lot of profiling and performance fixes across the game to get it to run at a stable and acceptable framerate, and also to keep runtime memory usage low. The game needed to be ported across to using Unity's Addressables system, a process that took several weeks. In the end, this resulted in a smaller build size, reduced runtime memory usage, and faster framerates not just for the Switch, but for all versions, as they all share the same project/codebase.
The Xbox port didn't suffer from any major performance issues as it was developed after the Switch. Instead, the user account management on Xbox was the most difficult element, as the platform requirements around user accounts combined with the freedom available to users to sign in and out at any time introduced many edge cases and considerations that the game wasn't originally designed to handle.
2022
Pummel Party Mod Editor
I assisted in developing the mod editor and workshop tools for Pummel Party when I first started working at Framework Games. The editor is essentially a recreation of the Unity editor but built within the Pummel Party executable. The UI is built using Dear ImGui. Much of the foundation of the mod editor was already in place when I joined. I implemented several of the "Mod Actions" and "Components" that creators can use to add functionality to any minigames or boards they create using the editor.
I maintained and added features requested by community members to the mod editor through to mid-2024.
You can read more about the mod editor on the mod editor wiki I was tasked with creating.
2022
Interactive r/place 2022 3D Visualisation Using Unity
r/place (2022) was an event held by Reddit from April 1st to April 4th. Every user was able to change the colour of a single pixel in a large grid once every five minutes. Using python, I modified the released pixel data into a format that could be read quickly for visualisation in the Unity game engine. Instead of the flat image of r/place as it was presented during the event, each time a pixel changes colour in this program a new cube is placed in that location, showing highly contested locations on the board as tall towers. The cubes exist as particles created using the VFX Graph in the Universal Render Pipeline.
Pokémon GO Pokédex Web App
This is a single page application developed using Vue.js. Since Pokémon GO is constantly updating, I use a series of python scripts to pull data from various APIs and repositories online to make updating the site very easy. Most of the data is pulled directly from datamined game assets, so they are always accurate.
I developed this app as a simple and familiar way to view information about the Pokémon in Pokémon GO, including those that are yet to be released. It is based very closely on the style and structure of the Pokédex in the Pokémon GO app, with added information and all Pokémon unlocked.
I'm no longer hosting or developing this wep app.
2021
Strategy game prototype for UoN group final year project
I worked as lead developer and scrum master in a team of eight for my group software engineering FYP. The game is developed using Unity and the Universal Render Pipeline. Details about this project are intentionally lacking as it was developed for a company to potentially develop a complete game from.
VR Indigenous Learner Driver Trainer
For my individual final year project, I created a prototype VR application that aims to teach Indegenous adolecents the road rules. This should be to such a degree that they can use this knowledge to obtain their lerner drivers license. The app will run on Android phones and use a Google Cardboard headset or similar. It is built using Unity. Github.
Software quality tool
This is a command line program written in C++ to assess the code quality of a supplied C++ project. I developed the two metrics of "Usage of comments" and "Depth of conditional nesting" to be used in the program.
Google Cloud Architecture Assignment
The final assignment for the Enterprise Software Architecture course. This assignment consisted of three parts, the client, the server and a dashboard. The client would send a random number to the server via a Google Cloud Pub/Sub topic. The server would then calculate all prime numbers up to that number and send this to the dashboard. The Client and server were hosted on Google Cloud as Cloud Functions. The Dashboard was hosted on Google App Engine. Data was stored in a FireStore for persistance. The client, server and dashboard are created in python 3, with the dashboard using Flask. GitHub.
2020
Basic 3D engine using OpenGL
I worked in a team of four to create a basic 3D engine using OpenGL for a computer graphics course at UoN. It features a procedurally generated island with terrain texture blending, procedurally placed trees, animated humanoid character that walk around the surface of the island and a day night cycle with lighting. One person starts infected with a disease and appears in red, over time as they move around the disease spreads through close contact. The purpose of the project was to learn the fundamentals of 3D computer graphics and to use that to create a simulation of a disease spreading.
'FlightPub' flight booking website
I worked on the front-end of a prototype for a flight-booking website powered by React, Node.js and Redux. This was done as a group project with a team of six. As a team we designed the website and its features based on a vague set of user requirements.
2019
'ARt' high fidelity prototype
I worked as part of a team of eight to design and implement a protoype augmented reality system. This system would be built for the University art gallery to enhance the experience of those exploring the gallery. The protoype is built in the Unity Engine. GitHub.
Desktop Dragon
I made a simple Unity app that renders a dragon character that runs around your desktop. He can also be picked up and tossed around your screen. Information about the location and size of windows on the desktop is gathered from APIs provided by the Windows operating system. Colliders are placed along the top of windows for the dragon to stand on.
Connect4 AI using alpha-beta pruning
This command-line AI competed against the AI created by other students in the course, coming in 2nd place due to running out of time (each AI had a limited bank of time to decide it's next move within). The AI is written in Java and makes use of the negamax algorithm with alpha-beta pruning.
2018
Lecture-attendance recording android app
During the first semester of university we were tasked with creating an android app using MIT App Inventor that would be used to record student attendance in lectures. You can see the app on the google play store here.