🎮

SeamlessTravelの使い方(オンラインで情報をマップをまたいで保持する)

に公開

やりたかったこと

「マッチングメニュー→バトル→リザルト画面」といった流れでマッチしてからレベル移動をする必要があり、さらにプレイヤーごとの情報(現在の勝利数など)を保持したかった。

PlayerStateはその名の通りプレイヤーの状態を持たせるためのクラスということでここに勝利数を保持したかったが、そのままではマップ移動すると新規作成されて情報が失われてしまう

調べるとどうやら Seamless Travel という機能でできるらしい。

Seamless Travel の使い方

  • GameMode にある bUseSeamlessTravel という変数をTrueにする
  • Execute Console Command ノードで「ServerTravel (マップのパス)」を実行
    • ServerTravel /Game/Map/TestMap

詰まったポイント

StandAlone起動でないと使えない

StandAlone起動でないとSeamlessTravelは機能しない。
こちらの資料に書いてあった。
https://www.docswell.com/s/EpicGamesJapan/ZDJ18Z-ue4-multiplayer-online-deep-dive-traveling-ue4dd#p57

自作変数は CopyProperties でセットが必要

PlayerStateにCopyPropertiesという関数があるのでオーバーライドして自分で追加した変数はコピーする処理を書く。

SteamCoreは2台のPCで別々のSteamアカウントによるログインが必要

SteamCoreを使っている場合は一台のPCではセッションの合流時点で上手くいかない。
一度Steamを止めて実行するとテスト可能。(Steamはバックグラウンドプロセスで自動起動しているので注意)

Discussion