Tool

The Usual Suspects

year
2020
ABOUT THE PROJECT

The Usual Suspects is a handy little repo I made that was like a good time investment; it keeps paying dividends. It contains lots of things I found myself rewriting for every project. They range from simple inspector tools, like Serialized Dictionaries, Read-Only fields, Interface fields, etc, to full-on systems, like a generic save system base, a custom pooling framework, an Unreal-inspired damage/health framework, and (quite a bit) more.

DOWNLOAD

How It Creates Value By Recycling It

Time is valuable. But if so, why spend time re-coding systems you've already coded? I've asked myself that question, and couldn't find a good answer. This motivated me to think: what could my team have done with the time they spent re-coding systems?

Turns out a lot. Quite a lot.

On average, my team spent 2 full sprints per year-long project coding the "basics" for the game. This includes menu functionality, basic player movement, settings functionality, basic health systems, etc. That amounts to 8.3% of a year-long project's lifetime.

Thus the idea for this repository was born. I noted down what systems I remembered coding more than twice, and what things I frequently wished were faster/easier. After that, I spent a week coding these systems and modules one final time.

How It Impacted Projects

It's been roughly two years since the creation of this repo. It has since received various expansions and improvements, primarily driven by my own experiences with the tools. Here's how they've helped me, my team and other users so far:

  • It saved features from the chopping block by reducing the amount of time necessary to get the "basics" up and running, and allowing programmers to focus on more valuable tasks.
  • It allowed for larger-scoped games and more polish in game jams by minimizing the time spent setting up menus and other non-essential functionality.
  • It allowed for faster prototyping and validation of new projects by providing programmers with out-of-the-box solutions for commonly encountered problems.
  • It allowed for higher designer productivity and reduced errors by providing various inspector extensions that make it easier for programmers to create components and ScriptableObjects that are easy to use and understand.