![見出し画像](https://assets.st-note.com/production/uploads/images/78454297/rectangle_large_type_2_6c8ecd3121f74bb0c544dfad2f8eed07.jpeg?width=1200)
RUDP、UDP、P2P、TCPの違いとは?
MOBAの正式名称はマルチプレヤーオンラインバトルアリーナ(Multiplayer online battle arena)、複数のプレイヤーが同時に参加できるオンライン対戦ゲームを指します。スマホ、PC、PS5やXBOX、プラットフォームを問わずMOBAゲームに寄せられた世界各地のプレイヤーたちはインターネットを通じて競い合い、まるでコミュニティみたいに交流します。
従来の電信機から現在のオンライン通話に至るまで、実用された技術の革新・普及は目を瞠るほど飛躍的でした。その裏にはUDP、TCP、RUDP、P2Pなどといった通信プロトコルの活用があります。
基礎のUDPとTCPから話をしよう
![UDPとTCPの違い](https://assets.st-note.com/img/1652342913538-HFhZpA6dBD.jpg?width=1200)
UDPとは、User Data Protocolの略語で、高速通信を重視する通信プロトコルである。
UDPはコネクションレス型通信プロトコル(事前のやり取りなしで通信を開始させる)として、動画配信、音声通話、モニター監視などのリアルタイム的な分野で活用される。TCPとは、Transmission Control Protocolの略語で、高い信頼性で安定した通信を重視する通信プロトコル。
TCPはコネクション型通信プロトコル(事前のやり取りを確認した上で通信を開始させる)として、ウェブサイト閲覧、ファイル転送などのデータ完全性が求められるアプリケーションで実用される。
![UDPとTCPの仕組み](https://assets.st-note.com/img/1652342858717-6wmKoKMcZW.jpg?width=1200)
RUDPとは?UDPの進化?
RUDPとは「ReliableUDP(User Datagram Protocol)」の略で、リアルタイム通信に用いられる通信プロトコルの1つです。UDPのような高速通信を重視する特徴を持ちながら、メッセージ再送による高品質・信頼性の確保を実現できます。
![RUDPの仕組み](https://assets.st-note.com/img/1652412419959-N4So5ulECP.jpg?width=1200)
上記の図を示すように、RUDPの場合ではシーケンス番号の順に追ってパケットロスを確認し、データパケットを再送することがあります。
RUDPの特徴
パケットの到達順序:ゲームの進行状況を守る
パケットロスが発生する際に、対象パケットが受信されるまで次のパケットを処理しない。
大容量データの分割・整合:マルチプレイヤーオンラインゲームのの最適化
分割されたパケットは1つでも失われたらまるごと使えなくなる可能性が高い。RUDPによるパケットの分割・結合は情報の信頼性を確保できる。
セキュリテイ強化:チート対策
サイバー攻撃や悪意ある行為を防ぐために、一定の通信間隔が設定されます。頻繁な再送信を避け、複数回の受送信失敗を「通信中止」と見なす。
UDP、RUDP、TCPをもとに開発されたオンラインゲームはまた様々な通信方式を利用しています。その中にP2P型とクライアント・サーバー型は主流。
![UDP、RUDP、TCPを活かしたゲーム](https://assets.st-note.com/img/1652348720437-PFCynF8iCx.png?width=1200)
様々な通信方式
P2P型
P2PとはPeer to Peerの略で、「サーバー経由」を飛ばしてクライアントとサーバの一体化を実現した通信方式です。ゲームに参加した全てのプレイヤーは互いに通信を行うと同時に情報交換をします。それによって、相互通信チャンネルが成り立つわけです。
![P2P型](https://assets.st-note.com/img/1652414114350-PMAdJ8B5hR.jpg?width=1200)
クライアント・サーバ型
クライアント・サーバ型通信とは、全てにサーバを介して通信を行うということです。利用者が操作する「クライアント(パソコン、スマホなど)」をインターネットに結び、クライアントからの要求にリアルタイムサーバが応答する形で処理を進める方式です。この場合、遠距離通信による高い遅延(タイムラグ)が現れます。
![クライアント・サーバ型](https://assets.st-note.com/img/1652424337973-l7dOTI3bsZ.jpg?width=1200)
P2Pとクライアント・サーバの違い(メリット・デメリット)
オンラインゲームにおいて、一見してプレイヤーは1体のキャラクターしかコントロールしていないのですが、実際に参加者が増えるほどリアルタイム通信は複雑になります。
![P2Pとクライアント・サーバの違い(メリット・デメリット)](https://assets.st-note.com/img/1652497933238-gNFK99FQ5f.jpg?width=1200)
例えば、下記の図を示すように、1v1対戦ゲームの中では自分のキャラクターを操縦するだけでなく、相手のキャラクターへのダメージや影響を正しく反映させなければなりません。そうなると、端末ごとに2体のキャラクターが存在し、システム全体にはキャラクターが4体存在することになります。
![1v1対戦ゲーム](https://assets.st-note.com/img/1652767408191-PvFYoyLay3.jpg?width=1200)
4体ならまだしも、対戦ゲームに参加した人数が増えればそれなりにサーバーの処理負荷は重くなります。そのため、リアルタイムサーバのような低遅延・高頻度・高速通信を実現できる構成が求められます。ひいては、サーバ経由を捨て、P2Pのようなクライアントとサーバの一体化を生み出しました。
多人数、リアルタイムを特徴づけられるマルチプレイヤーのオンラインゲームから見ると、P2Pとクライアント・サーバ型の違いをいくつかにまとめます。
P2Pのメリット
一体化による低遅延(低いレイテンシ)
少人数(要素が少ない)はシステムに優しい
サーバー経由なしで、コスト削減につなぐ
![P2Pのメリット](https://assets.st-note.com/img/1652422379598-CZVHyk7tdp.jpg?width=1200)
クライアント・サーバ型のメリット
参加者が増えてもシステム通信はシンプルでいける
サーバーに繋がることでプレイーできる
相互通信(対戦)を制御できる
強いセキュリティ(チート)対策
![クライアント・サーバ型のメリット](https://assets.st-note.com/img/1652425239251-PdYEJsNGPY.jpg?width=1200)
P2Pにおける合意問題
合意問題とは各端末に存在したある変数の値を統一する問題です。ゲームの中ではボスを倒した後に宝箱やアイテムが1つや2つ出てくるでしょ。それを参加者の誰かに渡すのかについては合意で決められます、いわゆる多数決で。
各Peerはある変数をYと設定しておいて、自分の変数値を代入します。そして自分の変数値を全てのPeerに送信します。
![P2Pにおける合意問題](https://assets.st-note.com/img/1652426651571-PgzyQoazgC.jpg?width=1200)
他のPeerから受信した変数値を記録した後に多数決を行います。多数決で決めた変数値を全てのPeerに共有して統一させます。
![](https://assets.st-note.com/img/1652426660538-DjTqZvq62p.jpg?width=1200)