推しアイデア
配信者やVTuberのプレイを視聴するだけではなく、敵として、味方として実際にゲームに参加するゲーム!
配信者やVTuberのプレイを視聴するだけではなく、敵として、味方として実際にゲームに参加するゲーム!
チームメンバーの一人が前回のハッカソンで作りたかったが、やむなく作ることができなかったゲームを今回は経験ある人間が集まったので挑戦しました
unityではMVP,バックエンドでは高凝集・ 低結合を意識した設計にしました! websocketを使用したリアルタイムな双方向通信の実装! redisを使用してスケーリングにも対応できるようにしました!
推しの配信者やVTuberを見てるだけで満足!?いっそのことゲームでいじめちゃおうよ!! え?推しをいじめたくない?だったら守ってあげてよ!
ex. 音量設定もできます
UIもこだわりました!!!!!
ゲーム部分: Unity バックエンド: Go フロントエンド: Next.js データベース: PostgreSQL, Redis
デプロイ先 ・Unity → unityroom ・Go → Cloud Run ・Next.js → Vercel ・PostgreSQL → Supabase ・Redis → Upstash
↓簡単なシステム構成(全部デプロイしました!)
配信者と視聴者という構図で視聴者側はボタンをたくさん押すことができるという要件から最初からスケーリングが行える構成にしようと考え設計を始めました。
ただやはり知識に限界があったので、GPT-5と最初はコストを抑えた最小の構成で、今後は拡張していくことを相談して構成を決めていきました。
下が話してた会話です。
https://chatgpt.com/share/68ce1f99-5d10-8006-b7b1-633be4c3248f
Redisは今回全員初めてという中選びました。 今回は全視聴者のリクエストの数が一定値に達するとUnityにイベントを送るという構成でした。 ただ、今後、サーバーの数を増やすなどを想定すると、状態をサーバー側が保持するわけにはいかない、ただ普通にデータベースに保存するなど考えるとI/Oあたりで不安が残るということで入れた感じになります。 かなりの不安要素でしたが、デプロイまで進むことができました。 また,今回の要件ではunity側とバックエンド側で双方向に通信がしたいものだったので,WebSocketを採用しました.よく使っているHTTPでの通信とは一味違った難しさがあり,戸惑いながらも何とか実装しました.
Unityではステージの自動生成を実装し切ることができました. 短いステージをprefabとして作り,それらをランダムな順番で生成することで実現できました. ステージをプレイヤーの位置によって生成することでシームレスに繋がっているように見えるようにしたり,prefabごとに高さに違いがあっても高さを合わせて生成することで崖ができないようにしたりと,細かなこだわりも満載です.