![見出し画像](https://assets.st-note.com/production/uploads/images/65662199/rectangle_large_type_2_79ce9418aae5e368a6b3ec67a86c1356.png?width=1200)
ひとりで遊べる人狼(for Pi STARTER)
この記事はnoteお題企画「#ゲームの作り方」の主旨に基づき、過去に私が制作したゲームプログラム「ひとりで遊べる人狼」をご紹介するものです。
ひとりで遊べる人狼(for Pi STARTER)
このゲームブログラムは、本来なら最低でも5人以上はいないと遊ぶことができない人狼ゲームをひとりで遊べるようにしたものです。
人狼ゲームはときどきテレビ番組で紹介されたりしてみんなそのタイトルは知っているのですが、人数を集められないという理由でまだプレイしたことのない方が多いのではないでしょうか。
なおこのプログラムは現在、下記サイトにて無償配布しております。今後、私の気まぐれにより有償化する可能性がないとも言えないので(笑)、気になる方はとりあえずゲットしておくと良いでしょう。
遊ぶのに必要なもの(Pi STARTERの説明)
このプログラムを動かすにはRaspberry Pi(ラズベリーパイ。通称「ラズパイ」と呼ばれます)+「Pi STARTER」という言語パッケージが必要です。
ラズパイにはいくつかバージョンがありますが、オススメは「3モデルB」か「3モデルB+」です。「4」は後述する「Pi STARTER」に非対応なので×です。これより古いバージョンでも動かないこともないですが、音楽がうまく再生されないなどの不具合が発生することがあります。
「Pi STARTER」とはラズパイでSmile BASICという言語を使用することができるパッケージで、株式会社スマイルブームによって開発され、TSUKUMOにより販売されています。
「Pi STARTER」についてはこちらの記事も合わせてご覧ください。
その他周辺機器として、HDMIに対応するモニタ、そしてUSBキーボードが必要です(Bluetoothタイプでも可)。
このゲームの特徴(ウリ)
① あの有名な人狼ゲームをひとりで遊べます!
他プレイヤーはすべてコンピューターが代わりにやってくれます。仲間を集めるのが困難な方でも、これで人狼ゲームの疑似体験ができます。
② 人狼やったことない方のためにちゃんとレクチャーします!
人狼ゲームの説明が用意されているので(もちろんスキップ可)、初めての方でも安心。むしろこれをプレイして人狼を覚えましょう。
③ コンピューターとはいえ、ひとりひとりが意思を持って行動します!
このゲームに登場する村人(人狼)はすべて疑似的な感情を持っています。自分が誰かに疑われたらムカつくし、持ち上げられたら好感情を抱きます。また役職者はそれに相応しい立ち振る舞いを心得て行動するようにプログラミングされています。AI?そんな大層なもんじゃないですけどねっ!
④ 村人に好きな名前を付けられます!
デフォルトの名前を変えることができるので、クラスメートや会社の人などをゲームに登場させることができます。付けた名前は保存されます。
⑤ 何人生き残っているかがビジュアルで分かります!
これ、意外と言わないと気付かないんじゃないかという特徴。実は議論中の背景に映っている人数で「いま何人生き残ってるか?」が分かるようになっているのです。芸コマって言ってくださいお願いします(笑)。
⑥ スコア制を導入しています!
役職ごとにボーナスの付き方などは違いますが、ゲーム中の立ち振る舞いにより得点が与えられます。ハイスコアは保存されるので、ぜひ何度もプレイしてみてください。200超えが出来たらかなりのものです。
⑦ 見え透いたウソはバレます!
たとえば「私は霊媒師です」と言ったあとで「私は預言者です」って言っちゃうとか、既にその場にいない人たちを「あいつとあいつが人狼です」って言っちゃうとか。そういう矛盾をコンピューター村人は聞き逃しません。見え透いたウソは必ず断罪され、スコアも大幅に減点されます。
⑧ 神様(オリジナルキャラ)が登場します!
どちらも絶対にコイツが人狼だと言って譲らず、議論が平行線になったときだけ登場し、神の采配を下します。しかも世界の彼方に追放(笑)。現実の人狼ゲームではどうしてるんでしょうねこういうとき。
人狼ゲームについての基本的な説明
ご存知の方も多いかもしれませんが、一応人狼ゲームの基本的な設定を紹介しておきます。下記はひとつの例であり、もっと凝った設定やストーリーが用意されているものもあります。
この村には人間に紛れて人狼が住んでいる。人狼は日中は何食わぬ顔をして人間と共に暮らしているが、夜中になると毎晩ひとり誰かを食い殺す。このままだと村人は全滅してしまう。困った村人はやむを得ず、毎日誰かひとりを容疑者と定め、村から追放することにした…。
人狼は対話型のゲームで、通常はひとりの司会者+複数のプレイヤー(最低5人いることが望ましい)という形でプレイされます。プレイヤーは最初に役職(後述します)のカードを受け取るのですが、このとき誰が人狼なのかが決まります。人狼を引いたプレイヤーは、プレイ中そうと悟られないように振る舞わなければなりません。
ゲームは議論フェーズ(昼)と活動フェーズ(夜)に分かれています。昼は議論を行なった結果として誰かひとりを決め、追放します。夜は人狼が人間のうち誰かひとりを選んで食い殺します。
昼と夜を繰り返し、人狼全員を追放できれば人間側の勝利、間違った裁定を繰り返した結果人狼と人間の人数が等しくなってしまったときには人狼側の勝利となります。
ただし人間の中には、預言者、霊媒師、ボディーガード、裏切り者といった役職を持つ者が存在します。
<人間の役職>
預言者:その日の夜にひとりだけ、そいつが人狼か否かを占える。
霊媒師:その日追放された者が人狼であったか否かが分かる。
ボディーガード:その日の夜にひとりだけ人狼の襲撃から守ることができる。ただし前日と同じ者を守ることはできない。
裏切り者:人間でありながら人狼に味方している存在で、人狼側が勝つと勝ちとなる。
役職者は自身の能力を活かしながらも、目立って人狼に食い殺されないようにうまく立ち回ることが求められます。
反対に人狼は裏切り者以外の強力な役職者をなるべく早めにつぶしておくことが生き残りの可能性を高めることにつながります。
人狼は発売されているバリエーションによっていろいろと細部が異なっているのですが、おおむね基本的なルールはこんなところ。ちなみに今回プログラミングしている人狼は下記のものをベースにしています。
特別公開!「ひとりで遊べる人狼」攻略法
実はこのゲーム、何気に手強いです。何も考えずにプレイしているとあっと言う間に追放されるか食われます。実際に私の家族からも「これ絶対に勝てないんだけどー!!」というクレームを頂戴しました(笑)。
みんな生き残ることに必死の世界なのでそこは容赦ないです。でも注意深くプレイすれば、生き残る確率を高める方法はあるものです。
まず、このゲームの基本である発言内容について。いくつかのバリエーションがありますが、おおむね次の7種類に大別されます。
<発言の種類>
・当たりさわりのない発言(特に何の影響ももたらさない)
・自分の評価を上げる発言(自分が役職者であると宣言する)
・自分の評価を下げる発言(わざとネガティブなことを言う)
・他人の評価を上げる発言(○○は人間だと思いますetc)
・他人の評価を下げる発言(○○が人狼ではないかと匂わせる発言)
・自分の評価を上げて他人の評価に影響する発言(自分が預言者であることを告げたうえで、他人の正体に言及する発言)
・役職者カウンター(特定の役職者を名乗る者が複数いる場合に限り選択できる。その役職を名乗った者の評価をまとめて落とす効果がある)
・当たりさわりのない発言例(特に何の影響ももたらさない)
・自分の評価を上げる発言例(自分が役職者であると宣言する)
・自分の評価を上げて他人の評価に影響する発言例(自分が預言者であることを告げたうえで、他人の正体に言及する発言)
・自分の評価を下げる発言例(わざとネガティブなことを言う)
・他人の評価を上げる発言例(○○は人間だと思いますetc)
・他人の評価を下げる発言例(○○が人狼ではないかと匂わせる発言)
・役職者カウンター例(特定の役職者を名乗る者が複数いる場合に限り選択できる。その役職を名乗った者の評価をまとめて落とす効果がある)
そして、投票の際にはこれらの評価が影響を及ぼします(絶対ではありませんが、傾向としてそうなる可能性が高い)。
<投票の傾向>
・個別に対する感情
CPUプレイヤーはそれぞれ自分の評価を上げた者と下げた者を覚えており、上げた者については好意的な対応を、下げた者については敵対的な対応をする傾向にある。
・周囲の評価に対応
CPUプレイヤーはそのとき全体で見て誰が一番評価が高そうか/低そうかを見ている(ただしこれも傾向であって絶対ではない)。そして投票時、個別に対する感情をこれに加えたうえで、誰に投票するかを決めている。
・役職による違い
普通の村人、預言者、霊媒師、ボディーガードはそのとき自分の中で一番評価が低い者に投票する。
人狼と裏切り者は逆にそのとき自分の中で一番評価が高い者に投票する。
こういうのは絶対ではありませんが、そういう傾向が現れるような作り方をしています。
投票タイムが終わると日が暮れて、恐ろしい夜がやってきます…。
今宵、人狼は誰を狙うのでしょうか?
<夜のアルゴリズム>
・預言者はそのとき自分の中で一番評価が低い者を占う。
・ボディーガードは前日守っていない者の中で、そのとき自分の中で一番評価が高い者をガードする。
・人狼はそのとき自分(たち)の中で一番評価が高いものを食い殺す。
以上のことから、次のような攻略法が導き出せます。
攻略法① 善意のいけにえ
発言内容によって誰かの評価が上がったら「ラッキー!」とばかりにプレイヤーの発言フェーズでそいつをさらに持ち上げてやるのです。するとそいつの評価がさらに上がるので、投票時に誰がそいつに投票するかを見るのです。このとき投票した者が人狼か裏切り者である可能性が高いです。このあとそいつは人狼に食われてしまうでしょうが(ヒドイ…)、あとは人狼とおぼしき奴をどんな手を使ってでも評価を貶めて追放してやりましょう。
攻略法② 悪意の濡れ衣
発言内容によって誰かの評価が下がったら、そこに被せてそいつの評価をさらに落としてやるのも有効な手です。そいつが人狼だったなら労せずして追放できるかもしれませんし(ギャンブル性高いですが)、何より投票時に自分以外の誰かをターゲットとすることで生き残る確率が上がります。ただしこのやり方はそいつが生き残ったとき必ず恨まれるので、多くの者から恨みを買わぬよう、濡れ衣を着せるのは最小限にとどめましょう。
攻略法③ カウンター
反対に誰かがプレイヤーの評価を上げたり下げたりしてきたときは要注意です。どっちに転んでも追放/殺害のケースがあるためです。このようなときは「上げられたらネガティブ発言をして下げる」「下げられたら役職者であることを匂わせて上げる」などして、何とか自分の評価を全体の中で平均点に近付けるように努力しましょう。それを心掛けているだけでも生き残れる確率が上がります。
攻略法④ 役職詐欺
人狼ゲームではいつでも誰でも自分が役職者であると名乗れます(嘘でも構いません)。これは自分が人狼サイドであるなら有効に使って自分の評価を高めることに使えます(なのでこのゲームは人狼サイドの方が断然生き残りやすい)。裏切り者であればこの手を使って人狼を守ることができます(誰が人狼かアタリが付いていればですが)。反対に人間サイドは確実に人狼を葬れると判断したならこの手は有効となり得ますが、しくじると反対に人狼の餌食となるリスクがある諸刃の件です。
こうして書いていくと、ヤなゲームですねこれ(笑笑笑)。
でもサバイバルの状況の中で生き残るってこういうことなんですよきっと。
ちなみにこのゲームデザインをするにあたって、特に参考にしたのは以下のコミックです。
後述しますが私は実際の人狼はプレイしていないので(いないんかいw)、これを文字通りむさぼるように読んで、その立ち振る舞い方をゲームに落とし込むような勢いで作りました。原作は川上亮さんの小説で、小独活さんによって漫画化されました。いろんな人狼関係の本読んだけど、私的にはこれが一番刺さったかなぁ…。物語の中でリアルに人が死んでいくので、人間の極限状況における意思決定を垣間見ることができる作品です。グロ注意ではありますけれども、オススメです。
▲ゲーム最後に各村人がプレイヤーをどう思っていたのかが表示されます。
うわー恨み買いまくってたな私…。
そもそも何で作ったの~noteへのつながり
最初は軽くプログラミングの練習するだけのつもりだったのです。
その頃ちょうど「学校教育課程におけるプログラミング教育の必修化」というテーマが巷を賑わしておりまして、私も人の親なのでこれは他人事じゃないぞと。んじゃ何に手を出すかなと思ってたところに、「Pi STARTER」との出会いがあったのですよ。
幸いなことにBASICなら少しだけ心得があったので、まぁ何とかなるだろうくらいの気持ちで。テーマに人狼ゲームを選んだのは、興味はあれど自分で遊んだことがなかったのと、人狼カードのマニュアル見たら8ページしかないのでこれならカンタンに作れるやろと思ったことが理由です。いやはや、人狼をあまりにも舐めすぎてました(笑)。
少しだけ心得あるって言っても、ゲームプログラムなんて初めてです。それはそれは七転八倒に五里霧中な有様でありました。最初はこんなん発言全部ランダムでええやんかーな勢いで作っていたものの、次第にそれじゃ自分が満足できなくなって、村人個別のパラメータ用意したりグラフィック作ったりと止まらなくなり、軽く練習するだけのつもりが何と1年半ものプロジェクトになってしまったのです。あーしんどかった。
▲後から追加追加…のなれの果て(笑)。
で、こういう「ド素人がイチからプログラミング覚えて作っちゃった」みたいなドキュメント書いたら「プログラミング始めてみたいんだけど…」みたいな初心者に刺さるかなーとか思っちゃいまして、それでこれの製作過程を記し始めたのが実は私のnoteの始まりなのです。このことは以下のマガジンに詳しく記されています。
上記マガジンの執筆は途中でstopしちゃってますが、いまからだと記憶を辿らないといけないし、何よりこれが動くのに必要なPi STARTERの売れ行きがイマイチな気がすることもあって、ちょっと万人受けする記事にはなり得ないなぁ…と二の足を踏んでいます。
読みたい方がいるなら続き書くかもですが…。
でもSmile BASICいいですよ。ラズパイ使いはPython(パイソン)の方が得意な方多いと思いますが、私は直観的な分かりやすさで言えばやっぱりBASICに軍配上がると思っています。昔のBASICの難点はハード的なメモリ制限と処理速度が主だったので、そこをラズパイで克服したPi STARTERは無敵なんじゃね?と私は勝手に思っており、こんなマガジンも作りました。
あまりにも人狼に費やしたリソースが膨大過ぎて、作ったあとは燃え尽きてしまいもう二度とやるか的な気持ちになってしまいましたが、それでも私は気が向いたらまた何かモノ作りすると思います。そのときもPi STARTER使うと思うので、願わくばこれがもっと皆様に広まることを願っています。
ではでは、まぁアテになりませんが、次の何かでまた皆様とぜひ。