ふくふくHukuhuku Inc.
EP.15LLM Gamedev 13分公開: 2026-09-01

空間を A/B する ── レベルデザインの変更を検証する

配置を変えたら良くなった気がする、では判断できません。空間の変更を比較で検証する方法と、この領域に固有の難しさを扱います。

#ゲーム開発#A/Bテスト#検証#人流解析
執筆 / 監修
松尾 亮合同会社ふくふく 代表社員

データ基盤・データパイプライン構築 / BI / 生成 AI 活用支援を専門とするエンジニア (28 年)。 本記事は AI 利用ポリシーに基づき、生成 AI の補助で執筆 → 人間が監修・編集して公開しています。

プロフィール詳細
シェア

配置を変えた、経路を追加した、目印を置いた。良くなった気がするでは判断できません。

この回は、空間の変更を比較で検証する方法を扱います。指標設計の教科書 EP.18 で扱った一般的な話に対して、この領域に固有の難しさを中心に書きます。

1. 空間ならではの難しさ

通常の比較検証と違う点があります。設計を誤りやすい箇所でもあります。

空間の検証に固有の難しさ
難しさ内容
同じ人が両方を体験できない一度覚えた空間は忘れられない
影響が局所に留まらない1か所を変えると、周辺の流れも変わる
他のプレイヤーの影響を受ける混雑は他人次第
慣れの効果が混ざる新しい配置は最初だけ迷う
変更の粒度が大きい文言の変更とは違い、影響が広い

1行目が最大の制約です。同じ人に両方を試してもらえません。一度その空間を覚えた人は、別の配置を初見として体験できない。だから人を分けて比べるしかありません。

4行目も重要です。変更した直後は、慣れていないせいで指標が悪化します。それを「変更が悪かった」と判断すると、良い変更を戻してしまいます

初日の数字で判断しない

慣れの効果は数日から数週間続きます。初期の数字だけで判断すると、変更は常に悪く見えます。既存のプレイヤーが慣れる期間を見込んで、評価の対象期間を決めてください。

2. 何を測るかを先に決める

変更の意図から指標を決めます。先に決めないと、後から都合の良い指標を選べてしまいます

意図と指標
変更の意図主要な指標見張る指標
混雑を緩和したい1人あたりの滞留時間通過人数が減っていないか
寄り道を促したい訪問した区画数目的地への到達率
迷いを減らしたい目的地までの経路の長さ探索の楽しさに関わる指標
特定の場所へ誘導したいその区画の訪問率他の区画が過疎化していないか

見張る指標の列が重要です。指標設計の教科書 EP.24 で扱った と同じで、主要な指標を良くする過程で、犠牲にしてはいけないものを決めておきます。

2行目が分かりやすい例です。寄り道を増やそうとして、目的地に着けなくするのは改善ではありません。両方を見て初めて判断できます。

3. 分け方

同じ人が両方を体験できない以上、人を分けて比べます。分け方には選択肢があります。

分け方の選択肢
分け方利点難点
新規のプレイヤーで分ける慣れの影響がない件数が集まりにくい
既存も含めて分ける件数が多い慣れの影響が混ざる
サーバや地域で分ける実装が簡単元々の性質が違う
時期で分ける(前後比較)分ける必要がない他の変更や季節が混ざる

1行目が最も清潔です。新規のプレイヤーはどちらの配置も初見なので、慣れの影響がありません。ただし件数が集まるまで時間がかかります

3行目と4行目には注意が必要です。元々違うものを比べている可能性があります。統計入門 EP.06 で扱った「くじ引きで分ける」の原則が守れていません。

前後比較は最後の手段

4行目は実装が最も簡単なので選ばれがちですが、他の変更や季節の影響と区別できません。同時期に別の変更を入れていれば、どちらの効果か分かりません。使うなら、その期間に他の変更を入れないことが条件です。

4. 必要な件数を見積もる

