コードを書かずにSteamでのネットワークプレイの設定をする
公式ドキュメントを見てもSteamでのネットワークプレイ実現までにかなり苦戦したので手順を書き留めておきます。使用バージョンはUE4.22。
ここではSteamを用いたネットワークプレイをするための設定について解説しますが、ゲーム中でのセッションの作成や参加についての作り方については割愛します。
1.DefaultEngine.ini に設定を追加
プロジェクトフォルダ/Config/DefaultEngine.ini を開き、以下をコピペして追加する。
[/Script/Engine.GameEngine] +NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver") [OnlineSubsystem] DefaultPlatformService=Steam [OnlineSubsystemSteam] bEnabled=true SteamDevAppId=480 [/Script/OnlineSubsystemSteam.SteamNetDriver] NetConnectionClassName="OnlineSubsystemSteam.SteamNetConnection"
この中の、SteamDevAppIdの値はSteamに登録したappIdを入れる。
Steamでのテスト用に割り振られているIdが480なので、とりあえず動作を確認したいのであれば480を入れておこう。
2.Advanced Sessions Plugin のセットアップ
まず、以下のサイトで海外の有志の方が配布しているプラグインをダウンロードさせて頂きます。
使用しているUE4のバージョンに合ったものをダウンロードしましょう。このプラグインのお陰で、普段ブループリントで制作していてC++が書けない方でも、ブループリントだけでSteamでのオンラインプレイが実現できます。本当にありがたいですね。
次に、プロジェクトフォルダ直下のPluginsフォルダ(無い場合は作成)に解凍したzipの中に入っているAdvancedSessionsフォルダを突っ込みます。
ついでに、ExampleBlueprintsフォルダをContentフォルダにコピーしておけば、プラグインで追加されたノードの使用例が確認できます。
そしたらプロジェクトを起動し、セッティング>プラグイン>Advanced Sessions Pluginの中の Advanced Sessions、Advanced Steam Sessions 両方にチェックを入れる。
この時点で、Steamを起動した状態でスタンドアローンゲームでテストプレイしてみる。画像のように右下にSteamのポップアップが出ればOK。
3.ビルド
このままではビルドしても右下にポップアップが表示されず、ネットワークプレイもできません。Advanced Sessions Plugin がビルドに含まれていないためです。
コンテンツフォルダ上で右クリック>新規C++クラス から空のC++クラスを作成します。プロジェクトのコンパイルが始まるので終わるまで待ちます。
(空のC++クラスを作成すると、Advanced Sessions Plugin がビルドに含まれるようになります)
Developmentでビルドして、Steamを起動した状態でビルドを起動すると、右下にSteamのポップアップが表示されるはずです。これでようやくネットワークプレイが出来ます。
Steamにアップロードする場合はDefaultEngine.iniにAppIdを設定し、Shippingでビルドしましょう。