種類
🟦 ① ゲームデータ(ユーザー情報・ガチャ結果・アイテムなど)
👉 普通のWeb API(HTTPS, GET / POST)
モバイルゲームやソシャゲはほぼこれ。
例)
- ログイン
- ガチャ結果送信
- クエスト結果送信
- ユーザーデータ保存/取得
Swift/Unity だろうがだいたい HTTPS で JSON 送ってます。
普通の API サーバー(Rails, Go, Node, Laravel)+ DB です。
🟩 ② リアルタイム同期(オンライン対戦・位置同期)
👉 WebSocket / UDP が多い
ターン制ゲーム → HTTPで十分
FPS・格ゲー → UDP+独自プロトコル or WebSocket が鉄板。
例)
- FPS のプレイヤー座標同期
- 格ゲーのフレーム入力
- リアルタイムマルチプレイ
“高速・低遅延” が必要なので HTTP では無理。
🟨 ③ 大容量データ(アセット配信・更新)
👉 CDN + HTTPS でバイナリを分割ダウンロード
例)
- アプリ起動時の追加データDL
- マップデータや画像などのアセット更新
ここも HTTP だけど API ではなく静的ファイル配信。
✨まとめ
| 用途 | 通信方式 |
|---|---|
| ユーザー情報・ガチャなど | HTTPS + GET/POST(REST API) |
| 対戦ゲームのリアルタイム | WebSocket / UDP(独自プロトコル) |
| アセットDL | HTTPS(CDNで静的配信) |
💬 つまり…
「ゲームだからGET/POSTを使わない」ではなく、むしろ普通に使う!
ただしリアルタイム性が必要なら HTTP を捨てて WebSocket / UDP に行く。
🟦 ① WebSocket とは?
双方向通信の“常時接続”ができる仕組み。
HTTP はリクエスト → レスポンスの一往復だけど、
WebSocket は最初の接続後ずっと繋ぎっぱなし。
🔸 できること
- サーバーからクライアントへ「勝手にプッシュ」できる
- 毎フレームごとにデータ送る
- オンライン対戦ゲームやチャットなどで使われる
🔸 データ形式
テキスト or バイナリ
→ ゲームでは JSON or MessagePack が多い。
例:
|
1 2 3 4 5 |
{ "type": "player_move", "x": 120.3, "y": 48.1 } |
🟩 ② UDPとは?
超高速・低遅延の通信方式
HTTP や WebSocket の基盤である TCP と違って、
- 再送なし
- 順番保証なし
- 接続の概念なし
…という“超軽量通信”。
だから FPSや格ゲーのようなミリ秒勝負のゲームで使われる。
🔸 できること
- 1秒60〜120回の位置更新
- ラグの最小化
- 爆速のリアルタイム同期
🔸 データ形式
ほぼ バイナリ(独自フォーマット)
※JSON は遅いので使われない
例(ざっくりバイト列)
|
1 |
[0x01][プレイヤーID 2byte][x座標 float][y座標 float][方向 byte] |
🔧 WebSocket vs UDP の違いまとめ
| WebSocket | UDP | |
|---|---|---|
| 方式 | 常時接続(TCP) | コネクションレス |
| 再送/保証 | あり | なし |
| 速度 | 速い | 超速い |
| データ | JSON/Text/Binary | バイナリのみが多い |
| 用途 | リアルタイムだけど保証も必要なゲーム | FPS/格ゲーなどガチリアルタイム |
👀 実際のゲームはどうしてる?
ソシャゲ(ターン制・非リアルタイム)
→ HTTP + JSON のみ
オンライン協力/対戦(リアルタイム要素あり)
→ WebSocket + JSON/MessagePack
FPS・格ゲー(フレーム単位の勝負)
→ UDP + バイナリ + 独自プロトコル
コメント