オンラインで同期した100体の巨大生物から地球を衛る方法 【UNREAL FEST EXTREME 2021 SUMMER】

4.2K Views

May 24, 21

スライド概要

講演アーカイブ:
https://www.youtube.com/watch?v=4gn9Eyo5yG8&list=PLr_Cbd4sUDTwkjs-dreE91hRpk28ykqie&index=6

講演内容:
弊社で開発を担当しD3パブリッシャー様より昨年末にリリースされました大人気シリーズ""地球防衛軍""の最新作「ま~るい地球が四角くなった!? デジボク地球防衛軍」のオンライン協力プレイにおいて、襲いくる巨大生物を100体スポーン/レプリケートし、その行動を同期させることによるゲーム体験の向上を目標に掲げて開発を進めて参りました。本講演では、この目標を達成する過程で手に入れた知見を共有させて頂きます。

講演者:
小林 剛 (株式会社ユークス プログラマ)
林 耕司 (株式会社ユークス リードプログラマ)

https://unrealengine.jp/unrealfest/timetable/game-yukes.html
#ue4fest

profile-image

エピック ゲームズ ジャパン

@EpicGamesJapan

スライド一覧

Unreal Engineを開発・提供しているエピック ゲームズ ジャパンによる公式アカウントです。 勉強会や配信などで行った講演資料を公開しています。 公式サイトはこちら https://www.unrealengine.com/ja/

シェア

埋め込む »CMSなどでJSが使えない場合

各ページのテキスト
1.

オンラインで同期した100体の巨大生物から 地球を衛る方法 ま~るい地球が四角くなった!? デジボク地球防衛軍 の場合 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

2.

お品書き • はじめに • 巨大生物の同期方法(共通編) • 巨大生物の同期方法(固有編) • 巨大生物以外の同期について • まとめ ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

3.

はじめに デジボク地球防衛軍とは 2020年12月24日にディースリー・パブリッシャー様から 発売された、地球防衛軍スピンオフタイトルです。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

4.

はじめに デジボク地球防衛軍とは バラバラになった四角い地球を元に戻すために、 EDF隊員やオリジナルのキャラクターが奮闘します。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

5.

はじめに 基本的な事柄 ・エンジンバージョン 4.24.3をベースとしたカスタムエンジンを使用しています。 エンジン改造は最低限とし、ほぼベースのまま使用しています。 ・オンライン対応 本タイトルではリッスン・サーバーを使用し、最大4人までの オンラインマルチプレイに対応しています。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

6.

はじめに 本タイトルで目指したマルチプレイ ・巨大生物100体の同時出現と、オンライン同期 ・プレイヤー4人で最大16体のキャラクターの同期 ・協力プレイを前提とした、共闘感を出すこと これらを実現するために攻撃や死亡といった状態変化は優先的に 同期するようにして、ヒットポイント等の内部的なパラメータは 同期しないか同期頻度、優先度をかなり下げていました。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

7.

はじめに 本タイトルで目指したマルチプレイ またリッスン・サーバーを採用しているということもあり、 サーバーとなった端末の負担や待ち時間を軽減するため、 移動処理や攻撃の当たり判定、ダメージ計算などの処理は クライアントの端末でそれぞれ行う様にしました。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

8.

はじめに 用語解説 ・エネミー 巨大生物や怪獣などの敵キャラクターです。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

9.

はじめに 用語解説 ・ブラザー プレイヤーの操作する人物キャラクターです。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

10.

はじめに 用語解説 ・ミッション 本タイトルにおけるゲームプレイパート 及びその単位を指します。 プレイヤーがブラザーを操作して エネミーを倒す遊びの中核部分を、 ミッションと記載しています。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

11.

はじめに 用語解説 ・RPC 本スライド内で単にRPCと記載されている場合は、 信頼性なしのRPCを指します。 ・座標 座標は基本的にはLocation情報になります。 用途によってRotation情報を含む場合があります。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

