ゲームの通信方式

種類

🟦 ① ゲームデータ(ユーザー情報・ガチャ結果・アイテムなど)

👉 普通の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(独自プロトコル)
アセットDLHTTPS(CDNで静的配信)

💬 つまり…

「ゲームだからGET/POSTを使わない」ではなく、むしろ普通に使う!
ただしリアルタイム性が必要なら HTTP を捨てて WebSocket / UDP に行く。

🟦 ① WebSocket とは?

双方向通信の“常時接続”ができる仕組み。
HTTP はリクエスト → レスポンスの一往復だけど、
WebSocket は最初の接続後ずっと繋ぎっぱなし

🔸 できること

  • サーバーからクライアントへ「勝手にプッシュ」できる
  • 毎フレームごとにデータ送る
  • オンライン対戦ゲームやチャットなどで使われる

🔸 データ形式

テキスト or バイナリ
→ ゲームでは JSON or MessagePack が多い。

例:

🟩 ② UDPとは?

超高速・低遅延の通信方式
HTTP や WebSocket の基盤である TCP と違って、

  • 再送なし
  • 順番保証なし
  • 接続の概念なし

…という“超軽量通信”。
だから FPSや格ゲーのようなミリ秒勝負のゲームで使われる。

🔸 できること

  • 1秒60〜120回の位置更新
  • ラグの最小化
  • 爆速のリアルタイム同期

🔸 データ形式

ほぼ バイナリ(独自フォーマット)
※JSON は遅いので使われない

例(ざっくりバイト列)

🔧 WebSocket vs UDP の違いまとめ

WebSocketUDP
方式常時接続(TCP)コネクションレス
再送/保証ありなし
速度速い超速い
データJSON/Text/Binaryバイナリのみが多い
用途リアルタイムだけど保証も必要なゲームFPS/格ゲーなどガチリアルタイム

👀 実際のゲームはどうしてる?

ソシャゲ(ターン制・非リアルタイム)

→ HTTP + JSON のみ

オンライン協力/対戦(リアルタイム要素あり)

→ WebSocket + JSON/MessagePack

FPS・格ゲー(フレーム単位の勝負)

→ UDP + バイナリ + 独自プロトコル

コメント

タイトルとURLをコピーしました