この記事でのバージョン
Unity 2019.4.1f1
はじめに
今回はUnityで開発しているSteam向けゲームのDLCの設定と実装方法です!
ただし、「DLCのビルドは別で購入したら追加でダウンロードする」という方式ではなく、
「DLCの内容も本体に含まれていて、購入したかのフラグを取得して開放する」
という感じなのであしからず。
なお、DLCに関するSteamの公式ドキュメントは以下のページになります。
Steamworks上でのDLCの設定
まずSteamworks上でのDLCの設定からです。
新しいDLCの追加はゲーム本体の「関連する全てのパーセンテージ、DLC、体験版、ツール」の
「新しいDLCを追加」から行えます。
DLCのタイトルを設定し、Continueボタンを押したら
アプリ一覧の所にタイプDLCという形で表示されるようになります。
後はゲームと同様に指定された設定や素材追加をしていくだけです。
ちなみに、ビルド設定の場所もありますが、DLCのビルドがない場合は設定しなくて大丈夫です。
余談ですが、ゲーム本体のスクショにDLCの内容を含めるとリジェクトになるので注意が必要です。
Steamworks.NETの導入
実装の前にSteamworks.NETをプロジェクトに導入するのですが、これをそのまま入れるより
Steamworks.NET-Exampleというサンプル付きのものを導入した方が色々便利です。
なお上記のGitHubからプロジェクトを取得したら、
Assets以下を自分のプロジェクトへコピーするだけで導入は完了です。
DLCの実装
最後にDLCがインストール(購入)されているかの判定実装です。
まず判定の前にSteamManager.Initializedを参照して初期化を行います。
なお、Steamを起動していない場合等はfalseになり初期化失敗です。
//SteamManager等を使うのに必要 using Steamworks;
//初期化 if (!SteamManager.Initialized) { Debug.LogWarning("SteamManagerの初期化に失敗しました"); return; }
そして本題のインストールされているかの判定ですが、
SteamApps.BIsDlcInstalledにDLCのIDを渡して作成したAppidを渡すだけ。
(ビルドがなく、インストールする物がないタイプのDLCでもこれでOK)
//DLCがインストールされているか bool isDlcInstalled = SteamApps.BIsDlcInstalled(new AppId_t(1386430));
なお、各DLCのIDはSteamworks上で確認出来ます。
また、DLCの(アン)インストールもSteamAppsを使って行う事が出来ます。
//DLCのインストール SteamApps.InstallDLC(new AppId_t(1373150)); //DLCのアンインストール SteamApps.UninstallDLC(new AppId_t(1373150));
ちなみに、DLCをゲーム内から直接購入する事は出来ないみたいですが、
SteamFriends.ActivateGameOverlayToStoreを使う事でSteamの購入画面を開く事は出来ます。
//SteamのDLCの購入画面を開く SteamFriends.ActivateGameOverlayToStore(new AppId_t(1373150), EOverlayToStoreFlag.k_EOverlayToStoreFlag_None);
IDをゲーム本体の物にすれば、DLCでなくゲーム本体のページを開けますし、
第2引数をk_EOverlayToStoreFlag_AddToCartにすればカートに追加、
k_EOverlayToStoreFlag_AddToCartAndShowにすれば
カートに追加して、ストアページを表示する事も可能です。