嫌いなマスタ/FGOを例に
マスタの話のついでで、ここでアストルフォのIDは40301だ。これは分解すると「レア度4」「クラス03」「通し番号01」で4・03・01だ。
IDというのは、生成ルールを設けておかないと、次の新データに振るIDがわからなくなってしまう。なので、「レア度1桁」「クラス2桁」「通し番号2桁」という風に設定する。
レア度が2で、槍クラスで、1番目のサーヴァントなら「20101」だし、レア度が5でクラスが復讐者で33番目のサーヴァントなら「50833」というふうに。
稀によく見るマスタとしては、このIDが4003010001となっているものがある。これは、「レア度4」「予備の1桁の0」「クラス03」「天とか地属性とかの0」「性別の1」「予備の1桁の0」「通し番号001」だ。
予備の1桁とはなんだ、とこういう設計をする人に聞いたことがあるが、とりあえず0を入れておいて、何か使い分けたい属性などが追加されたときに1以降を振る桁のことらしい。
このIDとは、1つ前のスキル設定での仮設でも述べたように、他から参照するときのIDとなることがある。立ち絵画像のファイル名に使われたりする。例えばアストルフォの立ち絵画像の12枚目がstand_40301_12.pngといったように。
前述の5桁のID設計は、「桁が少なく参照時にヒューマンエラーが起きにくい」というメリットがある。後述の10桁のID設計は「桁が多く参照時にヒューマンエラーが起きやすい」というデメリットがある。5桁の入力を1万回したときと、10桁の入力を1万回したときで、ミス入力が何回発生するか。しかも、5桁には全桁に意味があるが、10桁には意味がない0が2回混ざる時。
短すぎる桁数には、限界があるというデメリットがある。たとえば、「レア度が4でクラスが剣のサーヴァントの100体目」は、このルール通りでは表記しきれない。それまで40099だったものが、いきなり400100になっていいものではない。だから、冗長な場合の例として、通し番号を3桁にした。だいたいそうなってる。
FGOのサーヴァントにおいて、「レア度」と「クラス」でくくった中の通し番号が3桁に突入するのはいつのことだろうか?
現在、サービス開始時に50体ほどいたサーヴァントは15ヶ月程たった今全部で137体だ。クラスは8つあり、ルーラーやアベンジャーは圧倒的に少ないので偏りがある。では、8で割って平均を出すと、18。一番多いキャスターが24体で一番少ないシールダーが1か。ていうかシールダーがいたな、9に振らないと。9種類ですね。とすると、137を9で割って平均が15、24はその1.6倍。じゃあ一番多いクラス(キャスター)は最大で平均の2倍までいくとしよう。
100/2*9、つまり総数が450体のとき、キャスターの総数が100を超える。
おお?近いな?いやいやまだレア度の区分がある。キャスターで最も多いレア度は星4の8体だ。数えてる時にソロモンくんがしれっと混じってる事に気づいてお前ガチャから出ねえだろと思ったけど計算やり直すのめんどいから無視。グランドアサシンの人は居ないじゃんか。あれ?なんでソロモンくんだけカードあるんだろう。まぁいいや。というわけで8/24、1/3まであると。じゃあ1/2まで到達し得ることにしよう。
結論。全体のうち、総数が900を超えた時、キャスターのレア度4が100体を超える可能性が生まれる。15ヶ月で90体ほど増えたのだから、1ヶ月で6体増えるとすると、127ヶ月後ほどに、1つのクラスが100を超えることがある。うん、10年後だね。いいんじゃないかな。
別に、クラスは8まで使ってて1桁じゃ危ないから2桁にしてあるんだから、14か94をキャスターの2枠目に使えば良いんだよ、100体目のキャスターは41401だ。
これはFGOの現状というデータがあるから5桁に収められたのかというと、そうじゃなくて、ざっくり肌感で設計するとこうなる。クラスは2桁だし、通し番号も2桁だと直感で思ったし、計算してみたらそれでよさそうだ。
実際、10桁作るやつは5桁にしようというと、桁が足りなくなったときとかが怖いとか、前例に倣うべきだといって10桁を譲らなかった。でも俺は5桁でいけると思う。10年後に100を超えたら、クラスのところに振るだけでいいと思う。その辺がよくわかんないんだよなあ。なんで同じ考えに皆至らないのかが。
FGOには天地人の属性があったり、混沌とかまた属性があったりするが、それをIDに入れてない理由もまた直感なのだが、後付で説明はできる。管理設計するうえで入れるべきではない、と思う。
参考にしたページ