#はじめに
ちょっとした気の迷いでUE4にSteamのオーバーレイ的なイロイロを導入してみたくなった。
手順はUE4のドキュメントに載ってるので書く必要もないけど、沼にハマっているのでメモ感覚でQiita行。
なお初記事。
導入
UE4もSteamworksSDKも現時点の最新版を使う。
- UnrealEngine 4.25.1
- Steamworks sdk 1.49
事前準備
(インストールしていない方がこの記事を見るハズないと思いますが)Steamクライアントが必要。
インストールとログインを済ませてください。
Steamworks SDKのダウンロード
ここからダウンロードできる。
https://partner.steamgames.com/downloads/steamworks_sdk.zip
Steamでリリースする場合はSteamDirectで色々と登録したり、1万円払う必要がありますが、試す分には何もする必要ナシ。
(参考:Steamworks SDKのドキュメント)
SDKの配置
ダウンロードしたsteamworks_sdk_149.zipを解凍。
解凍したsdkディレクトリを
C:\Program Files\Epic Games\UE_4.25\Engine\Source\ThirdParty\Steamworks\Steamv149\sdk
に配置。Steamv149ディレクトリは作ってください。
(UE4のパスは言わずもがな自分のインストールした場所にどうぞ。)
Steamworks.build.csの設定
デフォルト以外のバージョンを利用する場合、Steamworksフォルダ内のSteamworks.build.csに手を加える必要がある。
SteamVersionNumberを1.49に設定すればOK。上の方にあるはず。
// The current SDK version number.
double SteamVersionNumber = 1.49;
DLLの配置
DLLも最新版用に設置しないといけない?らしい。
C:\Program Files\Epic Games\UE_4.25\Engine\Binaries\ThirdParty\Steamworks
にSteamv149ディレクトリを作り、さらにその中にWin32,Win64ディレクトリを作る。
そして以下のように配置する。
- Win64
- steam_api64.dll
- steamclient64.dll
- tier0_s64.dll
- vstdlib_s64.dll
- Win32
- steam_api.dll
- steamclient.dll
- tier0_s.dll
- vstdlib_s.dll
steam_apiとsteam_api64は先ほど配置したsdkの中のredistributable_binディレクトリの中にある。
それ以外のDLLはSteamクライアントディレクトリの中にある(C:\Program Files (x86)\Steam)。
全てコピーしてきて配置する。
プロジェクトの設定
iniの設定
ここからはプロジェクトの設定。
Steamworks SDKを導入したいプロジェクトディレクトリを開き、Configディレクトリ内のDefaultEngine.iniを編集する。
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の480は、開発者向けに用意されたID。
リリースするときはこのIDを固有のIDに置き換えないと動作しない。
プラグインの設定
最後に、UE4エディタの方でプラグインを有効化する。
エディタ上部の「編集>プラグイン」の検索ボックスに「OnlineSubsystem」と入力し、
- Online Subsystem
- Online Subsystem NULL
- Online Subsystem Utils
- Online Subsystem Steam
を有効化する。iOS,GooglePlayとかも有効化されてるかもしれないが、たぶん切っても切らなくても影響しない、と思う。
詳しいことは知らない。
テストプレイ
ここまでの手順を終えれば、Steamworks SDKの導入は完了しているはず。
スタンドアローンゲームを選択してプレイする。
上手くいっていれば、右下にいつものSteamのポップアップが表示される。
が、うまくいかないのである
ここまで公式ドキュメント通りに進めてきたはずなのだが、うまくいかない。
エディタのアウトプットログを見てみると、
LogSteamShared: Warning: SteamAPI failed to initialize, conditions not met.
とエラーが。
しかも、「Steam」で検索をかけてみると、プラグイン読み込み時に
LogSteamShared: Display: Loading Steam SDK 1.47
LogSteamShared: Steam SDK Loaded!
とログが。
結局読み込まれてるのがデフォルトバージョン。
ナンモウマクイッテナイ!!!
#終わりに
駄記事生産してごめんなさい。
いろいろ調べてでき次第更新します。