ゲームのマスターデータ、何のツールで管理してますか?
Excel? GoogleSpreadsheet?
Airtableっていうめっちゃ便利なサービスがあります。
GoogleSpreadsheetをマスターデータに使ってる!とか、DBみたいに使ってるならAirtableめっちゃオススメ
— きゅぶんず (@kyubuns) July 8, 2019
制約が必ず列単位でつくから「この行だけ設定違う💢」ってなんないし
同じデータから別の見え方View作ったり出来るし
本当に求めていたものって感じhttps://t.co/JQMhyOQT5g pic.twitter.com/KkFd9UHzy7
マスターデータを作る
マスターデータを作ります。
「この列は数字だけ!」とかの制約がかけれたり、Filterがかけれたりしてめっちゃ便利!っていうかもはや普通にDBです。
Unityから読む
めっちゃ分かりやすいAPIのドキュメントがあります。
ApiKeyとBase(ドキュメントのID的なもの)もここから見れます。
https://airtable.com/api
GitHub : kyubuns/airtable.net
↑公式からForkして若干改造入れてあります。
AirtableApiClientディレクトリ以下をUnityに突っ込んで、Json.netもどこかから調達してきてください。
そしたら後はこれだけです。
using (var table = new AirtableBase(ApiKey, Base)) { string offset = null; var response = await table.ListRecords<Player>("Player"); foreach (var r in response.Records) { var player = r.Fields; Debug.Log($"{player.Lv} - {player.HP}"); } } public class Player { public int Lv; public int HP; }
1回の呼び出しに付き100行までしか取ってこれないので、1テーブルが100行以上になりえるときはこんな感じ。
string offset = null; do { var response = await table.ListRecords<Player>("Player"); if (!response.Success) break; foreach (var r in response.Records) { var player = r.Fields; Debug.Log($"{player.Lv} - {player.HP}"); } } while (offset != null);
注意点
The API is limited to 5 requests per second.
1秒間に5リクエストで制限かかるので、ユーザーが直接読むのには向いてなさそうです。
この制約がキツい場合はお問い合わせくださいって書いてあるので、有料プランだときっと上がるんでしょう。きっと。