aoitaku Advent Calendar 2016 : 21日目 - ゲームと確率に関する覚え書き

この記事は aoitaku Advent Calendar 2016 の 21 日目の記事です。

ゲームにはいろいろな場面で確率計算が使われます。ユーザ入力に対する結果の乱択が主です。ところが結果を乱択にするのは思っているより制御しづらく、意図したとおりのバランスにならないことが多いです。その話をします。

低すぎるドロップ率

たとえば、ドロップアイテムの入手率を決定するときに、「20 回戦ったら 1 個くらい手に入るようにしよう」みたいな感じで考えると思います。この発想自体はよいです。
ところが、ここでドロップアイテムの入手確率を 5% にしてしまうと、ちょっとよくない感じになります。5% というのは平均するとたしかに 20 回に 1 回なのですが、5% の確率で 1 回目に出ることもあるし、58回やっても出ない確率もだいたい 5% くらいあるわけです。ちなみに 20 回やって 1 回も出ない確率はおよそ 3 分の 1 程度あります。

確率 n% を m 回試行したときの当選確率みたいなのは直感でわかりにくいと思いますが、「100 人が同時に m 回試行したときに m 回以下で当選した人数」というのを考えると良いのではないかと思います。
この例で行くと入手確率 5% というのは 100 人が 20 回試行したら 36 人は一個も入手できてない、という感じになります。まあ決して少なくないですよね。一個も入手できない人の割合を 100 人に 1 人くらいにしようと思ったら、試行回数を 89 回にするか、入手確率を 20% にするか、という感じになります。試行回数を増やすのは現実的ではないですが、とはいえ確率を 20% にすると今度は別の問題が起こってきます。想定より多く入手できすぎる人が少なからず発生してしまうわけです。

乱数はふつう 20 回の試行のうち 1 回目に当選する確率と 20 回目に当選する確率*1は同じです。そうすると確率 5% で 100 人が 20 回試行したら 1 回も当選しない人が 36 人程度いるのに対して、1 回だけ当選する人も 36 人程度います。
残りおよそ 28 人は 2 回以上当選する人です。このうちおよそ 26 人はちょうど 2 回当選する人です。3 回以上当選する人が 2 人もいます。
ドロップ率にすると、1 個も入手できない人に対して入手できてる人の入手個数の期待値が 1 個以上になってしまうのでなんかあんまりよくない感じがします。もちろん入手できない人がいるので当たり前なんですが。

どうすればよかったのか

たとえば正規乱数を使います。
正規乱数というのは乱数の分布が正規分布になるような乱数のことを言います。
正規分布というのはおおざっぱにいうと平均部分の割合が最も大きく、平均から遠くなればなるほど割合が小さくなるような分布のことを言います。

「20 回やったら 1 個手に入る」というのをどれくらいの感じにするかにもよりますが、たとえば平均 10 回で 1 個手に入って、1 回 ~ 20 回の間に 1 個手に入る人が 99% になるようにというのを考えると、9 回から 12 回の間に 1 個入手する人がおよそ 64%、7~8 回の間の人と 13~14 回の間の人がそれぞれおよそ 16% ずつ、5~6 回の間の人と 15~16 回の間の人がそれぞれおよそ 2% ずつ、残りは 1% 未満、という感じになります。これだと 98 % の人が 5~16回 の間に集まって、運が悪くとも 20 回以内にはほぼ入手可能になって非常にバランスを制御しやすい感じになります。よさそうですね。

正規乱数を得るにはボックス=ミュラー法を使いましょうということでだいたいいいと思いますし、各種言語でのアルゴリズムも公開されているので、それを参考にするとよいと思います。

理不尽なランダム性

ランダム性はプレイヤーが予測しづらいので、組み込む場所によっては悲劇を生みます。正規乱数を使ってもコントロールしきれないことはままあります。
これを逆手に取って、プレイヤーの選択によってランダム性をできるかぎり排除できるようにする、というものがあります。たとえば石化や即死のような確率で付与される致命的な状態異常攻撃を放ってくる敵がいるとレベルにかかわらず事故死します。そこで装備やスキルによって石化や即死に対する耐性を高めるとランダム性を薄められるので事故死しにくくなります。これはよくあるアイデアです。

