テラスタルを考慮した PokéRank

はじめに

『ポケットモンスター スカーレット・バイオレット』は、株式会社ポケモンより明日(2022 年 11 月 18 日)から発売されるニンテンドースイッチ向けのゲームで、 ポケットモンスターシリーズの最新作である。 『スカーレット・バイオレット』では、メガシンカ、Zワザ、ダイマックスに続く新たな対戦要素として「テラスタル」というシステムが導入される [1]。 テラスタルを行うと、ポケモンのタイプが(「テラスタイプ」という各ポケモンに固有のタイプへ)変化し、技のダメージなどに影響を及ぼす。

テラスタルをうまく使うことでバトルを有利に進めることができる。 たとえば、いわ・あくタイプのバンギラスがテラスタルしてゴーストタイプに変化することによって、相手のかくとう技は効果なしになる。 自分のポケモンのテラスタイプはテラスタルするまで相手に分からないため意表を付くことができ、技や特性などとも組み合わせることで戦略の幅を広げることが可能である [1]。 テラスタルのシステムはこれまでのポケモンに見られないものであり、対戦環境で活躍するポケモンは今後大きく変化すると予想される。 このため、テラスタル環境で強いポケモンについて調べるのは重要である。 現在までに、テラスタルと相性の良いポケモンについて多くの考察が行われている [2], [3], [4]。

ポケモンの強さを分析するためのグラフアルゴリズム的なアプローチとして PokéRank [5] がある。 PokéRank 法は 2022 年 2 月に @masaka_programming によって提案された手法であり、 ページランク [6] を応用してポケモンの強いタイプを計算するものである。 ページランクを用いると、ポケモンのタイプに関する次のような考え方を上手く表現することができる。

  • 多くのタイプに有利(不利でない)なタイプは強い。
  • 強いタイプに有利なタイプは強い。
  • 強いタイプに有利な数少ないタイプは強い。

この記事では、テラスタルを考慮したタイプの分析ができるように PokéRank 法を拡張し、これを用いてテラスタル環境において強いタイプの検討を行う。 もちろんポケモンの強さはタイプのみによって決まるのではなく、技、特性、道具、育て方、バトル中の立ち回りなど様々な要素に影響されるが、 これらの要素を捨象したときのタイプの平均的な強さは PokéRank 法によって推定できると思われる。

はじめに、従来の PokéRank アルゴリズムからの変更点について述べる。 『スカーレット・バイオレット』ではポケモンのタイプのシステムが変更されているため、グラフの作り方に変更が必要である。 次に、拡張された PokéRank 法を4タイプからなる小さなモデルに対して適用し、手法の妥当性について検討する。 その後、18タイプからなる実際のモデルに対して適用し、強いタイプの組合せを調べる。 最後にまとめと今後の課題を述べる。

PokéRank 法のテラスタル環境への拡張

グラフ頂点の設定

通常の PokéRank 法では、グラフの頂点は 19*18/2=171 種類のタイプを表現する。 『スカーレット・バイオレット』では、これら元のタイプに加えて、各ポケモンが固有のテラスタイプをもつ。 この情報を表現するために、グラフ頂点の設定方法を変更する必要がある。 簡単のため、今回は次の仮定のもとで計算を行う。

タイプの定常的な強さは、バトルのどのタイミングでテラスタルするかによらず、
(1) 元のタイプ、および
(2) テラスタルするかどうか、テラスタルを行う場合テラスタイプは何か
によって決まる。

このとき、各頂点には元のタイプ(171 種類)とテラスタルの種類(1+18 通り)の情報を持たせればよい。 グラフの頂点数は 171+171*18=3249 である。

実際のバトルではテラスタルのタイミングは非常に重要と思われる。より現実的な仮定のもとで計算を行うのは今後の課題である。

辺重みの設定

