Adding a field value to a stat rule

This topic describes how you should usually add a field name, rather than a field value, to a stat rule.

The event value is added to the stat name

Stat templates are powerful and flexible but can sometimes produce unintended results if they're not properly configured. Stat templates create variable stat paths, or stat instances. Stat templates result in stat names based on variables that are derived from the name and value of selected fields in the source event. This is how you might capture something like how much gold a player earned in each map.

Not only are event names added to the stat name, but the event values are as well. This can often produce confusion and unintended outcomes.

Example of a single stat rule

Suppose your game sends an event named GameEnd. It has an int field named Map and an int field named Gold.

To capture the high score by map by using a single stat rule, you'd give the stat a name, like GoldByMap, and add a Map field to the stat rule. In this example, the Map value is a numeric ID.

Your parameter (the field that contains the value you want to increment the stat by) would be the Gold field on the GameEnd event.

Suppose your game sends a GameEnd event to Xbox services. The event's Map field value is 1. The Gold field value is 100. The result is that the stat is written to the stat path: GoldByMap.Map.1. The new value for this stat path is 100.

The following table shows what we have so far.

Item Type Notes
GameEnd An event Sent by your game to Xbox services
Map A field on the event An int
1 int The value of the Map field
Gold A field on the event An int
100 int The value of the Gold field

The stat path has the parts that are shown in the following table.

Item Type Notes
GoldByMap.Map.1 A stat path The value of this stat path is 100.
GoldByMap A stat name N/A.
Map A stat rule A numeric ID.

If the next event comes in with a Map value of 2, the Gold field from that event is added to that new stat path: GoldByMap.Map.2.

Suppose that the Gold field on the event has the value 200. We would now also have what's shown in the following table.

Item Type Notes
GoldByMap.Map.2 A stat path The value of this stat path is 200.

This way, you can keep stats values separate, without needing to define a stat for every Map.

Example of mistakenly adding a field name rather than a field value to the stat rule

Using the previous example, let's see what bad results happen when you also add the Gold field name to the Map stat rule, instead of adding just the Gold parameter value. This would result in the following stat name: GoldByMap.Map.1.Gold.100.

Notice that the value of the gold earned by the player (100) is also in the name of the stat. This means that a player earning 100 gold on Map 1 will get a value of 100 for this stat: GoldByMap.Map.1.Gold.100.

If a player earned 101 gold on that map, this configuration results in the following, which is a different stat name: GoldByMap.Map.1.Gold.101. The result is that these stats would only increment whenever the player earns the specific amount of gold that's defined in the stat name, which is probably not what was intended.