Game Design
Trials of the Aisles
Project Status: Active Development
Project Type: Indie project
Project Timeline: 5 Months
Software Used: Unity
Languages: C#, Unity ShaderGraphs
Primary Role(s): Project Manager / Tools Programmer / In-Engine Programmer / Designer
Collaborators: Kien Ho, Lucas Zacaria, Sarah Chambers
About ToTA
Project Description:
Create an Ability database and developer tools that allow designers to swap out abilities quickly, update the database and test things quickly
Design Goals:
1. Make the Interface easy to navigate and interact with.
2. Have all of the database update automatically when scriptable objects are created
3. ensure that the code has minimal dependencies while it interacts with larger systems
Ability Database:
The Ability Database was the most challenging task on my list, With the third redesign and some feedback on game programming architecture, it was designed with an MVVM (Model, View, ViewModel) mindset in terms of architecture, wherein I created a scriptable object which would contain the abilities and all their subfunctions to be later stored and retrieved by the team for whatever they may need them to do, two benefits from this where that I was able to create editor tools that could easily access array number or subfunction. However because it was my first time designing a tool this complex, I made a few mistakes and would love to come back to this and redesign it with more efficiency.
Things I've learned:
-
Scriptable objects are a great tool, but you can become overdependent on them if you're inexperienced. Many of the larger systems that were contained within unique SO's could have been broken down into types of abilities that could be toggled and all contained within a greater script.
-
Editor tools are extremely helpful to designers with less experience in engine
-
Creating tools that are useful to a programmer and a general designer are very different things, tooltips can help offset some of that challenge.
Player Database Script

Abilities Autopopulator

Abilities Search

Player Abilities and Tools
Pairing off of the database, I created a system that would allow the player to change their abilities after defeating the boss, this could be broken down into a few major systems as well as some tools for the team.
Ability SO:
-
The primary container for what an ability is, stores data that would define a function of an ability and gets broken down into subvariants, overall serves as the building block that can be slotted into larger subsystems
Player Abilities:
-
The player starts with two abilities when challenging the first boss to teach them, the primary gameplay loop, from a functional point, the abilities script will get reference to the index number from the database and pull the ability SO into the slot, overriding and replacing any previous values, this in turn will also update the UI to provide player feedback.
Post Battle Ability Switch:
-
Every Boss has two pre-assigned abilities that can be unlocked upon killing them, when the Boss has been defeated, players will gain access to them, allowing them to choose between keeping their current abilities or changing them out.
Developer tools:
-
Because I was in charge of programming and implementing all ability functions and subfunctions and designing them, I wanted to make my and the other designer's lives easier for testing, so I created a developer tool that allows the designer to:
-
Pick a slot that you want the ability assigned to
-
Search the database for the name or type of ability
-
Swap out the selected ability quickly without hassle
-
Player Ability UI
Post Battle Skill Selection


Player Abilities Script

Lessons Learned

Custom Editor Tools
Through the development of custom editor tools like the Player Abilities Script I’ve learned the importance of creating efficient systems for rapid testing and iteration.
These tools have not only streamlined our development process but also allowed us to quickly adjust parameters and test different scenarios, leading to a more polished and balanced game.

Creating a Database
The creation of the Ability Database has taught me the value of having a central repository for managing game elements.
The ability to search and modify abilities quickly has significantly improved our workflow. Moreover, the Autopolator feature has demonstrated how automation can save time and ensure accuracy.

Managing a team Remote
Using Discord to manage a team remotely has been an interesting and eye-opening experience. It has emphasized how crucial it is to have efficient collaboration tools and transparent communication when working remotely.
Despite the physical distance, we’ve worked together efficiently, made collective decisions, and kept the project moving forward.