12.

巨大生物の同期方法(共通編) 1. 2. 3. 4. 5. 6. 座標の同期 ダメージの同期 攻撃の同期 AI の同期 撤退の同期 特殊な演出の同期 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

13.

巨大生物の同期方法(共通編) 1.座標の同期 最初は UE4 標準機能である Actor の Replicate Movement オプションで座標の同期を行っていました。 作業用のレベルでは問題ありませんでしたが… 実際のゲーム用レベルでは座標のワープが多発しました。 エネミーが100体いる影響で同期する頻度が下がった為です。 その為、独自の同期処理を実装しました。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

14.

巨大生物の同期方法(共通編) 1.座標の同期 まず、エネミーの Root Component の座標とは別に 同期用の座標を作成し、レプリケートで同期するようにしました。 そして、各端末で同期用の座標に向かってRoot Componentを 移動する処理を実装しました。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

15.

巨大生物の同期方法(共通編) 1.座標の同期 この仕組によってエネミーが100体動いていても、 見た目上の大きな問題は発生しない様になりました。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

16.

巨大生物の同期方法(共通編) 1.座標の同期 1.サーバーから座標が送られてきます。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

17.

巨大生物の同期方法(共通編) 1.座標の同期 2.そこに向かって移動します。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

18.

巨大生物の同期方法(共通編) 1.座標の同期 3.再びサーバーから座標が送られてきます。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

19.

巨大生物の同期方法(共通編) 1.座標の同期 4.そこに向かって移動します。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

20.

巨大生物の同期方法(共通編) 1.座標の同期 同期した座標に移動させているのですが、移動速度は 一定ではなく、通信頻度から計算しました。 通信が安定しない環境では、受け取った座標が10m先の 場合もあれば、100m先の場合もあった為、一定速度では 座標が大きくずれる問題が起きました。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

21.

巨大生物の同期方法(共通編) 1.座標の同期 エネミーの数が減ると、通信頻度が上がります。 100体では0.3秒に1回程度でしたが、 エネミーが減っていくと0.1秒に1回程度になりました。 この変化を考慮して移動速度を計算しました。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

22.

巨大生物の同期方法(共通編) 1.座標の同期 同期する座標を受け取るまでに経過した時間をもとに、 移動速度を計算しました。 通信が大きく遅延すると、同期座標の更新が止まり、エネミーも 実際とは違う座標で停止してしまいました。 これを回避するため、移動速度も遅めに調整して、通信との バランスを取る対応を行いました。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

23.

巨大生物の同期方法(共通編) 1.座標の同期 移動速度を求める式 (同期した座標 - Root Componentの座標) / 経過時間(秒) 移動速度を遅くするには、経過時間に+αします。 本タイトルでは様々な環境で検証した上で、α=0.3秒としました。 調整前は5割のエネミーが停止していましたが、調整後は2~3割程度に 改善しました。この頻度であればマルチプレイにおける共闘感を阻害しな いと判断し、問題なしとしました。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

24.

巨大生物の同期方法(共通編) 1.座標の同期 エネミーの移動制御は自作の移動コンポーネントですので、 座標の同期による移動中は移動処理がスキップされるように 調整しました。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

25.

巨大生物の同期方法(共通編) 2.ダメージの同期 ダメージはサーバーで集計して、ヒットポイントの計算に 反映しています。 ダメージの送信は、RPC(信頼性あり)を使用しました。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

26.

巨大生物の同期方法(共通編) 2.ダメージの同期 ダメージは各クライアントで0.3秒に1回、まとめて 送るようにしました。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

27.

巨大生物の同期方法(共通編) 2.ダメージの同期 ヒットポイントは同期していません。 ダメージの計算はサーバーでやるため後述の死亡同期があれば ヒットポイントを同期する必要は特にありません。 与えたダメージ サーバー HP は渡さない クライアント ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

