空白雑記

暇つぶし

FGOのマスタ設計

シュヴァリエ・デオン(男でもあり女でもあると言われた英霊)と

アストルフォ(オルランドゥ伝説の騎士)

 

この2つのキャラクターはFGOのゲーム中で性別があやふやである。何故ならば、「嗜虐のカリスマ」という女性にのみ追加効果があるスキルは、デオンとアストルフォに対して効果を発揮しないが、「紳士的な愛」という女性にのみ追加効果があるスキルは、デオンとアストルフォに対して効果を発揮するからだという。

 

これは、ゲームの設計がガバガバな可能性が大きい。

 

ソーシャルゲームといわれる、サーバとデータの遣り取りをするゲームでは、ゲームのデータは「マスタ」と呼ばれる、エクセルで組まれたファイルが使われていることが殆どだ。実際に最後は別形式で出力したりするが、管理してるときはエクセル。

 

このマスタにはテンプレートがないので、自由に設計できる。だからマスタの設計はとても楽しい。FGOで起こっている男性女性判別がバグってる状況を、このマスタの設計視点から見てみよう。

 

まず、俺ならどう設計するか。男性か女性かを判別させたいなら、キャラクタの基本データを管理する「キャラクタマスタ」(FGOならサーヴァントマスタかな?)に、こういう風に性別のカラム(列項目のこと、性別って列ね)を追加する。

f:id:kuuhaku2:20161011031537j:plain

 

こんな感じにする。かなり省略した。

 

そして、スキルを設計する際に「性別カラムが1の時のみ」というスキルの仕様を設計する。こうすれば、女性にだけかかるスキルが作成できるし、スキルによって対女性効果が発揮したり発揮しなかったりということは起こらない。

 

しかし現実に起こっている。では何故起こったのか。

 

大前提として、「嗜虐のカリスマ」と「紳士的な愛」がそもそもからバグってるというわけではない。嗜虐のカリスマも紳士的な愛も、きちんと一般的な男性サーヴァントには効果がなく、女性サーヴァントには効果がある。

 

よって、上記のような、一意のカラムで性別を判別するような設計になっていない可能性が高い。

 

ぱっと思いつく設計としては

「性別カラムがない、または使っていない」かつ「スキル側で効果対象を指定している」

 

嗜虐のカリスマに「効果対象となるサーヴァントのID」というカラムがあり、その中に10001,10002,…と書かれており、また「紳士的な愛」にも同様のものがあり、そこが人為的なミスにより、一方にはデオンとアストルフォのIDが入り、もう一方には入らなかった。

 

この設計だと仮定すると、この設計は問題があり、間違っている。新キャラクターが増える都度、それを人力で全ての対象を持つスキルに入力し直さなければならないという問題だ。これは致命的だ。

 

「女性にのみ追加効果」という同じ文言だが、Fateの世界観設定により、エリザベートバートリのスキルと黒ひげのスキルが「あえて」「理由があって」「設計のことはわかってるけど」デオンとアストルフォに対して異なる挙動をしてたらごめんなさい。