x

Search in
Sort by:

Question Status:

Search help

  • Simple searches use one or more words. Separate the words with spaces (cat dog) to search cat,dog or both. Separate the words with plus signs (cat +dog) to search for items that may contain cat but must contain dog.
  • You can further refine your search on the search results page, where you can search by keywords, author, topic. These can be combined with each other. Examples
    • cat dog --matches anything with cat,dog or both
    • cat +dog --searches for cat +dog where dog is a mandatory term
    • cat -dog -- searches for cat excluding any result containing dog
    • [cats] —will restrict your search to results with topic named "cats"
    • [cats] [dogs] —will restrict your search to results with both topics, "cats", and "dogs"

クライアント側から プレイヤーじゃ無いキャラクターBPへの影響を与える事が出来ない

現在、リッスンサーバーを使用し クリックを使用してサーバーと複数のクライアントが レベル上に置いてある複数のスイッチを 切り変えていくゲームの制作をしています。

レベル上に置いてあるスイッチは、キャラクターBPを使用して、 レプリケーションを使用してそれぞれのBPに含まれる変数をサーバーとクライアントで共通させようと考えていますが、 サーバーからだと、クライアント側でデータが共有されますが、 クライアント側で操作すると、サーバーへ情報が共有されません。

変数は、レプリケーションを Replicated に設定し、 クリック時に Switch has authority を使用してみたりして カスタムイベントで「サーバーで実行」を押しましたが、 反応しません。

私が実装しようとしている処理は、以下の通りです。 ・変数INTが0の時にクリックで 1になる

・変数INTが1の時にクリックで 0になる

・イベントティックで現在のINTを読み込み、1の時にスイッチの色を 黒にする。  2の時に白にする ・サーバーのINTが変化すると クライアントも同じ値になる   ・クライアントのINTが変化すると サーバーも同じ数値にする

もし可能でしたら、何かアドバイスを頂く事は出来ませんでしょうか? ちなみに、某事情でバージョン4.9しか使用する事が出来ません。 よろしくお願いします。

Product Version: UE older version
Tags:
more ▼

asked Nov 08 '16 at 12:33 AM in Japanese

avatar image

lo_W_yu123
13 2 2 4

(comments are locked)
10|2000 characters needed characters left
Viewable by all users

1 answer: sort voted first

クライアント側からは一切のレプリケーションを行うことができません。

つまり、クライアントにしかない情報はサーバーへRPCを使って一度送信し、その後サーバー上から各クライアントへとレプリケーションする必要があります。

まずはRPCによるレプリケーション方法をしっかりと学習してみてください。ほとんどの知識は以下のドキュメントから得られるもので十分に作成が可能です。

https://docs.unrealengine.com/latest/JPN/Gameplay/Networking/Blueprints/index.html

more ▼

answered Nov 11 '16 at 01:25 PM

avatar image

alwei STAFF
1.3k 105 16 49

avatar image lo_W_yu123 Nov 11 '16 at 07:28 PM

alt text

ドキュメントへのリンクをありがとうございます。 しかし、誠に残念ながら、RPCを使ったレプリケーションは上手くいきませんでした。

**プレイヤーのBP**にRPCを使用した場合は、 クライアントからレプリケーションを行う事が出来ます。

ですが、現在行おうとしているのは、レベルに設置された キャラクターブループリント(プレイヤーのキャラクターでは無い)の レプリケーションです。 サーバー側でクリックした場合は、クライアントへ変数の情報が伝わります。

alt text

レプリカ設定は、有効になっている状態です。 このスクリーンショットでは、TextRender を使用し、Int の数値を表示させています。

alt text

プレイヤーコントローラーで、マウスカーソルを表示出来る状態にして クリックを可能にした後、レベル上の キャラクターBPにクリックする事で、 変数SWが0の時に 1にして、 1の時に0に変更させます。 (変数SWのレプリケーションは Replicated になっています。) クライアントからの場合、カスタムイベントを使い、サーバーで実行しています。

しかし、この状態でも、最初の図のようにクライアント側で数値が変更されても サーバー側には情報が伝わりません。

しかし、リンク先の情報を読んでも原因が分かりません。 もし可能でしたら、アドバイスを頂く事は可能ですか? よろしくお願いします。

s1.png (822.0 kB)
s2.png (173.0 kB)
s3.png (257.3 kB)
avatar image alwei STAFF Nov 14 '16 at 04:31 AM

おそらくですが、このブループリントのアクターに所有権がありません。クライアント側で所有権のあるアクターというのは基本的にプレイヤーキャラクターなど、PlayerControllerで操作できるアクターのみです。

なので、この例のパターンを実行する場合、全てサーバー側で実行されており、カスタムイベントが一度も実行されていないと思われます。クライアント固有情報というのはプレイヤーキャラクターのアクターかPlayerControllerにもたせておく必要があります。

avatar image lo_W_yu123 Nov 14 '16 at 07:49 PM

アドバイスをありがとうございます。 ヒントを元にイベントをあらかじめPlayer Controllerの中に作っておき、 スイッチにPlayer Controllerの中のイベントを読み込ませる等の処理を行った所、 クライアント側からも変数の情報を送る事が出来るようになりました。

(comments are locked)
10|2000 characters needed characters left
Viewable by all users
Your answer
toggle preview:

Up to 5 attachments (including images) can be used with a maximum of 5.2 MB each and 5.2 MB total.

Follow this question

Once you sign in you will be able to subscribe for any updates here

Answers to this question