28.

巨大生物の同期方法(共通編) 2.ダメージの同期 ヒットポイントが0になったときに死亡状態を同期します。 死亡は大切な状態遷移のため、RPC(信頼性あり)を使用します。 与えたダメージ サーバー HP は渡さない クライアント 死亡は同期する ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

29.

巨大生物の同期方法(共通編) 2.ダメージの同期 ダメージが発生した際に、エネミーのヒットリアクションは 同期していません。 ※攻撃が当たった時のダメージ演出アニメーションや、 吹き飛ぶような演出をヒットリアクションと呼んでいます。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

30.

巨大生物の同期方法(共通編) 2.ダメージの同期 ブラザーの攻撃は厳密な同期をしていません。 そのため、エネミーのヒットリアクションだけを同期すると、 攻撃が当たっていないのにリアクションだけ再生している様に 見えてしまうため、不自然な見た目になってしまいます。 ただし例外的に同期しているヒットリアクションがあります。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

31.

巨大生物の同期方法(共通編) 2.ダメージの同期 よろめきアニメーションは同期しています。 このアニメーションには移動量があり、同期していないと 座標がずれてしまい不自然なスライド移動が発生します。 この問題は悪目立ちするため対応優先度が高く、通信には RPC (信頼性あり) を使用しています。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

32.

巨大生物の同期方法(共通編) 3.攻撃の同期 エネミーの攻撃の同期は、エネミーが攻撃するタイミングで 行いました。 同期には RPC を使用しており、引数に攻撃の種類を渡して います。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

33.

巨大生物の同期方法(共通編) 3.攻撃の同期 しかしそれでも、クライアントで攻撃しない問題が 度々発生しました。 これは、エネミーの攻撃制御プログラムに 問題があった為でした。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

34.

巨大生物の同期方法(共通編) 3.攻撃の同期 「ヒットリアクション中は攻撃しない」という攻撃制御が、 オンラインでは攻撃の RPC を受け取っても 攻撃できないという問題になってしまいました。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

35.

巨大生物の同期方法(共通編) 3.攻撃の同期 クライアントで攻撃の RPC を受け取ったら、 ヒットリアクションをキャンセルすることで回避しました。 それでも、通信環境によっては RPC のロストにより 攻撃しない事がありました。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

36.

巨大生物の同期方法(共通編) 3.攻撃の同期 怪獣などの超巨大なエネミーや、攻撃アニメーションの長い エネミーは攻撃を RPC(信頼性あり)で送ることで、攻撃が各 端末で実行される様にしました。 その他のエネミーは攻撃が必ずしも同期していなくても見た目上 の大きな問題はなく、共闘感を削ぐものではなかったため不問と しました。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

37.

巨大生物の同期方法(共通編) 4.AIの同期 エネミーの AI は、サーバーでしか動いていません。 サーバーの AI が決めた行動から、前述の座標や攻撃などの 制御ステートを同期することで、結果として行動も同期して いる様に見せています。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

38.

巨大生物の同期方法(共通編) 5.撤退の同期 ミッション中に倒すことが出来ないエネミーが、ミッションの 進行にあわせて撤退する場合があります。 エネミーの撤退は、以下の流れで行われます。 1. 所定の位置まで移動する 2. 撤退アニメーション再生する 3. 再生後に死亡ステートに遷移する ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

39.

巨大生物の同期方法(共通編) 5.撤退の同期 撤退の同期は特に凝ったことはしておらず、単純に 撤退アニメーション再生開始処理を RPC で同期しています。 もし撤退のRPCが届かなかったとしても、撤退後の 死亡状態の同期によって、エネミーは破棄されます。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

40.

巨大生物の同期方法(共通編) 6.特殊な演出の同期 ギサンダー(アリ)や、ツキサスピアン(ハチ)などがブラザーを 発見すると、目の色が変わります。 これはエネミーが攻撃状態かどうかを判断する基準となるため、 レプリケートで状態の同期を行いました。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