理不尽なランダム性というのは、プレイヤーが薄めることができないものを指します。完全に薄めることができないランダム性がゲームオーバーの引き金になったりしているとプレイヤーは大きなストレスを感じます。いわゆる「運ゲー」はあまりよいデザインではありません。

前述のドロップ率なんかも、ドロップ率上昇効果を持つアイテムなどがあったほうがプレイヤーにとっての理不尽さを軽減できると思いますし、条件を満たすとドロップ率が向上するというようなギミックを仕込んだゲームも見かけます*2

理不尽なランダム性は必ずしも悪ではありません。プレイヤーが回避しづらいランダム性が存在することは、プレイヤーに緊張感を与えます。完全に回避できることはときに退屈さを与えます。
ローグライクゲームは理不尽なランダム性を有効に利用したゲームジャンルのひとつだと思っています。

プレイヤーに理不尽なランダム性をつきつけることで「このプレイングは推奨されていない」ということを提示することができます。
たとえば適正レベルに満たないときは致命的なアクシデントの発生が多くなるようになっているとプレイヤーはいずれ「ここはまだ来るには早すぎる」と気付くでしょう。RPG などではダメージ計算式によってこれを意図したりできますが、プレイヤーの気付きのタイミングを不定にしたい場合には理不尽なランダム性が有効です。うまく使えばプレイヤーに適度な緊張感を与えることができます。
多様は禁物です。過度の緊張はストレスになります。

乱択とメッセージ性

ぼんやりと乱数が持つメッセージ性のことを考えていました。いわゆるナラティブというものも、プレイヤーが乱択の結果に何らかの意味を見出そうとすることをうまく利用したものだと言えると思います。

プレイヤーは仕組まれたものではない偶然性にドラマを見出したりします。以前敗北を推奨するゲームデザインについて書きましたが、ひょっとすると乱択をうまく活用することでプレイヤーの動機をコントロールできるだけでなくてプレイヤーにドラマを感じさせることができるかもしれません。

このへんはまだ確証がないのでそのうち何かゲームを作って考えます。

メモなので特に結論とかはありませんが、以上です。

*1:20 回目にはじめて当選する確率のことではありません

*2:たとえばアクション RPG だとコンボシステムなどによってコンボが成立するとドロップにボーナスが入るようなものがあります

aoitaku Advent Calendar 2016 : 20日目 - 新横浜ラーメン博物館の無垢ツヴァイテというラーメン屋に行ってきました

この記事は aoitaku Advent Calendar 2016 の 20 日目の記事です。

新横浜にラーメン博物館という建物があって、全国各地のラーメン屋が軒を連ねているのですが、ここに日本人がドイツで開いたラーメン屋「無垢」の二号店「無垢ツヴァイテ」が入っています。
無垢の話を聞いてからずっと無垢ラーメンを食べたいと思っていて、そのためにドイツに行くことも辞さない構えでしたが、国内で食べられるならこんなにありがたいことはないわけです。でも新横浜って行く機会あんまりなかったので、これまで食べられずにいました。
で、今年はちょいちょい東京に行ってたんですが、まあせっかくなのでちょっと新横浜寄り道していくか、という感じで東京や品川から新幹線に乗らずに、新横浜から新幹線に乗ることにして、ラーメン博物館に行ってきました。

無垢のラーメンはドイツで調達可能な食材を使って作られているということで、麺にはデュラム粉とピザ用の小麦が使われています。ちゃんとラーメンの麺なのですが、小麦の香りや味がどことなくパスタのそれのようでもあって、独特な味わいです。この麺がまたスープに非常によく合っている。
無垢ツヴァイテではドイツビールも飲めるんですが、たぶんこのラーメン、ドイツビールと一緒にやると最高にうまいやつだと思います。その日はラーメンだけ食べたんですが次行くときはビールもやりたい。

www.instagram.com

写真は無垢ラーメン。トッピングの豚ロースのコンフィがめちゃくちゃうまかった。

aoitaku Advent Calendar 2016 : 18日目 - きまぐれ Steam ゲームレビュー「RimWorld」

この記事は aoitaku Advent Calendar 2016 の 18 日目の記事です。

