How it Works

Using Unity as Intended

DataMaster is built on top of Unity’s concept of ScriptableObjects.

ScriptableObjects are a flexible and performant way of storing data within Unity, and is heavily recommended by the Unity team. Unfortunately, ScriptableObjects can be a bit of a pain to organize and to use.

DataMaster adds structure and editor tools on top of ScriptableObjects to make them simple to create and use with minimal code. DataMaster organizes your data into Catalogs, which are like containers for your data. Then, DataMaster lets you to fill those catalogs with Catalog Items.

You can use catalogs for any type of data you want for your game. Examples include managing a growing list of RPG Items and their stats, enemy types, platformer level definitions, treasure chest loot tables, or really anything else.

Even better, because DataMaster is built on top of ScriptableObjects, you can include any data type within your catalogs. That means your data can include references to Unity prefabs, sprites, textures, enums, or simple integers and strings. You can even reference other catalog items.

Terminology

Catalog

A catalog is like a container for your data. The catalog lets you define what properties your data has. For example, a catalog of RPG Items might contain properties for an item type (weapon, armor, etc.), attack damage, required hero level, etc.

By structuring your data as a catalog, it allows you to easily understand and work with your data.

Catalog Item

A catalog item is a specific item definition within a catalog. For example, an RPG Items catalog might contain a catalog item named Broad Sword, or Health Potion. A catalog lets you browse all catalog items, as well as edit or create new items.

Catalog Item Database

If your game needs to access all items within a catalog, you can use a Catalog Item Database. DataMaster will automatically create and maintain a ScriptableObject for each catalog, filling it with all of the relevant catalog items. This allows you to use a single asset that you can drag and drop on to any script in your game without worrying about the dirty details.