ネットワーク-P2P-同期
のバックアップの現在との差分(No.1)
[
ホーム
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
バックアップ一覧
差分
を表示
現在との差分
を表示
ソース
を表示
バックアップ
を表示
ネットワーク-P2P-同期
へ行く。
ネットワーク-P2P-接続方法
†
▲
▼
ネットワーク-P2P-同期
†
UE4:ver.4.6.1
ネットワーク-P2P-接続方法
ネットワーク-P2P-同期
接続完了時の同期
Character BPの同期
変数の同期
イベントの送受信
送信範囲
変数
イベント
全マシンで同期する
▲
▼
接続完了時の同期
†
&ref(ue4-network-sync01.png)
「GameMode」BPの「Post Login」イベントが飛んでくる。
自分自身の起動に対しても飛んでくるので、サーバー+クライアント総数の分だけ呼ばれる。
呼ばれる順番はクライアントによって違うので、0番目がサーバー、もしくは自分自身とは限らない。
▲
▼
Character BPの同期
†
特に何もしなくても勝手に内部パラメーターを同期してくれる。
Transformとか。
アニメーション
用の変数等、自前実装の物は自分で送信しないといけない。
▲
▼
変数の同期
†
BP変数の詳細欄「複製」の項目で同期を行える。
None : 無し。そのクライアントのみの変数。
Replicated : 変数を同期する。
RepNotify : 変数を同期する。設定すると関数欄に「On Rep <変数名>」の関数が追加される。同期時にコールバックとして関数が呼ばれる。
▲
▼
イベントの送受信
†
カスタムイベントの「詳細」欄、「グラフ」-「複製する」の項目で同期設定を変更できる。
複製できませんでした : 無し。そのクライアントのみにコールバック。
マルチキャスト : サーバーから全クライアントへ送信。
サーバーで実行 : クライアントからサーバーへ送信。
▲
▼
送信範囲
†
何かマシな方法ありそうな気がするけど、自分の実装で調べた範囲で。
サーバー、クライアントA、クライアントBの3台接続を考える。
送信者=変数を持っている側、カスタムイベントを実行した側。
▲
▼
変数
†
変数のReplicated。
送信者
受信者
結果
サーバー
クライアント
同期される
クライアント
サーバー
同期されない
クライアント
クライアント
同期されない
クライアントA側の数値を変更しても、サーバー側マシンのクライアントAの数値は変更されていないっぽい。
サーバーで変更した数値しか同期されないっぽい
▲
▼
イベント
†
マルチキャスト
送信者
受信者
結果
サーバー
クライアント
同期される
クライアント
サーバー
同期されない
クライアント
クライアント
同期されない
サーバーからクライアントにしかイベントを投げれない
サーバーで実行
サーバー
クライアント
同期されない
クライアント
サーバー
同期される
クライアント
クライアント
同期されない
クライアントからサーバーへしかイベントを投げれない
▲
▼
全マシンで同期する
†
上記から1発で全クライアント同期できない気がする。
ひとまず下記で全マシンで変数を同期できる。
クライアントはまず「サーバーで実行」(この時に変数投げてもいいかも)
サーバー側なら「マルチキャスト」で全クライアントに。
クライアント側からサーバー側がイベント受け取った場合も、そのままマルチキャストで流す。
なんか良い方法あったら教えて下さい。