第五章 システムとバランスNo.043
報酬の間隔
Reward Schedule別名 報酬スケジュール
概要
敵を倒す、宝箱を開けるのような繰り返す行動に対して、報酬を何回に 1 回出すかとその回数をどれだけばらつかせるかの決め方。決まった回数ごとに出すと次の報酬がいつ来るかがわかるが、報酬の直後は次が遠い。毎回同じ確率で出すとどの回でも出る可能性がある代わりに、待っても次の報酬は近づかず、平均の何倍も出ないことがある。
使われる場面
- 敵が落とす物
- 敵を何体倒すごとに装備を落とすか、倒すたびに決まった確率で落とすかを決める。前者なら次に落とすまでの数を数えられ、後者ならどの敵からも落ちる可能性がある。
- 宝箱や採集で手に入る珍しい物
- 宝箱を開ける、草を摘むのような何度も繰り返す行動で、珍しい物が出る間隔の平均とばらつきを決める。長く出ない人が出ないよう、間隔に上限を付けるかも決める。
- 間隔の違う報酬の組み合わせ
- お金は倒すたびに、素材は数体ごとに、装備は数十体ごとにのように、間隔の違う報酬を重ねる。どの時点でも次の報酬が近くにあるようにする。
- レベルアップ
- 経験値を集めて上がるレベルも、戦いを繰り返して得る報酬である。次のレベルに要る経験値と 1 回の戦いで得る経験値から、何回戦うごとにレベルが上がるかが決まる。
判断基準
| こういうとき | こうする |
|---|---|
| 報酬を受け取った直後は次の報酬が遠く、そこでやめたくなる | 一定の間隔では、受け取った直後に次の報酬が最も遠い。間隔を短くするか、長い間隔の報酬のあいだに短い間隔の小さな報酬を重ねて、どの時点でも次の報酬が数回以内にあるようにする。 |
| 報酬がいつ来るか読めてしまい、わくわくしない | 平均の間隔はそのままにして、間隔をばらつかせる。倒すたびに同じ確率で出すか、報酬が出るたびに次までの回数を平均の半分から 1.5 倍の中から決める。 |
| 毎回同じ確率で出していて、平均の何倍も出ないことがある | 毎回同じ確率では、平均の 3 倍を超える間隔が 3〜5% ある。長い側を抑えるなら、次までの回数を幅の中から決める形に変えるか、天井を置いて出ない長さに上限を付ける。 |
| ばらつかせたら続けて出ることがあり、報酬のありがたみが薄い | 平均の間隔が N 回で毎回同じ確率なら、間隔の N 分の 1 は 1 回になる。次までの回数を平均の半分から 1.5 倍の中から決める形にすると、平均の半分より短い間隔はなくなる。 |
| 平均の間隔をいくつにすればよいかわからない | 間隔の回数に 1 回の行動にかかる時間を掛けて、時間に直す。ばらつかせるなら平均の 2〜3 倍の長さも時間に直す。その長さを実際に待って、途中でやめたくならないかを遊んで確かめる。 |
| あと何回で報酬が出るかを数えて、そこまで頑張る遊びにしたい | 一定の間隔にして、次の報酬までの残りの回数を画面に出す。 |
遊んでこう感じたら
指示の例
敵を 20 体倒すごとに装備が出るが、出た直後は次が遠くてやめたくなる。報酬の間隔を見直して、装備は 20 体ごとのまま、あいだに 3〜5 体ごとに素材が出る小さな報酬を重ねて
10 体倒すごとに必ず宝箱が出るので、いつ出るか読めてわくわくしない。宝箱の報酬の間隔をばらつかせて、平均は 10 体のまま次に出るまでの数を毎回 5〜15 体の中から決めて
レア素材を毎回 5% で落とすようにしたら、60 体倒しても出ないことがある。報酬の間隔の長い側を抑えたいので、平均の 20 体は変えずに次に落とすまでの数を 10〜30 体の中から決める形にして
採集 1 回に 10 秒かかり、珍しい素材は平均 30 回に 1 回なので、5 分ほど何も起きない。報酬の間隔を時間で書き出して、珍しい素材とは別に 1 分に 1 回ほど小さな報酬が出るようにして
詳細
繰り返す行動と報酬
ゲームでは敵を倒す、宝箱を開ける、採集するのように、同じ行動を何度も繰り返す。その行動に報酬を出すときは、何回に 1 回出すかとその回数を毎回同じにするかばらつかせるかを決める。この決め方を報酬の間隔と呼ぶ。報酬スケジュールとも呼ぶ。
以下では、報酬が出た回から次に報酬が出た回までの行動の回数を間隔と呼ぶ。報酬の間隔は二つの値で決まる。一つは間隔の平均で、報酬がどれだけ頻繁に出るかを決める。もう一つは間隔のばらつきで、次の報酬がいつ来るかをどれだけ読めるかを決める。
デモのモデル
デモの 2 つの段では、プレイヤーのモデルが同じ速さで敵を倒し続ける。倒すたびに、その段の決め方で報酬を出すかどうかを決める。平均の間隔はどちらの段も同じで、既定では 10 回である。上の段は 10 回ごとに必ず報酬を出す。下の段は操作パネルで選んだ方法で間隔をばらつかせる。下の段はいつも同じ乱数の列を使うので、自動再生は毎回同じ結果になる。自分で倒すときも同じ列から続く。決めた数(既定では 90 回)を倒し終えてから押し直すと、別の乱数の列で初めからになる。
段の列には最近倒した 30 回が並び、四角が報酬の出た回である。括弧の数字は報酬と報酬の間隔で、破線の括弧は前の報酬から今までに倒した数である。
一定の間隔
決まった回数ごとに報酬を出す決め方を、以下では一定の間隔と呼ぶ。デモの上の段では 10 回、20 回、30 回と倒した回に報酬が出て、間隔はいつも 10 回である。
一定の間隔では、プレイヤーは次の報酬がいつ来るかを知ることができる。前の報酬から 7 回倒したなら、次はあと 3 回である。残りの回数を画面に出すと、プレイヤーはあと何回で次の報酬が来るかを知ったうえで続けるかどうかを決められる。
その代わり、報酬を受け取った直後は次の報酬が最も遠い。10 回ごとなら、受け取った直後は次まで 10 回ある。
毎回同じ確率で出す
間隔をばらつかせる方法の一つは、倒すたびに同じ確率で報酬を出すことである。平均の間隔を N 回にしたいなら、確率を 1/N にする。デモの下の段の既定は、平均 10 回に合わせた毎回 10% である。
この決め方では、報酬はどの回でも出る可能性がある。前の報酬の次の回にまた出ることも、何十回も出ないこともある。間隔が k 回になる確率は (1 - 1/N)^(k - 1) × 1/N である。1 回が最も多く、長くなるほど少しずつ減りながらどこまでも続く。N = 10 なら、間隔の半分は 7 回以下になる。一方で、20 回を超える間隔が 12.2%、30 回を超える間隔が 4.2% ある。
デモの下のグラフの上の行は、同じ乱数の列で 6000 回倒したときの 594 個の間隔である。20 回を超える間隔は 11.8%、30 回を超える間隔は 4.2% で、最長は 59 回だった。自動再生でも下の段では 30 回目の報酬の次が 68 回目で、間隔が 38 回あく。そのあいだに上の段は 40 回目、50 回目、60 回目の 3 回、報酬を受け取る。
待っても次の報酬は近づかない
毎回同じ確率で出すとき、前の報酬から何回倒したかは次の回の確率を変えない。前の報酬から 20 回出ていなくても、次の回に出る確率は 10% のままである。そのため、次の報酬まであと何回かかるかの見込みも変わらない。あと j 回以上かかる確率は、これまで何回出なかったかによらず (1 - 1/N)^(j - 1) である。これを j = 1 から足し上げた平均は N 回になる。
デモの折れ線は、前の報酬から何回倒したかだけを知っているプレイヤーにとっての次の報酬まであと何回倒すかの平均である。以下ではこれを見込みと呼ぶ。上の段の見込みは報酬の直後の 10 回から 1 回ずつ減って 1 回になり、報酬が出ると 10 回に戻る。線はのこぎりの歯の形になる。下の段の見込みはどの回でも 10 回のまま動かない。間隔が 38 回あいたあいだも、報酬が 2 回続けて出た直後も同じである。
ある回から次の報酬までに倒す回数を、すべての回について平均しても差が出る。上の段は (N + 1) / 2 で 5.5 回、下の段は N で 10 回になる。デモの 6000 回で数えても 5.5 回と 9.9 回だった。報酬の数はどちらの段も平均 10 回に 1 回なのに差が出るのは、長い間隔ほど多くの回を含むからである。間隔が 1 回と 19 回の 2 つなら平均は 10 回だが、20 回のうち 19 回は 19 回の間隔の中にある。
間隔に幅を持たせる
ばらつかせたまま長い間隔をなくすには、報酬が出るたびに次の報酬までの回数を決めて倒した数を数える。デモの「間隔に幅を持たせる」は、次までの回数を平均の半分ほどから 1.5 倍ほどまでの中からどれも等しい確率で決める。平均 10 回なら 5〜15 回のどれかで、平均は 10 回のまま最長は 15 回になる。
// 1 回倒す。since は前の報酬から倒した数、target は次の報酬を出す回
function act(): boolean {
since++;
if (since < target) return false;
since = 0;
target = randomInt(lo, hi); // 次までの回数を決め直す。平均 10 回なら 5〜15
return true;
}
この決め方の見込みは、一定の間隔と毎回同じ確率の中間になる。前の報酬から 4 回倒すまでは次の報酬が出ないので、見込みは一定の間隔と同じく 1 回倒すごとに 1 回ずつ減る。5 回目からはどの回にも出る可能性があり、出なかったときの見込みの減り方は 1 回倒すごとに 0.5 回になる。出なかった回の分だけ候補が減り、残った候補の平均が 0.5 回後ろへずれるからである。14 回出なければ次の 15 回目で必ず出るので、そこで見込みは 1 回になる。ある回から次の報酬までに倒す回数の平均は 6.0 回で、上の段の 5.5 回に近い。
その代わり、報酬の直後の 4 回は出ないことが決まっていて、続けて出ることもない。前の報酬の直後から出る可能性を残したいなら、毎回同じ確率で出して長い側だけを後の節の方法で抑える。
小さな報酬を重ねる
間隔の長い報酬だけでは、報酬の直後や長く出ないあいだに次の報酬が遠い時間が続く。そこで、間隔の長い報酬のあいだに間隔の短い小さな報酬を重ねる。デモの「小さな報酬を重ねる」を入れると、どちらの段でも 3 回ごとに小さな報酬(白い丸)が出る。折れ線は小さな報酬も数えた見込みになる。上の段の見込みは 3 回以下で上下する。下の段の見込みも 2.7 回、1.9 回、1 回を繰り返す。どちらの段でも、どの時点でも次の報酬は 3 回以内に来る。
重ねても大きな報酬の間隔は変わらないので、下のグラフも変わらない。大きな報酬が長く出ないことへの手当ては次の節で扱う。
報酬は何層にも重ねられる。お金や経験値は倒すたびに、素材は数体ごとに、装備は数十体ごとに出す、のような組み合わせである。層ごとに間隔の平均とばらつきを決め、どの時点でも次の報酬がどれかの層で近くにあるようにする。小さな報酬も使い道がなければ報酬として働かないので、何に使えるかを「コアループ」で確かめる。
間隔の長さを時間で決める
間隔の回数だけでは、プレイヤーが待つ長さはわからない。1 回の行動にかかる時間を掛けて、時間に直す。敵を 1 体倒すのに 5 秒かかるゲームで 10 体ごとに報酬を出すなら、報酬は 50 秒に 1 回である。1 体に 30 秒かかる強い敵なら、同じ 10 体ごとでも 5 分に 1 回になる。
どれくらいの時間なら待てるかはゲームの速さや報酬の大きさで変わるので、一つの値には決まらない。報酬の層ごとに間隔を時間で書き出す。いちばん長く待つ所は実際に遊んで、途中でやめたくならないかを確かめる。デモでは平均の間隔を 5〜30 回で変えられる。
ばらつかせるときは、平均だけでなく長い側も時間に直す。平均の間隔が 5〜30 回で毎回同じ確率なら、平均の 2 倍を超える間隔が 11〜13%、3 倍を超える間隔が 3〜5% ある。1 回に 5 秒かかる行動で平均 10 回に 1 回(50 秒に 1 回)の報酬でも、間隔の 8 つに 1 つほどは 100 秒を超える。
長く出ないことへの手当て
毎回同じ確率で出すと、出ない回数に上限がない。長い側を抑える方法は三つある。
- 幅を持たせる:前の節のように、次までの回数を決まった幅の中から決める。平均 10 回を 5〜15 回で決めるなら最長は 15 回になる。
- 天井:毎回同じ確率で出したまま、出ない回数が決まった数に達したら次を必ず出す。天井の回数に届くまでは、どの回でも出る可能性が残る。回数の決め方は「天井」にある。
- シャッフルバッグ:報酬 1 つと外れ N − 1 個を袋に入れて順に引き、空になったら詰め直す。N 回ごとにちょうど 1 回出て、間隔は 1〜2N − 1 回になる。平均 10 回なら最長 19 回である。
前の報酬の直後に続けて出ることを許すかどうかで選ぶ。続けて出てよく、決まった回数の中で出る数をそろえたいならシャッフルバッグにする。1 回ごとの確率を保ったまま運の悪い人だけを救いたいなら天井にする。続けて出ることをなくしたいなら幅を持たせる。
ほかの用語との関係
報酬の間隔は、「コアループ」の中で報酬が出る間隔である。コアループでは報酬を得る間隔と、報酬でできることが変わる間隔を分けて数える。報酬が短い間隔で出ていても、使い道がなければできることは変わらない。
レベルアップも間隔を持つ報酬である。次のレベルに要る経験値を 1 回の戦いで得る経験値で割ると、何回戦うごとにレベルが上がるかがわかる。要る経験値の増え方が得る経験値の増え方より速いと、レベルが上がる間隔はだんだん延びる。延び方の決め方は「成長曲線」で扱う。
「リスクとリターン」の危ない道は、成功した回にしか報酬が出ない。危ない道を選び続けると、報酬の平均が安全な道と同じでも報酬の出る間隔がばらつく。
心理学の強化スケジュールとの違い
心理学では、行動に対して報酬(強化)を出す決め方を強化スケジュール(schedules of reinforcement)と呼ぶ(C. B. Ferster と B. F. Skinner の本『Schedules of Reinforcement』1957 年)。決まった回数ごとに出すものは固定比率(fixed ratio)、回数が変わるものは変動比率(variable ratio)と呼ぶ。この二つが、このページの一定の間隔とばらつかせた間隔にあたる。一方、心理学で間隔(interval)と呼ぶのは、前の報酬から時間がたった後の最初の行動に報酬を出す決め方である。このページの間隔(報酬と報酬のあいだの行動の回数)とは意味が違う。このページで示した性質は実験の結果ではなく、デモのモデルと式から出したものである。