Skip to content

Caveats and Limitations

The UnityId Field

The primary field in each table must be named UnityId. This field is used to name your ScriptableObject assets, and must be unique within a table. It is recommended that you give this field a descriptive identifier so it is easy to identify and interact with in the Unity editor. Review the following Airtable records for example UnityId values:

Airtable - Monster Data

Airtable - Stat Block Data

Airtable - Item Data

Important

The UnityId field is sanitized when it is used to generate the ScriptableObject asset's filename. Therefore, it is recommended that it only contain alphanumeric characters, ., -, and _.

String Sanitization

Airtable allows for arbitrary characters in base names, table names, and field names. GameDataSync sanitizes these values when using them for directory and file names by removing all spaces and converting any non-alphanumeric characters excluding ., -, and _ to their numeric representation.

Asset Imports

Each Airtable record is mapped to a ScriptableObject in Unity. As a result, the Unity asset database must import these new assets upon your first synchronization.

GameDataSync ensures that only new or moved assets are imported. While it may take several seconds (or minutes, if you're importing many thousands of records) the first time you synchronize your data, subsequent data synchronizations will take a small fraction of that time.

Airtable API Behavior

Rate Limiting

The Airtable API has a hard limit of five requests per second per base. Generally, GameDataSync can download roughly five tables per second as a result. If your bases contain many tables and those tables contain many thousands of records, it may take a few seconds to download all the data due to this limit.

Text Field Updates

While most fields in Airtable are updated synchronously between the Airtable UI and the Airtable backend that feeds the Airtable API, simple text fields are not. As a result, changing a text field and synchronizing to Unity rapidly, i.e. within a couple seconds, may result in an incomplete text value being returned by the Airtable API. Waiting a few extra seconds before synchronizing data resolves this issue.