はじめに
unityでインタラクションコンテンツを作っていると、アプリ間の連携などでネットワーク通信がしたいことがよくあります。やりたいことによって最適なプロトコルがあるのでまとめてみます。なんとなく知ってるだけでも使えると思うので、細い説明を省いて超ざっくりまとめます。(細い説明はネットにたくさんあるので検索してください。)
よく使うプロトコル
- HTTP
- WebSocket
- OSC
TCPとUDP
コンテンツを作る上で知っておきたいのは以下になると思います。
プロトコル | 使い所 |
---|---|
TCP | 相手に送るよ!とあいさつしてから返事があってから送る。確実に届いてほしい時に使う。丁寧だけど遅い。 |
UDP | 勝手に送る。届いてる保証はない。だいたい届いてればいい時に使う。雑だけど速い。 |
note
各プロトコルは以下に該当します
使い分け
僕が使い分ける時はだいたい以下を基準に選んでいます
プロトコル | 使い所 | 具体例 |
---|---|---|
HTTP | リクエストしてレスポンスがほしい時 | 設定の同期など |
WebSocket | 双方向でデータを送りたい時 | オンライン対戦など |
OSC | 一方的に命令したい時 | アプリの制御など |
よくやる実装
unityで使う場合いろいろ実装方法はありますが、僕は以下を利用しています。
プロトコル | サーバー | クライアント |
---|---|---|
HTTP | C#で作る | C#で作る |
WebSocket | 中間サーバーを置きたい時はnode.jsで作る | websocket-sharpで作る |
OSC | uOSC | uOSC |
おわりに
リアルタイム通信をしたい時にPhotonなどのサービスを使うこともできますが、簡単な位置同期などであればWebSocketで自作してしまうと無料でお手軽にできたりします。