store.steampowered.com

このゲームを買って遊んでいます。めちゃくちゃ時間が溶けました。

どんなゲーム?

宇宙船がぶっ壊れて脱出ポッドで降下した惑星でサバイバルしながら惑星からの脱出を目指すゲームです。脱出を目指すと言いつつプレイヤーが操作するのは入植者ちゅってて入植するのか脱出するのかどっちやねんという感じですが、とはいえやることは一緒で、住むところ作って食糧確保して先住民族宇宙旅行者たちと交易しつつ物資を集めていくという感じになっています。

宇宙版 Banished というと割とそれに近いプレイ感覚があります。ただしタイムスケールが Banished よりも長めなので、Banished みたいにポコポコ子供が生まれて増えてみたいな感じではありません(その分入植者ひとりの命が重めになっています)。

理不尽な土地

彼らが降り立った惑星は地球と違って過酷な環境です。
いろんな困難があります。

日食

太陽光発電が止まります。太陽光発電が止まると電気使えなくなるので電気使う設備はみんな動かなくなります。バッテリーに電気を貯めないといけない。

ショート

電気機器が水に濡れたりバッテリーが過充電になると「バチバチ!」とかいう警告が出て火災が発生します。ショートしたようです。電気製品は屋根で覆う必要があります。バッテリーはクソ。

太陽フレア

電気製品が動かなくなります。電力不足とかそういうことではないのでバッテリーがあっても関係なし。冷凍室が機能しなくなって備蓄の肉がぜんぶ腐った。バッテリーはクソ。

ゲリラ雷雨

たまに雷だけ降ってきて雨降ってないことあるんですけど森が全焼するまで火災が収まらなかった。

熱波

気温は50度を超えて冷房フルに回しても冷凍室が常温になって肉が腐った。

寒波

焚き火ガンガン焚いてるんですけど気付いたら薪の供給が途絶えて凍えながら夜を過ごしたとか言い出すやつ出てくる。

病気

いろんな病気があります。
この惑星では医薬品を自給自足できないので交易頼みになりますが、あまりに過酷な立地の場合交易団が来てくれなかったりするようです。

危険な野生動物

肉食獣と格闘戦すると身体の部位簡単に欠損するしなんならそのへんのネズミとかウサギもたまに暴走して見境なく人間を襲い出すしたまに殺人ゾウとかが襲撃しに来ます。

危険な宙賊

何回も追い払ってるうちにこっちのコロニーの構造把握して火をつけたりしはじめるんですけどやめてもらえないですかね。

死の灰

核汚染された灰が降り注ぎます。屋根があればいいんだけど、野生動物はいずれ毒が蓄積してみんな死にます。ちなみに死の灰に侵されて死んだ動物の肉はふつうに食べられます(!)

サイコドローン

なんか精神に干渉する装置が動いて入植者の気分をサイテーにしてくれるらしいです。やめろよ!

機械化カマキリ

レールガンとかいうやつで入植者即死した。

血縁の死

血縁が死ぬと入植者のテンションが下がります。
それはいいんですけどしょっちゅう血縁者が脱出ポッドで落ちてきてきたり宙賊に追われてたりするんですけどなんなんですか。いくらなんでも血縁が多すぎる。

AI シナリオライター

このゲームは AI がいい感じにイベントを配置してくれる仕組みがあります。選んだ AI シナリオライターによってイベントの発生傾向が変わったりします。

操作に慣れるためにまったり基地建設しようと思ってフェーベを選んだんですけど、二年目春を迎えたところで寄生虫→ペスト→死の灰とかいうコンボを食らって壊滅状態に陥る。難易度並でこれ。しびれますね。

permadeath

permadeath というセーブはオートセーブのみのロードしてやり直し禁止モードがあります。この理不尽な惑星で permadeath とかマゾすぎるでしょ、と思ったんですけど、実際やってみるとこのゲームは最初一年の基地構築が特に面白くて、入植者のリロール厳選なし permadeath とかでいきなりはじめてうまくいかなかったら入植者見捨ててあたらしくやり直すくらいの感じでもかなり遊べます。

