top of page

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
image.png
Abilities Autopopulator
image.png
Abilities Search
image.png

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
image.png
image_edited.jpg
Player Abilities Script
image.png

Lessons Learned

image.png
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.

image.png
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.

image.png
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.

Copyright © 2023 ASHTON MCKENZIE - All Rights Reserved. 

Email

Connect

  • Youtube
  • Twitter
  • LinkedIn
bottom of page