41.

巨大生物の同期方法(固有編) 1. 2. 3. 4. 5. ヘクトルの頭の開閉 ツキサスピアンの離着陸 シディロスの変形 ドラゴン・センチピードの生成 四足歩行要塞のレーザー砲 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

42.

巨大生物の同期方法(固有編) 1.ヘクトルの頭の開閉 ヘクトルというエネミーはブラザーを発見したら 頭が開閉するようになっています。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

43.

巨大生物の同期方法(固有編) 1.ヘクトルの頭の開閉 ヘクトルの頭は弱点となっており、開いている時に攻撃を 当てると大ダメージを与えることが出来ます。 その為、開閉状態のフラグをレプリケートで同期していました。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

44.

巨大生物の同期方法(固有編) 2.ツキサスピアンの離着陸 ツキサスピアン(ハチ)が地上にいるのか、空中にいるのかは 固有の方法で同期しています。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

45.

巨大生物の同期方法(固有編) 2.ツキサスピアンの離着陸 ツキサスピアン(ハチ)の離着陸のステート ・地上 ・離陸直前 ・離陸中 ・飛行中 ・着陸直前 ・着陸中 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

46.

巨大生物の同期方法(固有編) 2.ツキサスピアンの離着陸 離陸フロー 地上 離陸直前 離陸中 飛行中 着陸直前 着陸中 地上 着陸フロー 飛行中 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

47.

巨大生物の同期方法(固有編) 2.ツキサスピアンの離着陸 同期用のステート変数を使った同期処理 1.同期用のステート変数を用意する。 2.サーバーはステート変数に値を入れ続ける。 3.クライアントは同期用のステート変数と 実際のステートを比較する。 ステートが違うなら、離着陸の処理を実行する。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

48.

巨大生物の同期方法(固有編) 2.ツキサスピアンの離着陸 レプリケートではステートがスキップしてしまう事があります。 地上 離陸直前 離陸中 飛行中 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

49.

巨大生物の同期方法(固有編) 2.ツキサスピアンの離着陸 ツキサスピアン(ハチ)の離着陸のステート ・地上 地上系 ・離陸直前 飛行系 ・離陸中 飛行系 ・飛行中 飛行系 ・着陸直前 地上系 ・着陸中 地上系 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

50.

巨大生物の同期方法(固有編) 3.シディロスの変形 シディロスは落下形態から戦闘形態に変形します。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

51.

巨大生物の同期方法(固有編) 3.シディロスの変形 シディロスの変形フロー 1.落下形態 2.変形アニメーション 3.落下形態を Destroy、戦闘形態のシディロスを Spawn ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

52.

巨大生物の同期方法(固有編) 3.シディロスの変形 シディロスの変形フロー 1.落下形態 2.変形アニメーション 3.落下形態を Destroy、戦闘形態のシディロスを Spawn 2の、変形アニメーションを開始するタイミングだけを 同期していました。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

53.

巨大生物の同期方法(固有編) 4.ドラゴン・センチピードの生成 ドラゴン・センチピード(ムカデ)は節ごとに別々のエネミーに なっており、全ての節をリストで連結しています。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

54.

巨大生物の同期方法(固有編) 4.ドラゴン・センチピードの生成 サーバーでは頭から尻尾までを順番に生成しています。 生成後にエネミーの基本情報をレプリケートで同期しているので クライアントではエネミーとしての生成は順不同になってしまい ました。 そのため、頭から尻尾までが揃うまで待つ必要がありました。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

55.

巨大生物の同期方法(固有編) 4.ドラゴン・センチピードの生成 順不同の生成を待つ方法 1.頭から尻尾までのエネミーを格納できる配列を用意し、 レプリケートを使って同期する。 2.クライアントでは配列を監視し、 全てのエネミーが生成できるまで待つ。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

56.

