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"

選んだキャラクターをサーバーにスポーンさせたい

お世話になっております。
現在、MMOのようなゲームを作ろうとしています。
そこで、選んだキャラのデータをサーバー側に渡し、そのキャラをサーバー上にスポーンさせ、操作させたいのですが、やり方のイメージが全くわきません。
PlayerStateを使ってサーバーへデータを受け渡すと拝見しましたが、具体的にどのように受け渡したら良いでしょうか?
また、ネットワーク初心者でも読み解けるような、なにか参考になるような資料はありますでしょうか?
よろしくおねがいします。

Product Version: UE 4.19
Tags:
more ▼

asked Nov 27 '18 at 05:09 AM in Japanese

avatar image

elce_UE
27 2 2 6

avatar image paperbag Nov 27 '18 at 05:33 AM

資料についてですが
既に目を通されたと思いますが先ずは公式ドキュメントですね。
ネットワークの構築とマルチプレイヤー

次にこちらのスライドがUE4のネットワーク周りに関して最も分かりやすかったです。
Online MultiPlay Game Design

avatar image elce_UE Nov 27 '18 at 06:19 AM

ご回答ありがとうございます!
参考にさせていただきます!

avatar image paperbag Nov 27 '18 at 07:36 AM

また、Client / ServerのどちらでどのActorが管理されるかについてはこちらが分かりやすいです。
Unreal Engine 4 Network Compendium

avatar image elce_UE Nov 27 '18 at 08:00 AM

重ね重ね、ありがとうございます!
本題の方についてはなにかご存知でしょうか?

avatar image paperbag Nov 27 '18 at 08:50 AM

やるとしたらこんな感じでしょうか。
RunOnServerのカスタムイベントをClientから呼び出し。
その際に既存のPawnの削除とPlayerControllerからの登録を解除。
続いて新規にPawnを作成し、PlayerControllerに登録。

このBlueprintはPlayerState内に記述しています。

alt text

avatar image elce_UE Nov 28 '18 at 01:26 AM

引き続き、ご回答ありがとうございます!
BPも載せて頂いてありがとうございます!
手元で確認したところ、Destroy Actorに入っている値が読めないエラーが出てしまいました。
確認方法としては、
1、キャラクター選択時にキャラクターのIDをPlayerStateの変数に保存する。
2、OpenLevelでレベル遷移時にListenサーバーで立てる。
といった方法で確認したのですが、なぜDestroy Actorに入るPawnが見つからないのでしょうか?
組み立てたBPは画像のようなものです。
なお、PlayerState画像の左側は頂いたBPと同じになっています。 alt text

widget.png (128.6 kB)
widget2.png (43.5 kB)
playerstate.png (165.7 kB)
avatar image paperbag Nov 28 '18 at 02:10 AM

元々Pawnを設定していない場合はDestroyもUnpossessも必要なかったですね。
IsValidでnullチェックしてから次のキャラクター生成を行われると良いと思います。

OpenLevelで開かれた先のGameModeでDefaultPawnを設定しなかったりLevelに配置したPawnやCharacterからAuto Possess Playerを設定していなければPawnが存在しないのは正しい挙動です。 alt text

isvalid.png (248.8 kB)
avatar image elce_UE Nov 28 '18 at 02:23 AM

ご回答ありがとうございます!
なるほど、言われてみれば確かにDefaulPawnをNoneにしていました!
ご指摘頂き、ありがとうございます。

修正して試したところ、アウトライナで確認する限りでは、やはりスポーンがされていないようです・・・。

avatar image paperbag Nov 28 '18 at 04:21 AM

あ、Is Not Validの際にPossessではなくSpawnに繋がないといけませんね。
そこを修正するだけで動作すると思います。

avatar image elce_UE Nov 28 '18 at 04:46 AM

ご回答ありがとうございます!
IsValidですが、DefaultPawnがnoneであることが決まっていたため、手元では入れていませんでした。
現状では、カスタムイベントからSpawnActorが直接つながっている状態です。

avatar image paperbag Nov 28 '18 at 05:04 AM

呼び出すCustomEventですが、ClientからRunOnServerのCustomEvent呼び出しを行うことで正常に動作することをこちらで確認できました。

avatar image elce_UE Nov 28 '18 at 05:18 AM

ご回答ありがとうございます!
そちらでは正常に動作しているのですね…。
環境的な側面が強そうなので、一旦保留とさせていただきます。
長々とありがとうございました!

(comments are locked)
10|2000 characters needed characters left

1 answer: sort voted first

これは質問者だけでなく、回答者の方にもお願いしたいのですが、コメントとしてやりとりするのではなく、スレッドでそのスレッドを解決済みにするためにも必ず回答(Answer)として投稿してもらいたいです。

コメントではスレッドを解決済みにできません。またこのスレッドが解決済みであれば、質問者さんにはこの回答を解決済みにしていただきたいです。 解決済みかはご自身でご判断ください。

やり方↓

https://answers.unrealengine.com/questions/687897

more ▼

answered Nov 29 '18 at 12:05 AM

avatar image

alwei STAFF
2.6k 124 19 53

avatar image elce_UE Nov 29 '18 at 12:55 AM

ご指摘ありがとうございます!
現状、納得のいく動作がまだ得られていなかったため、「保留」とさせていただきましたが、分かりづらい表現となってしまい申し訳ありません。
コメントだと解決済みにできず、困っていたので、助かりました。
ありがとうございます。

(comments are locked)
10|2000 characters needed characters left
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