推しアイデア
スマートフォンで射的のコルク玉を発車します。ターゲットマークがPCに現れます!
スマートフォンで射的のコルク玉を発車します。ターゲットマークがPCに現れます!
夏祭りをもっと楽しみたい!射的をやったのっていつ?Webで作ってみんなと交流したい!
CI/CDを組み、Github actionsで開発ワークフローを自動化しました!
ここから射的の屋台へ!
右側のQRコードを読み込むとスマホ画面にもこのように、射的へ向かうボタンが!
射的の屋台へ行ってみると射的場が!(夏祭りの音楽も!)
手元をみると、なんと、3つのコルク玉とshootのボタンが!
PC画面に向かってスマホを向けて打ってみると、、
商品ゲット!
取れなくても残念賞!
バックエンド↓↓ https://github.com/claustra01/virtual-natsumatsuri-backend RustのAxumで、WebSocketを実装しました。 複数人で同じ射的上で遊べるように、ルームの概念を実装しました。
フロントエンド↓↓ https://github.com/claustra01/virtual-natsumatsuri-frontend React + Vite + SWCの構成 react three fiberを用いて3Dの表現を行い、物理演算はcanonというライブラリを用いました。
インフラ↓↓ https://github.com/claustra01/virtual-natsumatsuri-infra デプロイ先にはGCPを利用しました。 CI/CDを組んで、効率よく開発できる環境を整えました。 また、terraformを用いてIaCにも挑戦しました。
1つのWebアプリケーションですが、スマホで開くとコントローラになります。このスマホの角度や加速度を取得し、WebSocketサーバーを介してPC側に渡すことで、照準や機能を実現しています。また、命中判定については3次元キャンバスの再描画が発生するのを防ぐため、平面投影したレイヤ上で疑似的に命中判定を実現しています。
もちろん、うまく行ったことばかりではなかったです。ここまで体制を整えても思った通りに実装が進まなかったり、機能要件でも何度も話し合いましたし、技術力の差で知識の共有ができなかったり、2時間ごとのスクラムは寝れなくてしんどかったり、、、ここまでチーム体制を整えてもいろんな壁がありました。チーム開発は難しいと感じることが多いです。でも、だからこそ、何か作れた時はとても楽しいし、ハッカソンのために鹿児島まで来てしまうんだと思います。改めて強くそう感じました。