🎮
Multiplayer PLATEAU Sniper Game
国土交通省の3D都市データ PLATEAU を使ったリアルタイム対戦スナイパーゲーム。Unity + Next.js + PartyKit/WebRTC で構築。
UnityWebRTCPLATEAUCloudflareNext.jsPartyKit
Overview
国土交通省が公開している 3D 都市データ「PLATEAU」を Unity に取り込み、 リアルタイム対戦スナイパーゲームとして実装したプロジェクト。
マルチプレイヤー通信は PartyKit (Cloudflare Durable Objects ベース) と WebRTC を組み合わせ、 低レイテンシのリアルタイム同期を実現。
Architecture
Unity Client (PLATEAU 3D city)
↕ WebRTC (P2P)
PartyKit / Cloudflare Durable Objects
↕ REST API
Next.js Frontend (lobby / matchmaking)
↕
Cloudflare Workers + D1 (score / rooms)
Key Features
- PLATEAU 統合 — 実在する都市を戦場として使用
- リアルタイム同期 — WebRTC P2P + PartyKit によるルーム管理
- 弾道シミュレーション — 距離・風速・重力を考慮した物理演算
- マッチメイキング — Next.js + Cloudflare Workers
Technical Highlights
PLATEAU の 3D Tiles データを Unity で動的ロードし、ストリーミングレンダリング。 MessagePack によるバイナリシリアライズで通信量を最小化。
Stack
- Game Engine: Unity 2022 LTS, C#
- 3D Data: PLATEAU (国土交通省 3D 都市モデル)
- Multiplayer: PartyKit, WebRTC, Cloudflare Durable Objects
- Web: Next.js 15, TypeScript
- Serialization: MessagePack