のりまき日記

Unityなどの活用リファレンスブログ。「こうしたい時どうする」をまとめたい

unity)通信プロトコルの選び方

はじめに

unityでインタラクションコンテンツを作っていると、アプリ間の連携などでネットワーク通信がしたいことがよくあります。やりたいことによって最適なプロトコルがあるのでまとめてみます。なんとなく知ってるだけでも使えると思うので、細い説明を省いて超ざっくりまとめます。(細い説明はネットにたくさんあるので検索してください。)

よく使うプロトコル

  • HTTP
  • WebSocket
  • OSC

TCPUDP

コンテンツを作る上で知っておきたいのは以下になると思います。

プロトコル 使い所
TCP 相手に送るよ!とあいさつしてから返事があってから送る。確実に届いてほしい時に使う。丁寧だけど遅い。
UDP 勝手に送る。届いてる保証はない。だいたい届いてればいい時に使う。雑だけど速い。

note

プロトコルは以下に該当します

使い分け

僕が使い分ける時はだいたい以下を基準に選んでいます

プロトコル 使い所 具体例
HTTP リクエストしてレスポンスがほしい時 設定の同期など
WebSocket 双方向でデータを送りたい時 オンライン対戦など
OSC 一方的に命令したい時 アプリの制御など

よくやる実装

unityで使う場合いろいろ実装方法はありますが、僕は以下を利用しています。

プロトコル サーバー クライアント
HTTP C#で作る C#で作る
WebSocket 中間サーバーを置きたい時はnode.jsで作る websocket-sharpで作る
OSC uOSC uOSC

おわりに

リアルタイム通信をしたい時にPhotonなどのサービスを使うこともできますが、簡単な位置同期などであればWebSocketで自作してしまうと無料でお手軽にできたりします。