巨大生物の同期方法(固有編) 4.ドラゴン・センチピードの生成 生成が遅延しているため、 ミッション開始直後に AI が動き出すと クライアントは同期する事ができません。 ミッション開始直後は AI を動かさない事で対応しました。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

57.

巨大生物の同期方法(固有編) 5.四足歩行要塞のレーザー砲 四足のレーザー砲は独立したエネミーになっています。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

58.

巨大生物の同期方法(固有編) 5.四足歩行要塞のレーザー砲 レーザー砲はスポーンした後で本体にアタッチしていますが、 前述の通り、本体の生成が遅れてしまう事があります。 そのため、本体のポインタをレプリケートで同期して、 生成の完了を待っています。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

59.

巨大生物の同期方法(固有編) 5.四足歩行要塞のレーザー砲 本体のポインタをレプリケートで同期しているため、 遅延が発生しアタッチ処理が遅れる事があります。 ミッション開始直後は四足に近づけないため、 この方法のままにしました。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

60.

巨大生物以外の同期について 1. 2. 3. 4. 5. ブラザー・シスター ビークル ミッション進行 防衛拠点 ドロップアイテム ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

61.

巨大生物以外の同期について 1.ブラザー・シスター プレイヤーはブラザーを4体まで使うことが出来るので、 オンラインプレイでは最大16体のブラザーを同期しています。 プレイヤーが操作するキャラクターとなるため、操作上の 違和感などが発生しないよう、同期するステータスは 多くなりました。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

62.

巨大生物以外の同期について 1.ブラザー・シスター プレイヤーが操作しているので確実な同期が必要な要素が 多く、ステータスの同期にRPC(信頼性あり)を使用する 頻度はエネミーより多くなりました。 攻撃も入力の同期だけでは攻撃方向などがずれました。 事前計算した着弾の予測座標や、ロックオン対象なども RPC(信頼性あり)を使用して同期していました。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

63.

巨大生物以外の同期について 2.ビークル ビークルもプレイヤーが操作するため、 RPC(信頼性あり)を使った同期が多くなりました。 ビークルは武器のリロードがなく、プレイヤー同士で乗り回す ため、降車時に残弾数はRPC(信頼性あり)を使って同期して いました。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

64.

巨大生物以外の同期について 3.ミッション進行 ミッション進行は、セオリー通りの対応を行いました。 進行の判断や進行はサーバー側で行い、クライアント側に スクリプトの実行をマルチキャストで送りました。 ミッションの進行は必ず同期しないといけないものですので、 ほぼRPC(信頼性あり)で通信しています。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

65.

巨大生物以外の同期について 4.防衛拠点 防衛拠点とは、防衛対象となる建物のことです。 この建物のヒットポイントが0になるとミッション失敗です。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

66.

巨大生物以外の同期について 4.防衛拠点 防衛対象のヒットポイントは各プレイヤーの端末で 表示する重要な情報です。 が、多少ずれても大きな問題にはならず、ミッションの 進行はサーバーが判断していることもあって、 ヒットポイントはレプリケートによる同期にしました。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

67.

巨大生物以外の同期について 5.ドロップアイテム ドロップアイテムとは、エネミーを倒した際にドロップする 回復アイテムや配置済みアイテムを指します。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

68.

巨大生物以外の同期について 5.ドロップアイテム ドロップアイテムは生成時と取得時のみ同期しており、 座標など細かい同期は行っておりません。 生成するアイテムはランダム抽選となっており、 乱数のシード値のみを同期しています。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

69.

まとめ 通信負荷が高い環境では同期用の変数を使用し、 状況に合わせてクライアントで制御することが効果的でした。 厳密な同期ができているかではなく、 目指すマルチプレイができているかが大切だと思いました。 ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S

70.

ご清聴ありがとうございました ©2003-2021 D3 PUBLISHER ©2003-2017 SANDLOT ©2019-2021 YUKE'S