いつも大変お世話になっております。
現在、外部クラウドサーバーサービス上にて専用サーバーを実行する、
マルチプレイかつマルチプラットフォームに対応するアプリケーションの研究を行っております。
各コンシューマープラットフォームと統合する前に、まずはSteamとの統合を検証しようと
DefaultEngine.iniに「[OnlineSubsystem] DefaultPlatformService=Steam」の記述を行ったところ、
クライアントから専用サーバーへの接続が上手くいかなくなってしまいまして、サーバーアプリケーションとクライアントアプリケーションそれぞれに行うべき
OnlineSubsystemの設定について不明瞭な点がありましたので確認させていただきたく思います。
使用しておりますエンジンのバージョンは5.5.3です。また現状では外部サーバーサービスに対してHTTPSにてリクエストを送り、
そのレスポンスとして返ってきたサーバーのipアドレスを「UGameplayStatics::OpenLevel」にて直接指定して遷移することでマルチプレイを行っております。
先んじて2点、前提の認識の確認をさせていただきたく思います。
1)まず、DefaultEngine.iniにて「DefaultPlatformService」の指定を行わなかった場合、
「OnlineSubsystemNull」モジュールが使われるようになるという認識です。このOnlineSubsystemNullは製品として使用することは非推奨であり、
開発におけるモックやカスタマイズ元としての用途を想定して作成されているという理解でよろしいでしょうか?
2)そもそもOnlineSubsystemにプラットフォームの指定を行うということは、Engine側で行うオンラインセッションに関する処理やユーザー名の取得、
プラットフォームの各機能(実績や招待など)が、指定した各プラットフォームのAPIを使うようになるという理解であっておりますでしょうか?
そのうえで、重ねてお手数ではございますが、以下につきましてご確認願えますでしょうか。
3)コミュニティの別の投稿を確認していたところ、そもそも外部サーバーサービスを使う時点で
OnlineSubsystemにプラットフォーム固有のものを入れるわけにはいかないため、EOSや独自にカスタマイズしたOnlineSubsystemを使うべきという投稿を見かけました。
[Content removed]
その内容が正しいのであれば、例えばEOSを使うとした場合にはDefaultEngine.iniに「DefaultPlatformService=EOS」と記述することになるのかと思いますが、
この「DefaultPlatformService=EOS」はクライアントにも適用されるという認識で良いのでしょうか?
その状態で、Steamをはじめとする各プラットフォームの機能(ユーザー名の取得や実績、招待など)が使えるのでしょうか?
4)こちらもコミュニティの投稿で、「サーバーとクライアントのOnlineSubsystemは揃えるべき」という投稿を見かけましたが、
こちらの認識はあっておりますでしょうか?(申し訳ありません、URLを失念しました)
その内容が正しいのであれば、3の質問と似た話になりますが、例えばSteamの実績機能等を使うために
クライアントは「DefaultPlatformService=Steam」を指定しなければならないが、
同時にサーバーアプリケーション側にも「DefaultPlatformService=Steam」が適用されるという認識です。
5)サーバー・クライアントアプリケーションや、プラットフォームごとに「DefaultEngine.ini」をファイルごと分割し、
適用されるパラメータを変更することが可能なのでしょうか?
6)※こちらはAWSとSteamに関連する質問になるため、もし分かればで結構です。
現在AWSのGameLift-AnywhereFleetを利用し、手元の1台のPCにて検証を進めております。
しかしながらUE用の専用サーバーとクライアントアプリケーションを同一マシン上で稼働させることは不可能という認識でよろしいでしょうか?
(こちらのredditの投稿では回避策は無いとコメントされておりますが、正しいのでしょうか?https://www.reddit.com/r/unrealengine/comments/dwa6fz/how_to_test_dedicated_server_and_client_with/)
以上となります。
最終的な目標としましては冒頭にも記載の通り外部クラウドサービス上で専用サーバーを起動し、
多種のプラットフォームでリリースしたアプリケーションから相互に自由なマッチングが可能となる状態を目指しておりますが、
UEを利用したマルチプレイ実装の経験が浅く見当違いな質問をしているかもしれません。
そもそも手法として誤っているのであればご指摘いただけると大変助かります。
またこのような構成を行っている作品は既に多数存在する認識ですが、ベストプラクティスをご教示いただけますと大変参考になります。
お手数ではございますが何卒宜しくお願い致します。