Language:
Page Info
Skill Level:
Engine Version:

Online Subsystem Steam

Online Subsystem Steam API を使ってアンリアル エンジン 4 (UE4) アプリケーションを Valve の Steam プラットフォームへシップすることができます。 Steam モジュールの主な目的は、様々な機能 (マッチメイクやリーダーボードなど) を備えたアプリケーションを Steam ユーザーへ配信することです。 さらに Steam モジュールには Online Subsystem で公開されるインターフェースが幾つか実装して Steamworks Software Development Kit (SDK) が提供しているほとんどの機能に対応しています。

利用可能な Steam インターフェースの一部を紹介します。

  • マッチメイク (Lobbies および GameServer APIs)

  • リーダーボード

  • アチーブメント

  • ボイス

  • UserCloud

  • SharedCloud

  • 外部 UI

現在利用できる Steam インターフェースの一覧は、Online Subsystem Steam API Reference をご覧ください。

Valve の要件

Steam Subsystem は、Valve Steamworks を使った追加のセットアップが必要です。 Valve へ連絡し Steamworks SDK Documentation を参照して、UE4 で Steam を使う前にお持ちのアプリケーションが Valve の要件を満たしているか確認してください。

Steamworks をダウンロードする

アプリケーションが Valve の要件を満たしていることが確認できたら、Steamworks SDK をダウンロードしてください。SDK を解凍し /YourUnrealEnginePath/Engine/Source/ThirdParty/Steamworks/Steam[Current Version]/sdk へコピーします。

プロジェクトの Steamworks SDK を更新する場合は、プロジェクトの Steamworks パス [Current Version] も必ず更新するようにしてください。
/YourUnrealEnginePath/Engine/Source/ThirdParty/Steamworks/Steam[Current Version]/sdk
プロジェクト ディレクトリの Steamworks.build.cs も更新する必要があります。 SteamworksCSFile.png
このれいでは [Current Version]v139 としてフォーマット化されています。

UE4 をコンパイルする

UE4 をソースからコンパイルするステップは以下の通りです。

  1. OnlineSubsystemSteamPrivatePCH.h (保存場所は ..\..\Plugins\Online\OnlineSubsystemSteam\Source\Private\) を開くと、Steamworks SDK のルート位置を定義する以下のコードが分かります。

    #define STEAM_SDK_ROOT_PATH TEXT("Binaries/ThirdParty/Steamworks")
  2. これを以下のように変更します。

    #define STEAM_SDK_VER TEXT("Steam[Current Version]")

Steamworks SDK をセットアップする

コンパイル済みのエンジンに Steam を使う場合は、Valve 社の SDK から動的にリンクしているライブラリ (*.dll) のいくつかを適切なフォルダにコピーする必要があります。 ソースに対してエンジンを再コンパイルする予定がある場合も、 SDK を正しい場所に入れる必要があります。ここで SDK の /redistributable_bin/ ディレクトリから関係する再配布可能なファイルを以下の場所へコピーします。

オペレーション システムを選択してください。

Windows

Mac OS

Linux

64 ビット ライブラリの中には Steam クライアント ディレクトリに入っているものもあります (執筆時現在、Valve はすべてのライブラリを SDK にはインクルードしていませんでした)。

/YourUnrealEnginePath/Engine/Binaries/ThirdParty/Steamworks/Steam[Current Version]/Win64

  • steam_api64.dll

  • steamclient64.dll

  • tier0_s64.dll

  • vstdlib_s64.dll

/YourUnrealEnginePath/Engine/Binaries/ThirdParty/Steamworks/Steam[Current Version]/Win32

  • steam_api.dll

  • steamclient.dll

  • tier0_s.dll

  • vstdlib_s.dll

/YourUnrealEnginePath/EngineOrGameFolder/Binaries/Mac/YourGame.app/Contents/MacOS

  • libsteam_api.dylib (/redistributable_bin/osx32 から - 動的ライブラリ (*.dylib) は 32 / 64 ビットの両方をサポートしています)

Linux ユーザーは実行ファイルと一緒に以下のファイルのリンクおよびシップが必要になります。

  • libsteam_api.so

Steam App ID

