TCPとUDPのおはなし
〔Game - MoE〕 12:48 2 Comment ツイート
TCPとUDP、最近はルーターとかもバンバン流通してるのでけっこう聞いたことある人も多いと思います、
簡単にいうとTCPとかUDPとかいうのは通信方法のことで、TCPというのは、ネットを行き来するデータすなわちパケットを相手に送った後、 「相手方にちゃんと届きましたよー」という返事をいただける通信方法。返事をいただいたり他の細やかな制御をするためにデータの長さが ちょっとだけUDPより長くなったり、あと返事を待ったり、ちゃんと届かなかったら送り直したりするので信頼性は高い通信方法、ただし 色々と時間と手間がかかっちゃうわけですよ到達するまでに。 対するUDPというのはそんな面倒な手間と時間をかけずに相手に一方的にパケット送りつけてハイ終わりの通信方法。付与するデータも 非常にシンプルにできていて、送り主は相手がちゃんと受け取ったかどうか確認する方法がなかったり、相手先もそれを受け取れなかったら ゴミ箱にポイするだけです。速さのUDP・信頼性のTCPなんてよく比較されますがまさにそのとおりだとおもます
で、
つまりどういうことかというと、いわゆるマルチプレイ対応とかのゲーム(MOってやつですね)で使用するポートにUDPが多いのは、 マルチプレイってのは大体ホラ、2人〜4人用とかのものが多いですね。そんなに複雑な通信は必要ないし人数少ないからエラーも出にくい、 したがって信頼性は低くても高速で通信ができるUDPをよく使います。ましてやそういう類のゲームはネット対戦とかのモノが多いだろうし だとすればスピードは重要ですからね、アーマードコアやS.L.A.Iのネット対戦だとかPSOとかが主にUDP使ってます。 一方、UOやリネなどのMMOはTCPにしないと大変です。人がいっぱい一つのサーバーに接続したりするので、複雑な通信が必要だし エラーも出やすいのです、なのでむしろUDPの出る幕は非常に少なく、時間はかかっても正確なデータを各PCにお届けしているカンジ、
ではもしMMOの通信の大部分にUDPを使ったらどうなるか? たとえばキャラが走ったりします、するといわゆる座標とか位置情報っぽいデータを連続で送信し、それがまぁ走ってるっぽくなる、と、 TCPで通信していると常に双方で「ちゃんと座標情報変わったよね」「うん、変わったよね」とお互い確認しあうことができます、が! UDPの場合「座標変わったでーほいパス」「あ! ちょいまち落としちゃった! もっかいパス!」「やーもん送らへんもん。はい次の座標」 ということになり、その部分のデータはすっぽり抜け落ちて次に進むことになります、 するとそのターゲットに対し信頼性が落ちることになり「それ本当にソコあんの? 嘘ついてへん?」とか「もっかい計算しなおしやー」 とかいうことにしないとつじつまがあわなくなってきます。
つまりそういうことなんじゃないかなぁ、と思うんですよぼくは。うん( ∵)