# Progression

**URL:** https://heroiclabs.com/docs/hiro/concepts/progression/
**Keywords:** progression, hiro
**Categories:** hiro, progression, concepts

---


# Progression

![Saga map progression in Dragon Mania Legends by Gameloft.]({{< fingerprint_image "/images/pages/hiro/concepts/progression.png" >}})

Progression is a versatile Hiro meta system allowing players to advance in various aspects of the game, such as skill trees or saga maps. It's unique within Hiro as it functions as a dynamic dependency tree to formulate intricate progression systems.

It enables the creation of progressions that are contingent on other Hiro meta systems, meaning players can only advance by meeting specific prerequisites like completing certain achievements, acquiring particular items, or reaching a minimum set of stats. Furthermore, progressions can serve as prerequisites for other progressions and offer [rewards](../economy/rewards/) to players upon completion.

## Customization parameters

All progressions and their configuration is done through a JSON definition.

The following JSON represents the customization parameters you can use to configure the default user experience for the Progression system.

```json
{
  "progressions": {
    "progression_1": {
      "name": "Progression 1",
      "description": "A progression item",
      "category": "generic",
      "additional_properties": {
        "some_key": "some_value"
      },
      "preconditions": {
        "direct": {
          "cost": {
            "currencies": {
              "coins": 100
            }
          }
        }
      },
      "reset_schedule": "* * * * *"
    },
    "and_progression": {
      "name": "AND Progression",
      "description": "An AND progression",
      "category": "generic",
      "preconditions": {
        "direct": {
          "progressions": [
            "progression_1"
          ]
        },
        "operator": 1,
        "nested": {
            "direct": {
                "achievements": [
                    "achievement_1"
                ]
            }
        }
      },
      "reset_schedule": "* * * * *"
    },
    "or_progression": {
      "name": "OR Progression",
      "description": "An OR progression",
      "category": "generic",
      "preconditions": {
        "direct": {
          "stats_min": {
            "level": 2
          }
        },
        "operator": 2,
        "nested": {
          "direct": {
            "currency_min": {
              "coins": 100
            }
          }
        }
      },
      "reset_schedule": "* * * * *"
    },
    "xor_progression": {
      "name": "XOR Progression",
      "description": "An XOR progression",
      "category": "generic",
      "preconditions": {
        "direct": {
          "stats_min": {
            "level": 2
          }
        },
        "operator": 3,
        "nested": {
          "direct": {
            "currency_min": {
              "coins": 100
            }
          }
        }
      },
      "reset_schedule": "* * * * *"
    }
  }
}
```

### Progressions

The JSON schema defines a `progressions` object which _must contain individual objects for each progression_ you wish to define in the system, keyed by id. You can configure as few or as many progressions as needed for your desired gameplay.

{{< table name="gdk.concepts.progression.progression-system" >}}

Each individual progression may define the following:

### Progression

{{< table name="gdk.concepts.progression.progression" >}}

### Preconditions block

{{< table name="gdk.concepts.progression.preconditions" >}}