ロードしてやり直すより、「次はロードしてやり直さないといけない状況にならないように」となるところがこのゲームのリプレイ性の高さを表してる気がします。

おわりに

といいつつロードしてやり直しアリにして入植者も並程度に働ける人間に絞って、何回か頭からやり直しつつ 40 時間くらい遊んでます。初期入植者の厳選はキャラメイクの楽しさがあってそれはそれで楽しい。ただし後から入植してきたやつがクソでコロニーが崩壊したりすることはよくあるので、permadeath のときは厳選しないほうが楽しいかもしれない。

まだぜんぜん飽きる気配ないんですけどこのままだと進捗が崩壊するのでしばらく封印してまた正月に遊ぼうと思います。みんなも正月を溶かそう。

aoitaku Advent Calendar 2016 : 17日目 - きまぐれ AppStore ゲームレビュー「Dead Ahead」

この記事は aoitaku Advent Calendar 2016 の 17 日目の記事です。

Dead Ahead™

Dead Ahead™

  • Chillingo Ltd
  • ゲーム
  • 無料

play.google.com

AppStore ゲームレビューって書いたけど Google Play ストアにもあります。アンドロイダーもどうぞ。

このゲームはいわゆるランゲーム系のゲームなんですが、ランゲームというのが実は STG の操作を移動だけにしてシンプルにしたものだということに気付かされたりします。ラン&ジャンプゲームがアクションゲームの系譜なのとはまた違ってるんですが。

このゲームは強制横スクロールで、上下に移動して障害物を避けつつ、後ろから迫ってくるゾンビたちを銃で撃って倒す、障害物にぶつかったりゾンビに追いつかれるとゲームオーバー、というシンプルな作りになっています。プレイヤーの操作は加速とショット、上下移動で、加速とショットは同時にできないので、逃げるか撃つかという感じになっています。ここがまあ割とうまくて、前方にいるゾンビは轢き殺せるんですけど減速する、減速すると後ろからきたゾンビに噛まれる、でも加速中はゾンビ轢き殺しても減速しない、加速しすぎると障害物避けにくくなる……という感じで、よくバランスがとれています。このおかげで無限に走ってても楽しい。楽しいけど緊張感あるのでぶっ続けで 5,000m 以上走るとだいぶ疲れます。

後ろから来るゾンビを銃で撃つのはほぼ横シューのプレイ感です。こういう操作系のゲームはまだまだ可能性感じます。Downwell もジャンプと攻撃が同じ操作にまとまってて見事だったし、マリオランがほぼタップ操作だけなのにかなり複雑なアクションできるようになってるのとかも今年の気付きだったんですが、スマートフォンでちゃんと操作して楽しいアクションとか STG とかは作れるなという印象があります。ゴ魔乙も弾幕 STGスマホで遊ぶことの解答のひとつだと思いますが、ひょっとすると弾幕でなければしっかり手応えある STGスマホの操作系で作れるんじゃなかろうかという気がしています。

課金でベティブーマー買うとちょうどいいゲームバランスになる気がします。無課金だとちょっときつすぎる気がしますね。金貯まらなくて上位の武器なかなか買えないし、せっかく金貯めて買った上位の武器がそんなに強くない……。

で、広告解除できるし買い切りアプリのつもりだと思えばベティブーマー買うくらいはぜんぜんいいんですが、そうすると無課金で買える武器の存在価値よ……という感じで、もったいなさはあります。
ミッションで武器指定されるのはよかったですね。

いまランク 19 であとはレールガンで 400 体ゾンビを倒すとかそういうミッション達成したらランク 20 なんですけどレールガンの当たり判定が狭いし弾数少ないしでぜんぜん 400 体倒せないんですけど……たぶん 10,000m も走れば達成できると思うんですけどなにせショットガン系と違って巻き込んで倒せないので敵を見ながら走らないといけなくて、敵見ながら走ってるとバリケードに突っ込むんですよね。つらい。
とはいえ、それくらい手応えのあるミッションでないと、という感じではあります。コンティニューでなんとかできそうだし。

ドット絵がめちゃよく描き込まれてて見てるだけでもだいぶ楽しいです。ゾンビかわいい。基本無料なので興味ある人は遊んでみてください。