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