初投稿になります。よろしくお願いいたします。
UnrealEngine4を触りながら勉強しつつ、モバイル(iOS)向けを想定したゲームを開発しています。
iOSデバイスの実機でのListenServer(OpenLevel時に"listen"オプションを指定してクライアントを待ち受ける)形式のマルチプレイを検証したかったのですが、これは可能なのでしょうか?
通常のレベルをiOSデバイス実機にデプロイしてテストすることはできています。
確たる情報が見つけられなかったため、質問を投稿させていただきました。
何かご存知の方がいらっしゃいましたら情報を提供していただけると助かります。
いくつか過去の投稿などを確認して、以下のような情報が断片的に見つかりました。
・現状ではUE4はiOSでのいかなる形式のマルチプレイヤーも単体ではサポートしていないため、サードパーティ製のプログラムが必要?
・本来ではればiOSのGameCenterを通じてマルチプレイヤーが実装可能だが動作しない?
・ターン性のゲームシステムであればGameCenter通じて実装可能?
・Androidでは可能?
等。
▼参照した投稿など▼
Hi guys, I'm developing a ios game, and its everything okay, but the point is, how can I make a simple ios game multiplayer using blueprints (is this even possible?) I try to use the nodes Create Session, Join Session, and I was also able to...
I’ve been trying to build a standardized way of connecting two IOS devices over wifi since 4.19. Back in 4.19, blueprint, “create session” and “join session” nodes worked just fine, but those broke with 4.20, and even after they were supposedly...
https://forums.unrealengine.com/development-discussion/ios-development/41302-game-center-multiplayer
alwei
January 30, 2019, 3:05pm
2
ネットワーク上に存在するものであれば特に問題なくマルチプレイが可能です。Androidでも同様です。既にEpic GamesのFortniteなどでも同様のシステムが動いており、同じOS同士だけでなく、別々のOS同士でもマッチング自体は可能ですが、そのためのマッチングサーバーは別途必要となります。これは将来的にEpic Games自体がサービス予定のクロスプラットフォームオンラインサービスにより解決する可能性が高いです。
デフォルトのLANを使ったものであればマッチングサーバー自体は不要です。その際にはオンラインサブシステムをNULLにしておく必要があります。
ご回答ありがとうございます。
LAN内であればオンラインサブシステムをNULLに設定した状態で動作するということでしたので、以下のような状態で試したのですがうまく動きませんでした。
DefaultEngine.ini
に
[OnlineSubsystem]
DefaultPlatformService=Null
を追記。
wifiによって同一のアクセスポイントからインターネット接続した2台のiPhoneに、
『CreateSessionして、その後テスト用のレベルをOpenLevel』もしくは
『FindSessionして、発見したらJoinSession』をWidgetボタンで選択する。
(ブループリントのみのプロジェクト)
というレベルをデプロイして実行しました。
これはWindowsのUE4エディタ上では動作しましたが、上記のiPhone実機上ではCreateSession、FindSessionが共に失敗します。
不足している設定や条件にお心当たりはございますでしょうか。
alwei
January 31, 2019, 3:55pm
4
こちらでも再度調べてみましたが、LAN内はiOS同士でもサーバーがPCであれば上手くいくかもしれません。iOSをListenServerにした場合で上手くいくというケースは見つけられませんでした。
もしくはOnlineSubsystemをiOSにしたのちに、プロジェクト設定でGameCenterを有効にすればフレンド同士のマルチプレイは可能なはずです。
Create Sessionが正常に動作しないというバグが以前はありましたが、これは4.16で既に修正されており、現在は動作するようになっています。
iOS Multiplayer Join Session does not function.
回答ありがとうございます。
また、返信が遅れまして申し訳ありません。
サーバーがPC(PCで先のレベルを起動してCreateSessionを選択)であれば、うまくいくかもしれないとのことでしたので試してみたのですが、やはりiOS側ではFindSessionsが失敗します。
このときFindSessionsノードのOnFailureに接続したPrintStringノードが実行されているため、接続先の如何には関わらず、セッション作成、参加などの機能が動作していないように見えます。
GameCenterを有効にする方法については、MacOSのマシンが必要(添付していただいたURLの5. Use Application Loader to upload App to iTunesがMacOSのみ)なようです。
Windowsのみで開発しているため、すぐに試すことはできなさそうです。
(WindowsのみでGameCenterをUE4から利用する方法をご存知であれば良いのですが)
将来的にGameCenterによるマルチプレイは検証してみますが、何か追加情報などあればよろしくお願いいたします。