モミキんのデータ構造
かまぼことかそんな名前の者です。
パズドラの絞り込み型スキル検索サイトモミジの「スキル、なんだっけ?」を作り始めるにあたり何よりも必要だったのが、どういうデータ構造にするか? という問題を解決することでした。
効果詳細の例
持続ターンや倍率、変換対象などの詳細で絞り込みをしたい以上、それらのデータを削る事は絶対できないわけですが、じゃあどんな項目を用意すれば全てのスキル効果を表現できるのかがぱっと想像できませんでした。
例えば、ブレススキルでは自身の攻撃力にN倍するもの、ランダムにN~M倍するもの、攻撃力とは無関係にXダメージ与えるもの、PTの属性火力を合算してN倍するもの、ブレス属性が指定されているもの、自身の主属性と同一の属性攻撃をするもの、単体相手のもの、全体相手のもの、特定属性の相手のみのもの…
色々な条件があり、正直いまだにどうまとめると本当に絞り込みたいデータを得られるのか分かっていない部分が多いです。
現状の構造
現在のスキル効果のデータ構造は結局以下のように落ち着きました。
現在(2019/11/2)のところこの表現で記述できないのは、ランダム発生スキルと変身スキルの変身先と固定形生成の厳密な生成位置や向きですかね。。(ランダム発生スキルは周回やランダンで利用するスキルでもないのでいいかと妥協しています
全部網羅的に説明するのは大変なのでちょっと分かりづらそうなところだけピックアップします。
- 対象ドロップ:変換の変換元や目覚め、ドロップ強化などで効果を加えられるドロップを指定しています。例えば全ドロップを強化という文脈では対象ドロップは回復含む6色を記述し、全ドロップをロックという文脈では妨害系ドロップを含む10色を記述しています。
- ベース火力:ブレス系スキルで倍率がかかる元となる源を指定します。自身の攻撃力であればSelf、PTの属性攻撃力であれば属性、PTのHPであればHPなどの指定をしています。また即時回復で自身やPT回復力依存の場合もここで指定しています。
- 倍率、固定量の1,2:これは基本的にランダムや恨みなどの効果量に幅があるものの指定に利用しています。通常は1だけ埋めて2に同じ値を挿入しています。例外的に固定ダメージを複数回飛ばすものだけ、固定量1に固定ダメージ量、2に回数としています。(実はここの検索をいい感じにする方法は現状、未実装です。。)サイトでの検索では最小倍率、最大倍率、最小固定量、最大固定量、という名前に置き換わっています。これのおかげで最小倍率 <= 倍率1かつ倍率2 <=最大倍率のレンジ検索ができるようになっています。
- 位置:当初は列生成の位置を指定するために用意したものでしたが、正方形生成やL字生成、果ては4隅生成とかいう謎生成の生成位置にまで使いました。列生成においては基本的に65盤面での生成位置を上下左右からN列目を例えば上N、下N、左N、右Nで表現しています。正方形などはもう少し自由な記述で左下とか右上とかそんな記述になっています。(厳密でシンプルな記法募集中)
この記事を書いていて、ブレスの対象も項目に加えればスキル効果を減らせるし検索もしやすくなるんじゃないかってふと思いました。変えようかな。
兎にも角にも、現状のデータ構造(効果詳細部)についての簡単な説明でした。