Top > ネットワーク-P2P-同期

ネットワーク-P2P-同期

UE4:ver.4.6.1


接続完了時の同期

 ue4-network-sync01.png

  • 「GameMode」BPの「Post Login」イベントが飛んでくる。
    • 自分自身の起動に対しても飛んでくるので、サーバー+クライアント総数の分だけ呼ばれる。
    • 呼ばれる順番はクライアントによって違うので、0番目がサーバー、もしくは自分自身とは限らない。

Character BPの同期

  • 特に何もしなくても勝手に内部パラメーターを同期してくれる。
    • Transformとか。
    • アニメーション用の変数等、自前実装の物は自分で送信しないといけない。

変数の同期

 ue4-network-sync02.png

  • BP変数の詳細欄「複製」の項目で同期を行える。
    • None : 無し。そのクライアントのみの変数。
    • Replicated : 変数を同期する。
    • RepNotify : 変数を同期する。設定すると関数欄に「On Rep <変数名>」の関数が追加される。同期時にコールバックとして関数が呼ばれる。
       ue4-network-sync03.png

イベントの送受信

 ue4-network-sync04.png

  • カスタムイベントの「詳細」欄、「グラフ」-「複製する」の項目で同期設定を変更できる。
    • 複製できませんでした : 無し。そのクライアントのみにコールバック。
    • マルチキャスト : サーバーから全クライアントへ送信。
    • サーバーで実行 : クライアントからサーバーへ送信。

送信範囲

何かマシな方法ありそうな気がするけど、自分の実装で調べた範囲で。

  • サーバー、クライアントA、クライアントBの3台接続を考える。
  • 送信者=変数を持っている側、カスタムイベントを実行した側。

変数

  • 変数のReplicated。
    送信者受信者結果
    サーバークライアント同期される
    クライアントサーバー同期されない
    クライアントクライアント同期されない
    • クライアントA側の数値を変更しても、サーバー側マシンのクライアントAの数値は変更されていないっぽい。
    • サーバーで変更した数値しか同期されないっぽい

イベント

  • マルチキャスト
    送信者受信者結果
    サーバークライアント同期される
    クライアントサーバー同期されない
    クライアントクライアント同期されない
    • サーバーからクライアントにしかイベントを投げれない
  • サーバーで実行
    サーバークライアント同期されない
    クライアントサーバー同期される
    クライアントクライアント同期されない
    • クライアントからサーバーへしかイベントを投げれない

全マシンで同期する

  • 上記から1発で全クライアント同期できない気がする。
  • ひとまず下記で全マシンで変数を同期できる。
     ue4-network-sync05.png
    • クライアントはまず「サーバーで実行」(この時に変数投げてもいいかも)
    • サーバー側なら「マルチキャスト」で全クライアントに。
    • クライアント側からサーバー側がイベント受け取った場合も、そのままマルチキャストで流す。
  • なんか良い方法あったら教えて下さい。

添付ファイル: fileue4-network-sync05.png 346件 [詳細] fileue4-network-sync04.png 308件 [詳細] fileue4-network-sync02.png 287件 [詳細] fileue4-network-sync03.png 276件 [詳細] fileue4-network-sync01.png 304件 [詳細]

リロード   新規 編集 凍結 差分 添付 複製 名前変更   ホーム 一覧 単語検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: 2015-01-16 (金) 01:54:49 (2000d)