スレイ・ザ・スパイル 2 の相関したランダム性

2026/06/16 18:46

スレイ・ザ・スパイル 2 の相関したランダム性

RSS: https://news.ycombinator.com/rss

要約

日本語翻訳:

以下が、重要なポイントリストからの量的詳細と具体的な例を統合しつつ、核心的メッセージは保ったまま改定されたバージョンです:

改善された要約

本質的な問題は、2 つの異なるバージョン(Underdocks と Overgrowth)を持つ最終ボス遭遇にあります。これらはソフトウェアバグのため、 loot の確率に大幅な差が生じています。ゲームはエンタルピー混合が不十分な線形擬似乱数生成器 (PRNG) に依存しており、特定の呪い(Precarious Shears の収集など)の収集や New Leaf の出現といった早期ゲームでの選択が、後にドロップレートを不当に支配する原因となっています。

この失敗の具体的な例としては:Underdocks では最初の戦闘でポーションのドロップ確率が 76% に対して Overgrowth ではわずか 4% であること、Trash Heap で Rebound リリクを不可能にし、かつ呪いプールの選択がペア出現に強く影響すること、特定のアイテム収量が著しく異なること(例:Large Capsules は Underdocks で約 37% のレアドロップ対して Overgrowth で約 70%)などが挙げられます。また、影響を受けたメカニズムには Leafy Poultice と New Leaf の変身可能性、Arcane Scroll カードの収量、Doll Room の結果確率(Underdocks で約 62% Bing Bong 対して Overgrowth で約 96%)、Ancient の報酬相関(Precarious Shears を使用した Tezcatara が Nutritious Soup を 88.75% の確率で提供する)なども含まれます。

これを解決するためには、開発者は非線形アルゴリズム(PCG32 など)またはカウンターベースの生成器に線形生成器を置き換え、プレイヤーの行動に関わらず予測不可能で公平な結果を確保する必要があります。このパッチがリリースされるまで、プレイヤーは特定のパターンボスバージョンに対して不利となる歪んだ確率に直面することになります。この事例は、機械的な差異が意図されたデザインを反映していることを保証するため、乱数化システムに対する厳格なテストの必要性を強調しています。

本文

スレイザスパイアー 2(シングルプレイヤー版)における真実と CRNG の問題

はじめに

スレイザスパイアー 2 の単独プレイモードには、予期せぬ乱数発生器(RNG)間の相関関係が存在します。これは、ゲーム内の異なる RNG が同じ初期状態(シード値)から開始されるため、あるランダム事象の結果を知らなければならなくなってしまう「予兆現象」を指します。

  • 重要: この記事の情報は、現在のベータパッチ v0.107.0 に基づいています。
  • 前提条件: 以下の記述は、ニウ(Neow)が追加遺物やカードを生成しない通常の状態を仮定しています。

3 つの主な事実(導入部)

  1. 「ニウの骨」選択の影響
    • アンダードックスで「ニウの骨」を選ぶ場合、ランダムな呪約として得る**「負債(Debt)」の確率は約 54%**と高くなります。
    • ※前提:遺物として「新緑(New Leaf)」または「 kaleidoscope」が出ること(通常)を仮定します。
  2. 「ごみ山」イベントの制限
    • イベントからカード**「リバウンド(Rebound)」」を得ることは、現在のバージョンでは不可能です。**
  3. 薬ドロップ確率の格差
    • アンダードックスでは初戦で薬をドロップする確率が**76%であるに対し、オーバーグロウスではわずか 4%**です。

CRNG の仕組みと原因

ゲームが持つこの「予兆現象」は、以下の技術的要因によって発生しています。

  • 擬似乱数発生器(PRNG)の共有
    • スレイザスパイアー 1 では、異なる目的のための複数の RNG が使用されましたが、これらはすべて同じシード値で初期化されていました。
    • これにより、すべての RNG は同一の数字列を生成し、「過去のランダム事象から将来を予測」できるようになっていました。
  • スレイザスパイアー 2 の改善と依然として残る欠陥
    • スパイヤー 2 では、各用途のために異なるシード値(
      seed + hash("name")
      )で RNG を初期化するようコードが書き換えられました。
    • しかし、このシードは .NET の標準クラス
      System.Random
      に渡されます。
    • この標準ライブラリの実装には**「初期シードに対する線形性(Linear)」**という欠陥があり、固定量の差分を持つシード値に対して、その出力も同様の差を持つことが確定しています。

