tamfoi
(tamfoi)
1
hamachi(VPN)とOnlineSessionノードを使ってLAN対戦をしようと思っているのですが、詰まってしまったので質問です。
とりあえず、やったことや分かっていることを…
1.DefaultEngine.iniに「[OnlineSubsystem] DefaultPlatformService=Null」は追加しています。
2.コンソールコマンドを使ってならLAN対戦ができることは確認しました。VPNは構築出来ていると思われます。
3.VPNでは無く純粋に同一LAN内にいる別のPCからならLAN対戦ができました。多重起動でも同様です。
4.CreateSessionなどにLANのチェックがありますが全てチェックを入れています。
5.自分で作ったプロジェクトは勿論。MultiplayerShootoutのLANモードでも同じ状況です。
ここから質問です。
1.VPNに参加している外部LANからの人がFindSessionでサーバーを取得することが出来なくて困っています。上記以外にもやることがあるならご教示頂きたいです。
2.コンソールコマンドやBlueprintで、指定したIPアドレスが部屋を作っているかや人数を確認する方法がありましたらご教示頂きたいです。
足りない情報等ありましたらご指摘頂けると幸いです。
拙い文章ですが最後までお読み頂き有難うございました。
nullponull
(nullponull)
2
OnlineSubsystemNullだとSessionNodeは使えなかった気がしますが。
独自のOnlineSubsystemを実装しないとSessionNodeは使えないと思いますよ。
alwei
(alwei)
3
一般的なLANであれば『DefaultPlatformService=Null』でOnlineSessionノードは使用できるはずです。
しかしVPNを経由でNAT越えが出来るのかが微妙です。原理としては可能だと思いますが、その方法を使ってのログインを行なっている例がUE4のフォーラムやAnswerHub内で探してみても見当たりません。
現状VPNからの参加方法というのは手段が確立されていないというのが答えだと思います。
tamfoi
(tamfoi)
4
お二方、解答有難うございます。
一応hamachiがNAT越えできるのか軽く調べた所、出来るというような記述も見られますので何か別の要因があるのかどうなのかって感じですね。
hamachiは独自の仮想IPアドレスを付与してくれますのでFindSessionではそれを追い切れないのかもしれません。FindSessionがどういう処理でサーバーを見つけているのか知りたいですね。
また、仮想IPアドレスのせいだとしたら同一LAN内でならサーバーが見つかることや、コンソールコマンドで「open IPアドレス」を指定した場合なら接続できるというのも納得が行く気がします。
コンソールコマンドでもいいのですが、やはりホストがアクティブか見れるようになっている方が都合がいいなと感じます…
nullponull
(nullponull)
5
SessionNodeを使ったオンラインプレイを希望するのでしたらOnlineSubsystemをhamachiに対応させてみてはどうでしょう?
独自のOnlineSubsystemを作ってSessionNodeを使ってNAT超えをできることは確認しています。
もしくはレンタルサーバー等でSQLを導入してレベル作成時にIP等を登録してUsersはそのデーターベースからListを取得してJOINするといった仕組みでも良いと思いますよ。
tamfoi
(tamfoi)
6
独自OnlineSubsystem実装はかなりハードルが高そうですね…想像がつきません…
サブのPCが空いてるので勉強も兼ねてデータベースにしてしまうのも手かもしれません。いまのところ身内しかいないので、そこまでスペックもいらなさそうです。
と言いましたが、昨日から試していたSteamのOnlineSubsystemが上手くいきそうなのでそちらを使うことになりそうです。
tamfoi
(tamfoi)
7
hamachiから切り替えてSteamSDKの方を弄り始めたら上手く行ったので次はPhotonSDKの方も使ってみたりしようと思います。とりあえず質問は閉めさせて頂きます。解答有難うございました。
nullponull
(nullponull)
8
今のところPhotonSDKではOnlineSessionNodeは使えませんよ。
アプリケーション層での実装になるためです。
来年モノビットSDKが対応予定らしいのでそちらでも良いかもしれませんね。
tamfoi
(tamfoi)
9
そうなのですか…SteamSDKはappIDの取得が少し面倒だったのでPhotonSDKを触ってみようと思ったのですが…
うーん。英語を頑張って読んでOnlineSubsystemを独自で作るか、一番現実的なのはコンソールコマンドでIPをユーザーに打って貰って直接入ることですかね…