PHP
JavaScript
Laravel
homestead

素人が一週間で人狼ゲームを作ってみた話。(Laravel)

ネットに転がっていた簡単なチュートリアルを参考に、記事投稿サイトを作成したことしかない素人がネットを頼りに人狼ゲームを作ってみた話です。


背景

何かもっと「作った!!」と言えるようなサイトを作ってみたいと思っていたとき、友達と一緒にスマホアプリの人狼ゲームをやっていたが、課金をしないと役職が増えないことに不満を持ったことがきっかけで、「なら自分で作ればいいじゃん?」とアホなことを考え、作成に至った。


設計

まあ何はともあれ、まずは設計しないと後々大変なことになると思ったので、設計をしようとしたが、umlとかをやろうとすると設計だけで力が尽きそうな予感がしたので、適当にゲームの流れを書いて、終了。(1時間経過)


作成


ゲーム開始前の設定作成


  • 人数を決めさせ、役職を決めさせ、ルールを決めさせる。

ここは簡単にできるだろうと思っていたが、すぐにそれが誤りだったと知る。

ユーザの入力に応じて入力欄を増やさないといけなかったり、役職の数が人数と等しくなるようにしなくてはいけなかったり。

とすると。うん。javascriptが必要ですね。

ほぼjavascriptの知識がなかったので、適当に基本的な構文と簡単なDOM操作方法だけ抑えていざ、作成。心が折れそうになった。

綺麗さを犠牲に何とか作成。(1日目終了)



  • プレイヤー一人一人に順番に回していき、それぞれ夜のアクションを行わせる。

ここに来た時には簡単なjavascriptならかけるようになっていたため、思っていたより早く作成が完了。(2日目終了)



  • 投票を行わせ、一人の犠牲者を出す。

意外とここも早く作成することが出来た。(3日目終了)


ルールを適用する


  • 初夜殺し、初夜占い、連続ガードを選択できるようにする。

設定画面は作っていたが、適用出来るようにしていなかったことが判明。

色々直さなくてはいけないところが出てきて、頭がくらくらしてきた(5日目終了)


役職を増やす


  • 人狼、市民、多重人格、占い師しかいなかったので、追加。

本来の目的を忘れていた。よく覚えていないが、いたるところを直さなくてはいけなくなったのを覚えている。(6日目終了)


決選投票を出来るようにする


  • 同率一位になったらランダムにしていたが、それだと面白くないということで決選投票を作成。

お帰り、javascript地獄。(7日目終了)

...一週間といったな?あれは嘘だ。


バグを取り除く


  • 友達にやらせてみたら、他のデバイスのプレイヤーを持ってきてしまう時があったので直す。

原因がすぐに見つかったため意外と早く治せた。(+1時間30分)


終えてみて

最初の設計のほとんどが変更をたどることになった。

なぜあんなにも設計を丁寧にさせようとしているのかが分かった。設計、大事。

UIに関しては思いっきり手抜きです。はい。


使い方

アカウントがないとゲームを開始できないようにしてあるので、もし使う方が居たら右上の[Register]タブからアカウントを作成してください。

アカウントが作成出来たら、トップページの[New Game]からゲームを開始できます。

使い方としては一つの端末で複数人で端末を回しながらゲームをしてください。

役職にある[狼男]ですが、勝手に自作した役職ですので気にしないでください。そのうち各役職の説明も表示できるようにすると思います。