通常の PokéRank 法では、グラフの辺の重み h は互いのタイプの「複合ダメージ倍率」の大小関係によって決められる。 具体的には次の式によって定められる。 h ( ( s 1 , s 2 ) , ( t 1 , t 2 ) ) = log 2 max ( g ( ( s 1 , s 2 ) , ( t 1 , t 2 ) ) , 1 / 8 ) max ( g ( ( t 1 , t 2 ) , ( s 1 , s 2 ) ) , 1 / 8 ) g ( ( s 1 , s 2 ) , ( t 1 , t 2 ) ) = max ( f ( s 1 , ( t 1 , t 2 ) ) , f ( s 2 , ( t 1 , t 2 ) ) ) ここで、 ( s 1 , s 2 ) , ( t 1 , t 2 ) はそれぞれ自分・相手のタイプを表す。 また、 f は攻撃する際のダメージ倍率を表す。 一方、『スカーレット・バイオレット』では、テラスタルによってタイプ相性とタイプ一致ボーナスが変化する。 この情報を表現するために、グラフの辺重みの設定方法を変更する必要がある。 先行プレイ映像 [7] などに基づく考察 [8], [9] から、『スカーレット・バイオレット』のテラスタルは次のようなシステムになるのではないかと推測されている*1

  • テラスタルしたポケモンがテラスタイプと同じタイプの技をくり出した場合、タイプ一致ボーナス x1.5 が付く。
    ただし、テラスタイプと元のタイプが一致している場合は、タイプ一致ボーナスは x1.5 ではなく x2 になる。
  • テラスタルしたポケモンが(テラスタイプと異なる)元のタイプと同じタイプの技をくり出した場合、 タイプ一致ボーナス x1.5 が付く。
  • テラスタルしたポケモンがダメージを受ける場合は、元のタイプではなくテラスタイプを用いてダメージ計算を行う。

