超ドラゴクエストⅩTV #2 教えて!青山さん

サーバーはそれぞれのクライアントと通信している。
20180130サーバーとクライアント
クライアントというのは、ユーザーの端末。
サーバーは各クライアントと色んな通信をする。

右下のクライアントが自分で、その他のクライアントは他人であるとする。
20180130クライアントのうち1つが本人

自分がジャンプすると・・・
20180130自分がジャンプ

ジャンプしたことがサーバーに送信される
20180130ジャンプしたと認識
それを受信したサーバーはどのクライアントに「自分」がうつっているか判断し

サーバーは「自分」がうつっている各クライアントに「ジャンプした」ことを送信する。
20180130各クライアントに通信

ジャンプのお知らせを受信したサーバーは、該当キャラクターをジャンプさせる。
20180130各クライアントでジャンプ
そのため、この場合の「自分」のジャンプは「他人」の画面では少し遅れて表示される。

左上だけ違うジャンプをしているのは「レアジャンプ」
20180130レアジャンプ

「ジャンプ開始」の通信はするけどジャンプの種類は通信しない。
20180130ジャンプ開始だけ通信
ジャンプの種類は各クライアントで判断する(というかランダム)
ジャンプの種類も通信すると、通信料じゃサーバーの処理する量(負荷)も増えてよろしくないのでこうしている。

移動しながらジャンプすると、移動(座標)とジャンプを通信するが・・・
20180130移動ジャンプ
移動ジャンプは遅延が大きい。

移動は0.5秒ごと(=ゲーム内の座標で3m動ける)にサーバーに送信
20180130キャラクター位置の通信

ジャンプすると「ジャンプ開始」と「ジャンプ位置」をサーバーに送信
20180130ジャンプ開始&ジャンプ位置

受信側クライアントでは、送信側がジャンプした位置に着いたらジャンプ
20180130その位置に着いたらジャンプ
これが「移動ジャンプは遅延が大きい」理由

クイズ「通信頻度の高い順に並べてください」
20180130クイズ
A.連続ジャンプ
B.連続移動ジャンプ
C.さそう踊り

答:B>A>C

Bはジャンプするたびに「ジャンプ開始」と「ジャンプ位置」の通信をする。
Aはジャンプするたびに「ジャンプ開始」の通信をする。
Cは踊っている間ずっと通信しまくるわけではなく、「踊り開始」と「踊り終了」の通信しかしない。

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