Summary

Personal Highlights

Video

Project Description

Star Stable Online is my first job as a freelancer. I was brought onto the team to stand-in for a senior gameplay programmer going on leave, and finish off the project she was working on. It was intimidating to have that kind of responsibility on me, but Yvonne did a wonderful job documenting the project and answering questions for the month she was still working before going on leave. The focus of the project was to refactor how the inventory system worked on the C++ side, and to change how it got stored in the SQL database the game servers use to store player state. Essentially, each inventory space had historically been stored in a two dimensional array, using an ID to identify “bags”, and another for each slot in each bag. Multiple bag IDs mapped to the same inventory space. To make it easier to add more inventory slots and more inventory spaces, this was changed to use a single ID per space, simplifying a lot of the server and client code when working with inventories. I had to adapt quickly to the custom tech stack at Star Stable Enterainment, being brought in on August 2023 and delivering it on February of 2024. This meant migrating the old SQL tables to the new flat array structure, changing player registration so their initial items get placed correctly in the new table, updating internal tools to correctly account for mixed scenarios where one database had migrated and another had not, and other related services which the gameplay team doesn’t have ownership over, talking to the relevant teams and making sure they got to review my changes and provide feedback.

Afterwards, my work on that refactor was used as the basis for expanding player storage. Player storage had been limited by a UI layout that required a lot of manual placement of UI elements, part of it caused by how the bag ID system made it difficult to modify the number of slots in an inventory space. Now that expanding the number of slots is easy on the code side, I worked on trying to make it easier on the UI data side. I specialized some UI classes to handle paged inventory systems, so each page can have a set number of slots to display, and each paged inventory space has a number of pages. The slot UI elements no longer have to be placed individually, and only one pages’ worth of slots actually exist, as they are reused between pages to improve performance and memory consumption. This nearly doubled the amount of player and horse equipment our players can store, and increased their pet storage more than ten fold. The content team and the company was very happy with this, as players were having trouble engaging with new content because it would mean they’d have no place to store their new items. Now, adding more space has become trivial, and a similar approach based on what I built was used to expand the storage space given to players for their hairstyle and makeup items.

There have been a lot of challenges while working on this, mostly related to mobile platforms that I had no experience with before this job. The internal tools and processes to get a development build onto a device hadn’t really been fleshed out when I had arrived, and I pushed to try to define that and make sure everyone on the gameplay team can deploy and test onto at least one mobile platform. This is especially necessary for UI work, as mobile has very different requirements from a standard PC keyboard and mouse setup. Planning has also been a big challenge while at Star Stable, as the company is trying to figure out a way to keep their weekly release schedule going, and to improve internal tools to actually make meaningful weekly releases possible. I’ve tried to teach what I’ve learned about that and offer criticisms and feedback when appropriate so the team and the company continue to improve. That the company renewed my contract way beyond the originally planned timeline during which Yvonne was on leave I think speaks to the fact that they were very happy to have me on board and providing my programming knowledge and skills to the company.