これらの仕様を考慮するために、今回は素朴な拡張として辺重みの計算式を次のように修正する。 h ( ( s 1 , s 2 , s x ) , ( t 1 , t 2 , t x ) ) = log 2 max ( f ( s 1 , T ) × b ( s 1 , s x ) , f ( s 2 , T ) × b ( s 2 , s x ) , f ( s x , T ) × 1.5 , 1.5 / 8 ) max ( f ( t 1 , S ) × b ( t 1 , t x ) , f ( t 2 , S ) × b ( t 2 , t x ) , f ( t x , S ) × 1.5 , 1.5 / 8 ) b ( s , s x ) = { 1.5 s s x 2 s = s x S = { ( s x , - ) 自分がテラスタルを行う場合 ( s 1 , s 2 ) 自分がテラスタルを行わない場合 T = { ( t x , - ) 相手がテラスタルを行う場合 ( t 1 , t 2 ) 相手がテラスタルを行わない場合 ここで s x , t x は自分と相手のテラスタイプを表す。

計算結果

ほのお、みず、じめん、でんきの4タイプのみを考慮する場合

手法の妥当性を確かめるために、ほのお、みず、じめん、でんきの 4 タイプだけからなる小さいモデルで予備的な実験を行う。 この場合グラフ頂点数は 5*4/2*5=50 である。 みず、じめん、でんきは三竦みをなし、一方ほのおタイプはみず、じめんに不利である。 よって、「みず > じめん ≒ でんき >> ほのお」という序列ができると予想される。 また、みず・じめんタイプは上記 4 タイプの中に弱点を持たないため得点が高くなると予想される。

Julia を用いてページランクを計算するプログラムを作成した(pokerank.jl)。 50 頂点のグラフから Google 行列を構成し、 各タイプの得点を計算した(pokerank.csv)。 固有ベクトルの計算には 2.4 秒かかった*2

2.400986 seconds (1.90 M allocations: 99.549 MiB, 1.91% gc time, 99.96% compilation time)

得点の高かった上位 10 タイプを以下の表に示す。 得点の最大値が 100 になるように規格化している。 最も得点が高かったのは「みず・じめん/テラスタルしない」であり、 その次に「みず・でんき/テラスタイプみず」(98.1 点)、 「でんき・じめん/テラスタイプでんき」(75.3 点)、 「みず・じめん/テラスタイプみず」(71.1 点)が続いた。 最下位は「ほのお/テラスタルしない」(5.2 点)だった。

# タイプ テラスタイプ 得点
1 みず・じめん (なし) 100
2 みず・でんき みず 98.1
3 でんき・じめん でんき 75.3
4 みず・じめん みず 71.1
5 ほのお・みず みず 66.4
6 みず みず 66.4
7 みず・じめん じめん 61.9
8 みず・でんき でんき 56.1
9 でんき・じめん みず 55.4
10 ほのお・でんき みず 55.3
50 ほのお (なし) 5.2

各テラスタイプの平均点

各テラスタイプごとに、元のタイプが 5*4/2 = 10 種類存在する。 それら 10 種類の得点の平均をテラスタイプごとに計算した結果を以下の表に示す(ttas.csv)。 「みず > でんき > じめん > (テラスタルしない) > ほのお」の順に平均点が高かった。 テラスタイプほのおの平均点は他のテラスタイプと比べて 10 点以上低かった。

テラスタイプ 平均点
みず 54.8
でんき 45.1
じめん 40.3
(なし) 25.3
ほのお 6.9

手法の妥当性の検討

予想通りみず・じめんタイプが最高得点を獲得した。 また、各テラスタイプの平均点でも予想通り「みず > じめん > でんき > ほのお」という序列が見られた。 よって、今回のグラフの設定を用いて、テラスタル環境における各タイプの定常的な強さをある程度うまく表現できると期待される。

各テラスタイプの平均点では、みず、じめん、でんきの得点が 40〜50 点台に固まっており、 一方ほのおの得点は 10 点を下回っていた。 得点は単に順序を決めるのみならず、タイプの定量的な強さをある程度反映していると考えられる。

全 18 タイプを考慮する場合

前節の結果を踏まえて、この節では全 18 タイプを考慮した計算を行う。 この場合グラフ頂点数は 19*18/2*19=3249 である。 固有ベクトルの計算には 33.1 秒かかった。

33.080218 seconds (1.90 M allocations: 425.009 MiB, 0.72% gc time, 4.03% compilation time)

得点の高かった上位 30 タイプを以下の表に示す(pokerank.csv)。 最も得点が高かったのは「でんき・じめん/テラスタイプでんき」であり、 その次に「こおり・じめん/テラスタイプじめん」(99.0 点)、 「じめん・いわ/テラスタイプじめん」(95.53 点)、 「じめん・フェアリー/テラスタイプじめん」(95.51 点)が続いた。 なお、じめん・フェアリータイプのポケモンは前作『ポケットモンスター ソード・シールド』までには登場していない。 最下位は「ノーマル/テラスタルしない」(7.0 点)だった。

# タイプ テラスタイプ 得点
1 でんき・じめん でんき 100
2 こおり・じめん じめん 99.0
3 じめん・いわ じめん 95.5
4 じめん・フェアリー じめん 95.5
5 かくとう・じめん じめん 94.6
6 じめん・ひこう じめん 94.3
7 じめん・ゴースト じめん 94.2
8 じめん・あく じめん 94.2
9 じめん・はがね はがね 93.4
10 じめん・むし じめん 91.7
11 じめん・フェアリー フェアリー 91.3
12 じめん・はがね じめん 91.3
13 みず・じめん じめん 91.3
14 どく・じめん じめん 91.2
15 くさ・じめん じめん 91.2
16 でんき・じめん じめん 91.1
17 ほのお・じめん じめん 90.6
18 かくとう・じめん かくとう 90.3
19 かくとう・じめん でんき 90.2
20 じめん・エスパー じめん 89.8
21 いわ・フェアリー フェアリー 89.1
22 じめん・ドラゴン じめん 88.6
23 じめん・フェアリー でんき 88.4
24 みず・フェアリー フェアリー 86.9
25 くさ・フェアリー フェアリー 86.5
26 じめん・ひこう でんき 86.5
27 どく・じめん どく 86.0
28 ノーマル・じめん じめん 85.9
29 じめん じめん 85.9
30 みず・かくとう みず 85.9
3249 ノーマル (なし) 7.0

各テラスタイプの平均点

各テラスタイプごとに、元のタイプが 19*18/2=171 種類存在する。 それら 171 種類の得点の平均をテラスタイプごとに計算した結果を以下の表に示す(ttas.csv)。 最も平均点の高いテラスタイプはじめん(63.8 点)であり、その次にはがね(61.1 点)、でんき(55.8 点)、かくとう(55.7 点)が続いた。 テラスタルしないポケモンの平均点は 35.8 点だった。 唯一テラスタイプいわがこれを下回った(31.4 点)。

テラスタイプ 平均点
じめん 63.8
はがね 61.1
でんき 55.8
かくとう 55.7
フェアリー 55.7
みず 55.1
どく 47.8
ほのお 47.3
ひこう 45.9
ゴースト 45.7
エスパー 44.6
あく 44.1
ノーマル 43.3
むし 42.1
こおり 38.9
くさ 38.6
ドラゴン 37.1
(なし) 35.8
いわ 31.4

考察

全体的な傾向としてテラスタイプじめんの得点が高い。 これは、でんき、はがねタイプの強さに起因すると考えられる。 でんき、はがねは優秀な耐性をもつため得点が高く、それらの弱点を突けるじめんタイプの得点も高くなったと解釈できる。 実際、タイプ数を変えて計算すると以下のことが分かる*3

  • でんきタイプを除いた 17 タイプを使って計算するとテラスタイプじめんの平均点は 49.0 点に低下する。
  • はがねタイプを除いた 17 タイプを使って計算するとテラスタイプじめんの平均点は 58.2 点に低下する。

でんき、じめん、はがねタイプは元々強いタイプであるため、実際のテラスタル環境でも活躍しそうである。 ただし、今回の計算ではふゆうやふうせんを考慮に入れていないため、じめんタイプの強さが過大評価されている点に注意が必要である。

今回の計算で高い得点を獲得したタイプのポケモンを以下に示す。 マンムー、ドサイドン、ランドロス、ドリュウズなどは無難に強そうな感じがする。

  • でんき・じめん/テラスタイプでんき
    • マッギョ
  • こおり・じめん/テラスタイプじめん
    • ウリムー
    • イノムー
    • マンムー
  • じめん・いわ/テラスタイプじめん
    • イワーク
    • サイホーン
    • サイドン
    • ヨーギラス
    • サナギラス
    • ドサイドン
  • じめん・ひこう/テラスタイプじめん
    • ランドロス
  • じめん・ゴースト/テラスタイプじめん
    • デスマス(ガラルのすがた)
    • ゴビット
    • ゴルーグ
    • スナバァ
    • シロデスナ
    • デスバーン
  • じめん・あく/テラスタイプじめん
    • メグロコ
    • ワルビル
    • ワルビアル
  • じめん・はがね/テラスタイプじめん
    • ディグダ(アローラのすがた)
    • ダグトリオ(アローラのすがた)
    • ハガネール
    • ドリュウズ
    • マッギョ(ガラルのすがた)

テラスタイプいわは他のテラスタイプに比べて飛び抜けて得点が低い。 これは、相性不利のじめん、はがねタイプが上位にいることが原因と考えられる。

まとめと今後の課題

この記事では PokéRank 法を拡張し、『スカーレット・バイオレット』のテラスタル現象を考慮したタイプの強さの分析を行った。 テラスタイプじめん、でんき、はがねは平均的に高い得点を記録した。 これらのテラスタイプは実際の対戦環境でも活躍しそうである。 拡張された PokéRank 法は、タイプの定常的な強さをある程度うまく表現できると期待される。

ところで、この記事を書くために調べ物をしていたところ数時間前に全く同じことを行っている記事が出ていたことを発見した [10]。 先を越されてしまい悲しい。 この記事ではタイプ数を変えたときの検証も行っているのでどうか許してほしい。

以下に今後の課題を述べる。

  • テラスタルの動的な性質を考慮した分析。
    問題を簡単にするために、今回はテラスタルのタイミングを考慮しないで計算を行った。 しかしこの方法では、バトル中に柔軟にタイプを変化できるというテラスタルの動的な性質を考慮できていない。 そのため、たとえば「いわ・あく/テラスタイプゴースト」(36.6 点)、「みず・ひこう/テラスタイプじめん」(63.1 点)などが過小評価されていると思われる。 辺重みの設定方法を工夫したり、非斉時的過程を導入したりすると、より現実的な分析ができるかもしれない。
  • パルデア図鑑の反映。
    この記事では、171 種類のタイプがすべて存在するという仮定のもとで計算を行った。 その結果、じめん・フェアリーという現状存在しない複合タイプが上位に来てしまった。 また、全てのポケモンがテラスタル可能という仮定で計算しているが、この仮定が成り立つかは疑わしい。 たとえば、ヌケニン(むし・ゴースト)がでんきタイプにテラスタルできるのかは不明である [11]。 パルデア地方に存在するタイプのみを使って計算するのは今後の課題である。
  • 特性や道具を考慮した分析。
    今回は純粋にタイプ相性のみを考慮し、ダメージを変化・無効化させる特性や道具は考慮しなかった。 しかし、実際のバトルではこれらも大事な要素である。 特に、ふゆうを考慮した計算を行うのは、テラスタイプじめんのより現実的な評価を行うために重要なことと思われる。

更新履歴

  • 2022-11-17: 公開、少し修正、プログラムに関する説明の追加
  • 2022-11-18: 少し修正、参考文献の更新
  • 2023-04-02: Document ID を追加

Permanent ID of this document: 0df13fa25b31b15976d201b955fea3f4

脚注

*1: Washington Post Gaming の動画内でこの仕様になると明言されている訳ではなさそうだった。
*2: このプログラムでは Google 行列の全固有値と固有ベクトルを計算しているが、実際には最大固有値に対応する固有ベクトルだけを計算すればよいので、ここまでやらなくてよい。
*3: この系統の比較を行う場合は、最大得点が 100 になるように規格化するのではなく、得点の和が 1 になるになるように規格化した方が良さそう。

参考文献

[1] 株式会社ポケモン (2022 年 8 月 22 日). 「「テラスタル」をバトルで使いこなそう!」. 『ポケットモンスター スカーレット・バイオレット』公式サイト. https://www.pokemon.co.jp/ex/sv/ja/battle/220822_02/, (2022 年 11 月 17 日閲覧).
[2] アズマビ (2022 年 8 月 14 日). 「【ポケモンSV】テラスタル考察」. note. https://note.com/azumabi/n/n3c98c35d1de4, (2022 年 11 月 17 日閲覧).
[3] しゅふぁ (2022 年 10 月 6 日). 「【ポケモンSV】テラスタルの仕様や相性の良いポケモン考察してみた 【めざパ再び?】」. クレイジーポケモンメディア†APPDATE†. https://app-date.net/terastal/, (2022 年 11 月 17 日閲覧).
[4] バンビー (2022 年 11 月 19 日). 「【天才?】考察レベルが高すぎる「視聴者考案の最強テラスタル」を紹介!」. YouTube. https://www.youtube.com/watch?v=GTqRBfZ54Oo, (2022 年 11 月 17 日閲覧).
[5] @masaka_programming (2022 年 2 月 6 日). 「ポケモンの最強タイプを全力で考える【グラフ理論】」. Qiita. https://qiita.com/masaka_programming/items/503eaa2c1fa776dfdb19, (2022 年 11 月 17 日閲覧).
[6] Page, Lawrence and Brin, Sergey and Motwani, Rajeev and Winograd, Terry (1999). The PageRank Citation Ranking: Bringing Order to the Web. Technical Report. Stanford InfoLab. http://ilpubs.stanford.edu/422/
[7] Liao, Shannon (2022 年 10 月 21 日). “‘Pokémon Scarlet’ offers a new twist on the franchise: Freak sandwiches,” Washington Post. https://www.washingtonpost.com/video-games/2022/10/21/pokemon-scarlet-hands-on-impressions/
[8] たなかずき (2022 年 10 月 24 日). 「テラスタルの仕様が海外の先行プレイで判明したらしいのでそれをまとめた情報をペイントツールでまとめてみた」. Twitter. https://twitter.com/in21908312/status/1584465787347423234, (2022 年 11 月 17 日閲覧).
[9] ビエラ (2022 年 10 月 28 日). 「【ポケモン対戦がヤバいことに...泣】海外の先行プレイで新たに判明したテラスタルの仕様がエグすぎたので徹底解説します【ポケモンSV ビエラ スカーレット・バイオレット】」. YouTube. https://www.youtube.com/watch?v=htkuhFXP5NQ, (2022 年 11 月 17 日閲覧).
[10] yb3 (2022 年 11 月 17 日). 「テラスタルを考慮したタイプの組み合わせの優秀さをPythonで計算する」. Zenn. https://zenn.dev/shugo/articles/tera_type_combination, (2022 年 11 月 17 日閲覧).
[11] ビエラ (2022 年 10 月 30 日). 「テラスタル×ヌケニンやばくねWWWWWとなっているそこのあなたへ」. YouTube. https://www.youtube.com/watch?v=qaF42OgEshg (2022 年 11 月 17 日閲覧).