Rails 7のTurbo Streamを使用してなにかアプリケーションを作れないかと考えたとき、何度か遊んだことのある「人狼ゲーム」をWebアプリケーションとして再現できないかと思いついたのがきっかけでした。
2024年11月27日から作り始めて、12月23日に無事クラウド上にデプロイすることができました。
当初の目的を達成したため、このページはドメインの契約が切れるまでは記録として残そうと思います。
現在参加することのできるルームの一覧を表示します。それぞれのルームの現在の参加者や、ルームにあらかじめ設定されたルールを確認できます。
ルームごとに参加者に応じて討論時間やそれぞれの役職を割り当てる人数を指定できます。
スライダーの値がリアルタイムに反映され、ルームの合計人数が確認できます。また、村人よりも人狼の数を多いルームは作成できないようにしています。
ルームの参加者がリアルタイムに反映されていきます。この画面で全員揃うとゲームが完了するまで他のルームには参加できなくなります。
参加者が全員揃うとそのルームで役割が発表されます。各役割のヒントも確認することができます。
それぞれの参加者が実際に話し合う画面です。あらかじめ指定した時間までタイマーが表示され、時間がくるまでは発言することができます。
人狼と疑わしき参加者を選択する画面です。最も多い投票数の参加者が重複した場合は再び選択する画面に戻ります。
投票で最も多く選ばれた参加者がゲームから脱落します。投票結果を確認することができます。
この画面では実際の端末を操作する姿で役割を推測されるのを防ぐため、すべての参加者に対して選択画面を実装するべきでした
他のユーザーは通常の確認メッセージが表示されるが、占い師と霊媒師はそれぞれの結果を知ることができる。
人狼によって襲撃された参加者を表示する画面です。襲撃が成立しなかった場合は騎士のアイコンが表示されます。
村人および人狼側が特定の人数に減ったときに勝利した陣営が表示されます。結果を確認した参加者はルームの一覧へ遷移します。
Railsのおかげで実装は最後まで大きく破綻することはなく、テストなどを駆使してUIなどにこだわりを持ちながら作業することができました。
普段決まりきっている画面ではなく、すべての画面を0から作り上げるのは大変でしたが貴重な経験でした。
フィードバックから得た改善点、実装しきれていない箇所、細かい挙動の修正等やりたいことはありますが、現時点での実装はここまでとして今回得た経験を活かしていきたいです。