あいさつ
SlayTheSpireプレイヤーのみんなごきげんよう。
今日はA20の挑戦に疲れ果てたみんなのために、ちょっとだけ為になる知識を教えようと思う。
ここでは以下の内容を、プログラミングに馴染のない人でもわかるように、ざっくりと説明していくつもりだ。
- 疑似乱数とは何か
- SlayTheSpireの乱数の仕組み
その代わり、一部正確さ厳密さに欠ける部分はどうしても出てきてしまう。
正確な知識が必要な場合は、本記事の内容を足掛かりとして各自調べていただきたい。
はじめに
こんなことはないだろうか。
A20で強いデッキが出来上がった。これは勝利間違いなしだ。Act3で道すがら出会ったのはレプトマンサー。このデッキなら間違いなく勝てる。
しかし1ターン目にアタックカードが来ない。2ターン目もだ!
君はなすすべもなく敗北する。
「悪かったのは運だ、プレイングはまったく悪くない、やり直そう」と、ゲームを中断して戦闘開始前からやり直す。しかし手元に来るカードはまったく一緒だ。何故だろう?
ランダムなはずなのになんで毎回同じカードが手札に来るの?ママは僕のこと愛してくれていないの?あの男の人は誰だったの?
ゲームにおける疑似乱数活用の基礎
例え話から入ろう。
ここに3つのトランプの山、X, Y, Zがある。
便宜上トランプの各カードには1~53の番号が振ってあるものとする。
トランプの山をそれぞれ上から3枚めくると
X: 23, 7, 6
Y: 18, 35, 26
Z: 12, 14, 7
となっている。
その隣に9つの生物が3匹ずつ3列に鎮座している。
1列目: ガーディアン、スライムボス、ヘクサゴースト。
2列目: ブロンズオートマトン、チャンプ、コレクター。
3列目: 目覚めしもの、デカ&ドヌー、タイムイーター。
(10匹いる?生物じゃないのが混じってる?細かいことは気にしてはいけない)
それぞれの列から遭遇する相手を、次の手順で選ぶこととする。
1. トランプの山を選ぶ
2. トランプを1枚めくる
3. 出た数字を3で割り、余りが0なら1列目の1番目、1なら1列目の2番目、2なら1列目の3番目の生物と遭遇する。
4. 2~3を、2列目と3列目に対しても同様に繰り返す。
すると
トランプの山Xを選ぶと、ヘクサゴースト、チャンプ、目覚めしもの
トランプの山Yを選ぶと、ガーディアン、コレクター、タイムイーター
トランプの山Zを選ぶと、ガーディアン、コレクター、デカ&ドヌー
に遭遇することとなる。
これがSlay the Spire、もっというと一般的なゲームにおけるランダム要素を作り出すための仕組みだ。
ランダム要素を含むゲームであれば、どのようなゲームにもこのトランプの山に該当するものが存在する。
このトランプの山を「乱数生成器」。
どのトランプの山を選ぶか決めるための元となる数値や文字列を「シード値」と呼ぶ。
それでは最初の問いに戻ろう。
「ランダムなはずのになんで毎回同じカードが手札に来るの?」
答えはこうだ。
「シード値が同じなので、同じトランプの山が使用されたから」
Slay the Spireではシード値は「プレイ記録」の「侵攻履歴」から確認することができるぞ
なお、ここでは例え話としてトランプの山を使ったが、実際の乱数生成器とトランプの山とでは違う点が多々ある。
すべてを説明することはしないが、ざっくりと以下のことを覚えておくと、ゲーム内の色々な物事の裏側が想像しやすいだろう。
- トランプの山は同じ数字は1回しか出ないが、乱数生成器は同じ数字が何度も出る
- トランプの山は53回めくれば尽きてしまうが、乱数生成器はいくらめくっても尽きない
- トランプの山は1~53の数字が出てくるが、乱数生成器は0.0~1.0の間の小数が出てくる
Slay the Spireにおける疑似乱数活用の実際
ここまでの話を聞いた読者諸氏はこう思ったはずだ。
「なるほど、シード値はトランプの山札を決めるためのものなのか」
「ゲーム内の出来事は山札をめくって出た数値で決まるんだね」
「とすると、レリック運が悪かったとき、前の戦闘をやり直して1回多く乱数を消費すれば、獲得するレリックを操作することができるってこと?」
答えはNoである。
なぜか?
Slay the Spireにおいて山札、つまり乱数生成器は1つではないのである。
以降、「トランプの山札をめくる」ことを「乱数を消費」すると表現する
まずは次の表を見ていただきたい。
これらは実際にSlay the Spireで使われている乱数生成器の一覧である。合計13個ある。
乱数生成器名 | 種別 | 用途 |
---|---|---|
mapRng | ラン内共通 | マップの生成 |
monsterRng | ラン内共通 | 遭遇する敵 |
eventRng | ラン内共通 | ランダムイベントの内容 |
merchantRng | ラン内共通 | 商人 |
cardRng | ラン内共通 | カードドロップ |
treasureRng | ラン内共通 | 宝箱 |
relicRng | ラン内共通 | レリック |
potionRng | ラン内共通 | ポーションドロップ |
monsterHpRng | フロアごと | 敵のHP |
aiRng | フロアごと | 敵の行動 |
shuffleRng | フロアごと | デッキシャッフル |
cardRandomRng | フロアごと | ランダムなカード効果 |
miscRng | フロアごと | その他 |
このように乱数生成器が分かれているため、1回の戦闘を長引かせて、どれだけshuffleRngの乱数を消費しようが、relicRngの乱数は消費されないため、取得レリックを操作することはできないのである。
また、種別が「フロアごと」となっている乱数生成器は新しいフロアに入るたびに生成しなおされる。
そのため、フロア2での戦闘を都合の良い展開にするため、フロア1で1回多くデッキシャッフルしてみる、などといった努力はまったくの無駄なので覚えておこう。
まとめ
いかがだっただろうか。
この知識は中断/再開を使用しない、通常のフェアなゲームプレイにおいては基本的には役に立たない。
しかしデイリークライムや難シード値に挑む場合は、覚えておくと無駄な努力を省けることもあるかもしれない。
良いSlay the Spireライフを。