アプリ詳細
みんなで協力してボールをゴールに導くゲーム
WebSocket を用いたスムーズな同期と、Matter.js によるリアルな物理演算で、直感的な操作を実現。
ゲームの流れ
1. オーナーが部屋を作成
- オーナーはゲームルームを作成し、Room ID が発行される。
- WebSocket 接続を確立し、ゲームのホストとなる。
2. 参加者が入室
- 参加者はオーナーから共有された Room ID を入力し、部屋に参加。
3. ゲーム開始
- オーナーが「開始」ボタンを押すと、全プレイヤーにゲーム開始の通知を送信。
- Matter.js で描画された 2D ゴルフのステージが表示される(ステージは固定)。
4. ボールをゴールに入れる
- プレイヤーはボールの弾く向きと強さを決定。
- Matter.js の物理エンジンを利用し、ボールをドラッグしてエイム & パワーを設定。
- 設定が完了すると、サーバへ情報を送信。
5. サーバが最終ベクトルを計算
- 全プレイヤーの入力を集計し、サーバがベクトルの平均を計算。
6. 返却されたベクトル情報を実行
- クライアント上で計算されたベクトルを適用し、ボールを動かす。
- ゴールに触れなければ継続、触れたらゲームクリア!!。
使用技術
WebSocket(FastAPI) : 全プレイヤーのリアルタイム通信を実現
Matter.js : 物理エンジンを用いた 2D ゴルフの描画・挙動を制御
Redis : 高速なデータ管理でスムーズな同期を実現
難しかったところ
- 作成するプロダクトがハッカソン中に2回変更した
- WebSocketのルーム管理
- ゲームの状態管理
- Matter.js(物理エンジン)の挙動が不安定
こんな人におすすめ
- 友達とリアルタイムで遊べるゲームを楽しみたい人
- 直感的な物理演算ゲームが好きな人
- 協力プレイで戦略を考えながら遊びたい人
みんなでボールを飛ばし、ゴールを目指そう。