Steam Online Subsystem を使ったすべてのゲームは有効なアプリケーション ID が必要です。アプリケーションの Steam App ID が分からないと Steamworks API が正常に動作しません。 Steam を初期化する前に、UE4 は steam_appid.txt を生成します(エンジンが静かにシャットダウンする間に UE4 はこのファイルを削除します)。 steam_appid.txt はアプリケーションの実行ファイルを同じディレクトリに置かなければなりません。Steam は現在使用中のディレクトリのテキスト ファイルを検索するからです。 さらに、そのファイルは Steam イメージに含まれてはいけません。

steam_appid.txt を開くと、SteamDevAppId エントリが表示されます。ここにSteam へのアプリケーション ID を入力します。 これにより、Steam クライアントを使ってゲームを起動する必要がなくなります (ただし実行は必要になります)。

アプリケーションをテストする場合は、すべてのデベロッパー共有のテスト ID である SteamDevAppId480 を使います。 このテスト App ID でほとんどのSteam インターフェースをテストすることができますが、アプリケーションはシッピング前に Steam App ID が必要になります。

シッピング ビルド

シッピング ビルドでは、ログインしているユーザーがゲームに正しく登録されていることを確認するチェックをし、エンジンのテストで false が返されるとシャットダウンします (ゲームの安全性を確保する手段の 1 つです)。さらに、Steam DRM (Steamworks SDK 参照) を使用することで、ゲームに対する不正行為を防ぎやすくなります。

アプリケーションの設定

Unreal Project Browser で新規プロジェクトを作成した場合、Online Subsystem 設定は DefaultEngine.ini にはありませんが、Sample Projects に何かしら修正を加えると Online Subsystem 設定が存在するようになります。

アプリケーションに Steamworks SDK を設定したので (Steam App ID と一緒に)、Online Subsystem Steam を使えるようにアプリケーションを設定することができます。

ステップ

  1. まずアプリケーションの DefaultEngine.ini ファイルを開きます。

  2. 以下の設定を追加します。

    [/Script/Engine.GameEngine]
    +NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemSteam.SteamNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")

    NetDriverDefinitions は、以下のプロパティが定義されている UE4 で利用できるネット ドライバーの説明です。

    • DefName はこのネット ドライバー定義のユニークな名前です。

    • DriverClassName はプライマリ ネット ドライバーのクラス名です。

    • DriverClassNameFallBack は、プライマリ ネット ドライバー クラスが初期化に失敗した時の、フォールバック ネット ドライバーのクラス名です。

  3. UE4 で Online Subsystem Steam を使用するためには、以下の設定を追加します。

    [OnlineSubsystem]
    DefaultPlatformService=Steam
  4. アプリケーションが Steam Online Subsystem を使うようにさせたいと UE4 に伝えてあるので、以下の設定を追加して OnlineSubsystemSteam モジュールを設定する必要があります。

    [OnlineSubsystemSteam]
    bEnabled=true
    SteamDevAppId=480
  5. 最後に、Steam クラスを Net Driver に指定してアプリケーションが接続できるようにします。

    [/Script/OnlineSubsystemSteam.SteamNetDriver]
    NetConnectionClassName="OnlineSubsystemSteam.SteamNetConnection"

結果

以上、短いガイドでしたが、アプリケーションの DefaultEngine.ini は以下の設定ブロックのようになっています。他のプロジェクトの設定や Online Subsystem の使い方は、サンプル プロジェクトのライブラリを参照してください。

Finished Settings

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"

追記

モジュール設定

ユーザーのプロジェクトの一部として、Unreal Engine Steam モジュールを必ず含んでください (ヘルプが必要な場合は アンリアルビルド システムのターゲット ファイル を参照してください)。 特に、mygame.build.cs のコンストラクタに以下の行を追加する場合は、Steam モジュールがゲームと一緒にビルドさrていることを十分確認してください。

DynamicallyLoadedModuleNames.Add("OnlineSubsystemSteam");

Steam Overlay on Mac

Steam Overlay on Mac では Steam client を使ってゲームを起動する必要があります。そのため、まずは Steam のゲームメニューの [Add a Non-Steam Game to My Library (Non-Stream ゲームを My Library に追加)] を使ってライブラリにゲームを追加する必要があります。