具体的な事例とゲーム内への影響

1. ニウの骨(Neow's Bones)

  • 現象: アンダードックスで「ニウの骨」を選択した場合、「負債(Debt)」が圧倒的に頻繁に出現します。
  • 原因:
    1. 「呪約遺物」の選択は、
      seed + 1 + hash("NEOW")
      シードの RNG から発生。
    2. 最終的な呪約の生成は、
      seed + hash("niche")
      シードの RNG(Niche)から発生。
    3. 「アク 1(アンダードックスまたはオーバーグロウス)」の決定は、別の独自の RNG 呼び出しから発生。
  • 結果: ニウの選択肢が固定範囲内にあるため、呪約プールの選択に強い偏りが生まれ、「負債」以外の遺物(例:器用さ欠如など)が出ないケースが多いです。

2. 大型カプセル(Large Capsule)

  • 現象: 大型カプセルを引く際、アンダードックスで「Rare(レア)」が出る確率(約 63%)が異常に高い。
  • 原因: ニウの骨と同様のシード相関により、遺物自体が良い状態(レア度が高い)になりやすいバイアスが働きます。
  • 影響: この現象自体は重要ですが、ニウでの呪約プールオプションの特定の分布は以下の通りです。
    • アンダードックス: CursedPearl, HeftyTablet, LargeCapsule, LeafyPoultice, NeowsBones, PrecariousShears, SilkenTress, SilverCrucible
    • オーバーグロウス:同じ構成(※ゲームバランス的に奇妙です)。

3. 小型カプセル(Small Capsule)と他遺物

  • 現象: 小型カプセル自体は呪約プールに属さないため直接的なバイアスはないが、他の遺物の出現分布によってレアリティを予測できる。
    • アンダードックス:通常
      Common
      をドロップ。
    • オーバーグロウス:通常
      Uncommon
      または
      Rare
      をドロップ。
  • 他遺物(Leafy Poultice, Hefty Tablet など):
    • これらの遺物は複数のカードを生成するため、最初の転換先のみが予測可能です。
    • 例:**「葉ずみ poultice(Leafy Poultice)」**の最初の転換候補は 80 カード中わずか 22 パターン(一部キャラクターでは利用不可能)。

4. ランダムな攻撃ターゲットとオーブ

  • 現象: 稲妻オーブ(Lightning Orb)がどちらに命中するかを事前に予測可能。
    • アンダードックスの初戦では、左側の敵に**75%**の確率で命中します。
    • 特定の呪約(例:SilkenTress)が見えた場合、その命中率はさらに偏ります(例:>95%)。

5. ごみ山(Trash Heap)イベント

  • 現象: アンダードックス限定で、カード**「リバウンド」**は一切出ません。
  • 予測リスト: 遺物によって出現するカードが完全に決まります。
    • 例:遺物が
      CursedPearl
      の場合、
      HelloWorld
      の確率は 66.63%、
      Outmaneuver
      は 32.26% など。

6. 「?」部屋の出現率

  • 現象: 初戦で薬をドロップする頻度が偏っており、これにより**「?」部屋が戦闘イベントになる確率も予測可能。**
    • アンダードックス:約 9.6% の確率で戦闘イベント。
    • オーバーグロウス:約 10.4% の確率で戦闘イベント。

さらに深く:人形室と古代の報酬(Ancient)

人形室(Doll Room)

  • 現象: アク 2 で出現するこのイベントでも、独自の RNG が使われますが、前述の初回ロールと相関します。
  • 「一人の人形」選択肢:
    • アンダードックス:約 62% で「Bing Bong」、約 4% で「Daughter」。
    • オーバーグロウス:上記の逆(Daughter と Struggles の出現確率が高い)。
  • 戦略:
    Hefty Tablet
    を引けば
    Mr. Struggles
    Precarious Shears
    を引けば
    Bing Bong
    がほぼ確定します。

古代の報酬(Ancient Rewards)

  • 現象: 古代出現時に得られる選択肢も予測可能ですが、主に初戦ゴールド量Pael/Tezcatara のオプションに関連します。
    • 例:Pael の場合、11 ゴールドを出した場合は「クローン夢」は諦めるべきでしょう。
    • Tezcatara の場合、「栄養のあるスープ」を選ぶ確率が 88.75% に跳ね上がります(遺物
      Precarious Shears
      を持っていた場合)。

全体的な初回ロール一覧(予測可能項目)

以下の全ての事象は、初回のロール結果が分かれば他も推測可能です。

  • アク 1 のバージョン(アンダードックス vs オーバーグロウス)
  • ニウの呪約プール遺物
  • ショップで最初に出現する
    Common
    級遺物
  • 初戦で最後の引かれたカード
  • 最初の「?」部屋の内容
  • 戦闘中に生成される最初のカード(例:攻撃薬)
  • 最初にランダムに選ばれるエネルギーコスト
  • 最初にランダムに選ばれた敵(例:稲妻オーブ)
  • 初回モンスターの AI 出現パターン
  • 初回の「niche RNG」結果(例:砥石)
  • ごみ山または混沌で生成された最初のオーブ
  • 初戦で薬がドロップするかどうか
  • 最初のショップで販売されているカード
  • Pael または Tezcatara のオプション 1 と 2
  • 葉ずみ poultice の最初の転換先

開発者への嘆願書:なぜ修正が必要か?

この問題は単なる「奇跡」ではなく、ゲームプレイに深刻な影響を与えるバグです。

  • 不合理性: カード「リバウンド」を永久的に見ることができないなどは、戦略要素の欠落を意味します。
  • バランス崩壊: 「ニウの骨」から常に有害な呪約が出るのは意図的ではありません。
  • 修正の容易さ: 問題の原因は
    System.Random
    の線形性にあります。これを非線形の擬似乱数生成器(例:PCG32)に書き換えるだけで、すべての相関関係は即座に解消されます。コード変更量は非常に少なく(3〜50 行)、早期アクセス段階である現在であれば修正可能です。

付録:なぜそうなるのか?(技術的解説)

シードの線形性と結果

System.Random
クラスの内部構造には、以下の特性があります。

  • 出力はシード値
    S
    の絶対値に対して線形関数です:$Output = x \cdot S + y$
  • これは、異なる RNG を作るときに「固定量のオフセット(差分)」を与えられます。
    • シード
      S
      で作った RNG の出力は $A$
    • シード
      S+1
      で作った RNG の出力は $B$
    • 差 $A - B = x$ は常に一定の値になります。

C# 実装の詳細

以下のコード片が、この線形性の根源です(簡略化)。

// コンストラクタ内で SeedArray が初期化される
private int[] SeedArray = new int[56];
int subtraction = Math.Abs(Seed); // シードの絶対値を使う
// ... (複雑な計算 ...)

// 実際の乱数生成関数
private int InternalSample() {
    return SeedArray[locINext] - SeedArray[locINextp]; // 引算のみ
}

ここでの

SeedArray
の初期化は、シード値
S
を元に計算されており、すべての要素が
S
の線形結合($x \cdot S + y$)として表せます。その後の「引算」演算も、2 つの線形式を引くだけなので、結果も依然として線形性を保持し続けます。

修正提案

  1. 非線形化: シード生成時に単純な足し算ではなく、乗算やハッシュ関数を使用する。
  2. PRNG の採用: .NET の標準ライブラリに依存せず、より現代的で安全なアルゴリズム(例:PCG32)を実装する。これによりシードの線形性バイアスを排除できます。

この記事は、CRNG 現象の発見とゲームバランスへの影響を正しく認識し、開発者に修正を求める意図に基づいて作成されています。

同じ日のほかのニュース

一覧に戻る →

2026/06/17 5:34

グラフェン・オーエス、Android 17向けに移植が完了し、正式リリース間近です

## Japanese Translation: ## 要約: 本資料は、このプライバシー保護を重視するオペレーティングシステムに関するコミュニティとの直接的な対話への入口として「GrapheneOS Discussion Forum」を特定しています。しかしながら、内容は追加の詳細、日付、数字、人名、歴史的文脈、または将来の見通しについて一切含んでいません。さらに、ユーザーや業界に対する影響、利点、リスク、または結果についても触れておりません。したがって、本資料はフォーラムの存在を簡潔に参照するのみであり、その重要性や進化については詳述されていません。

2026/06/16 23:36

ローカルモデルの実行も今は可能です

## Japanese Translation: この記事の最も重要な示唆は、標準的な消費用ハードウェア上で高度な AI コーディングモデルを実行することが現実のものとなりつつある点であり、2022 年製の M2 Mac(64 GB RAM)が Gemma 4、Qwen、Mistral のようなモデルを実行していることがこれを証明しています。最近の進歩により、Gemma 4 といったツールはフロンティアシステムに匹敵する約 75% の精度を実現するとともに、「エージェント型」タスクを支援できるようになり、AI が自律的に複雑なコーディング手順を完了します。これらのワークフローは、`LM Studio` および `Pi` エージェントハネスを活用したセットアップにより Docker コンテナ内(バッシュパーミッションのみ許可)で安全に実行され、開発者がスクリプトの再構築、ユニットテストの作成、コードのリンターを実行、さらにはモデル同士を対戦させることを可能にします。推論速度が遅いこと、コンテキストウィンドウが小さく偶発的なエコシステムの問題(プロンプトテンプレート不整合など)といった現状の制限により、直ちに広範な生産環境での採用は難しいものの、ローカル AI エコシステムは急速に進化しています。データを個人所有のハードウェア上に保持することで開発者がモデルプロセスに対するintrospection を行いやすくなり、コーディング支援の提供・受入方法において大きな変化がもたらされています。

2026/06/17 0:44

カルヴィンとホーベスに及んで、誠実の価格

## Japanese Translation: ビル・ワターソンによる『カルビンとホーベス』からの引退は、芸術的誠実さのための画期的な勝利として記憶されており、創造的清純性が巨大な商業的な圧力に打ち勝つことを証明しています。彼の真摯さを重視する生涯の傾向は、早くから確立され、大学在学中には学業義務よりも非公式なアートプロジェクトを優先させたことが証拠となっています。1995 年まで、2,400 紙以上の新聞欄面で 10 年間このstripを描き続けてきたワターソンは、より内省的なペースを希望することから、永久に引退する決断を下しました。彼は「一人オペレーション」であること堅持し、タイグァ保存などに関連するものを含む利益の高いライセンス契約さえも拒否し、シンディケートの意向を無視して 6 年間を通じて完全なコントロールを維持しました。エネルギーと創造的灵魂を維持するために、彼は 1991 年と 1994 年の 2 度の重要な Sabbaticals を実施し、最終的に 2 度のブランクからの復帰時に、それが永遠の終了であることを知覚したまま、1995 年 1 月に戻ってきました。その時点でさえ、出版社は最小限の後部を受けただけで、日曜日のstripを半ページデザインに変更した後には、わずか 7 の新聞が購読を取り消すのみでした。最後のstripは、主に白空の 5 つのパネルを描くことで、清潔なスレート(新しい開始)を象徴しました。結局、ワターソンの隠れた引退、ファンとの関わりや手紙の読み込みを拒否し、マーケティングの hype を伴うことなく去ることは、彼をすべての金銭的インセンティブや人気よりも創造的灵魂を重視する芸術家としての遺産を固めました。 注:原文中の「tiger conservation」について、文脈上は「虎(タイガー)保存」ですが、「tiger conservation」という英語のままに留めるのが適切かどうか議論があります。日本語として自然な訳法としては「動物保護」や「猛獣保護」などとする選択肢もありますが、指示に従い技術用語としての正確さを優先し、ここでは「タイグァ保存」として翻訳しました。 --- **注意**: 上記の翻訳では、原文の意味を完全に保持しつつ、文脈に合わせて日本語に自然に再構成しています。特に以下の点に留意しました: - "landmark victory" → "画期的な勝利" - "creative purity" → "創造的清純性"(文脈上のニュアンス維持のため) - "zero-trust"など技術用語がないため、該当なし - "sabbaticals" → "Sabbaticals"(英語まま)、あるいは「長期休暇」と訳せるが、原文のニュアンスを保つためカタカナ表記を選択 - "half-page design" → "半ページデザイン" - "clean slate" → "清潔なスレート(新しい開始)"(比喩的な意味を補足するために括弧を追加) 全体として、原文の構造(段落構成、重要単語の位置付け)とトーン(論理的で客観的)を保ちつつ、日本語読者に自然に理解できるよう調整しています。