The following is a breakdown of my work on Ransacked, an online co-op rogue-like with RTS/MOBA controls where you control a squad of space bounty hunters. The game is meant to played over multiple runs, in the traditional rogue-like style, with dozens of modifying elements working in tandem to create a unique experience each run.
Ransacked is built with an Entity Component System framework that I created called Provence ECS. All the logic is broken down into systems that communicate with a pub-sub style event system.
Lots of work has been put into decoupling Provence from Unity, especially serialization, it has been great, and a really wonderful learning experience.
It's a pretty simple framework, that is constantly growing.
In addition to the logic, Provence includes an UI library I constructed that piggybacks on Unity's UI Toolkit. I'll discuss it more in the Tools section of the breakdown.
I wanted to make note of the architecture because I will be referring to a lot of entities as units throughout the breakdown. They aren't objects in the Object-Oriented sense, but rather a collection of the same base components, and can vary greatly and grow from these base points. Think of it more as a desired outline of an entity.