始める前に、どれくらいの件数が必要かを見積もってください。足りないまま始めると、結論が出ないまま期間だけ過ぎます

検出したい差から、必要な件数の目安を出す
Python
import math

def required_n(baseline_mean, baseline_sd, detect_ratio,               alpha=0.05, power=0.8):    """平均の差を検出するのに必要な、片群あたりの件数の目安。
    detect_ratio: 検出したい変化の割合(0.1 なら 10% の変化)    """    delta = baseline_mean * detect_ratio    if delta <= 0:        raise ValueError("検出したい差が0以下です")
    # 標準的な近似(両側検定)    z_alpha = 1.96 if abs(alpha - 0.05) < 1e-9 else 2.576    z_power = 0.84 if abs(power - 0.8) < 1e-9 else 1.28
    n = 2 * ((z_alpha + z_power) * baseline_sd / delta) ** 2    return math.ceil(n)

# 例: 現在の滞留時間が平均120秒、標準偏差60秒for ratio in [0.20, 0.10, 0.05]:    n = required_n(120, 60, ratio)    print(f"  {ratio:.0%} の変化を検出: 片群 {n:,} 件(合計 {n * 2:,} 件)")

実行すると、小さい変化を検出するには、桁違いに多くの件数が必要だと分かります。5%の変化を検出するには、20%の場合の16倍の件数が要ります。

この見積もりが、そもそも検証できるかの判断になります。必要な件数が現実的でないなら、A/B以外の方法を考えるか、もっと大きな変更で試すことになります。

5. 影響が漏れる問題

空間に固有の問題として、片方の変更が、もう片方に影響することがあります。

  • 同じ空間を共有している — 混雑の影響が両群に及ぶ
  • プレイヤー同士が情報を交換する — 変更内容が伝わる
  • 経済や資源を共有している — 片方の行動が全体に影響
  • 周辺の区画への流れが変わる — 変更していない場所も変わる

1番目が起きると、比較が成立しません。A群の混雑が B群にも影響するなら、「変更の効果」と「相手の群の影響」が混ざります

対処としては、空間ごと分ける(別のインスタンスで比べる)方法があります。ただし今度は「元々の性質が違う」という問題が出ます。完全な解決はないので、限界を認識したうえで結論を出してください

6. 判断の整理

最後に、進め方をまとめます。準備が結果の質を決める領域です。

  1. 1変更の意図を言葉にする — 何を良くしたいのか
  2. 2主要な指標と、見張る指標を決める — 始める前に
  3. 3必要な件数を見積もる — 検証できるかの判断
  4. 4分け方を決める — できれば新規のプレイヤーで
  5. 5慣れの期間を除いて評価する — 初日で判断しない
  6. 6影響が漏れていないか確認する — 群の間で混ざっていないか
  7. 7結論と、その限界を記録する — 何が言えて、何が言えないか

7番目を必ずやってください。「この検証で言えるのはここまで」を書いておくと、後から結果が独り歩きするのを防げます。件数が足りなかった、影響が漏れていた可能性がある ── 限界を書くことは、結果の価値を下げません

そして、検証できないなら、できないと判断するのも正当です。必要な件数が集まらない、影響を分離できない。その場合は、A/Bではなく、EP.13 で扱った観察と、プレイヤーの声で判断するほうが誠実です。

ここまでのまとめ

空間の検証は、同じ人が両方を体験できないという制約がある。慣れの効果で初期は必ず悪く見えるので、初日で判断しない。指標は始める前に決める(見張る指標も)。必要な件数を見積もって、検証できるかを先に判断する。群の間で影響が漏れる問題は完全には解決できないので、限界を記録してください。

シェア

この記事の感想を教えてください

あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。

シリーズの外も探す:

まずは、現状を聞かせてください。

要件が固まっていなくて大丈夫です。現状診断と方針提案までを無料でお手伝いします。

無料相談フォームへ hello [at] hukuhuku [dot] co [dot] jp