(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

(:3[kanのメモ帳]


本ブログの運営者kan.kikuchiが個人で開発した新作VRソフトです!


Steamで他のゲームを所有(購入)しているか、ライブラリにあるか(インストールしているか)を判定する方法【Unity】【Steam】


このエントリーをはてなブックマークに追加


この記事でのバージョン
Unity 2019.4.26f1


はじめに

今回はUnityで開発しているSteam向けゲームで他のゲームを所有(購入)しているか、

ライブラリにあるか(インストールしているか)を判定する方法です!


なお、これを使うことにより過去作やデモ版をプレイしたユーザに特典を付与する事が可能です。

ちなみに「前作のデータから追加データを得る機能」の特許は期限がきれているそうです。





Steamworks.NETの導入

まずプロジェクトにSteamworks.NETを導入するのですが、これをそのまま入れるより



Steamworks.NET-Exampleというサンプル付きのものを導入した方が色々便利です。



なお上記のGitHubからプロジェクトを取得したら、

f:id:kan_kikuchi:20200706064531j:plain


Assets以下を自分のプロジェクトへコピーするだけで導入は完了です。

f:id:kan_kikuchi:20191012075612j:plain



特定のゲームを所有(購入)しているかの判定方法

特定のゲームを所有(購入)しているかを判定するにはSteamAppsのBIsSubscribedAppを使います。

//App Id 1549790(SLASH OF BULLET)のゲームを所有しているか
bool isSubscribedAp = SteamApps.BIsSubscribedApp(new AppId_t(1549790));


なおApp IdはSteamWorks等で確認する事が出来ます。

f:id:kan_kikuchi:20210524070204p:plain


ちなみにドキュメントには以下のようにあるので、

他社のゲームの所有のチェックには使わない方が良さそうです。

アクティブなユーザーが指定のAppIDをサブスクライブしているかをチェックします。

例えば体験版など、あなたのゲームに関連する別のゲームの所有についてチェックが必要な場合に限って使用してください。

ISteamApps インターフェイス (Steamworks ドキュメント)


ライブラリにあるか(インストールしているか)の判定方法

ライブラリにあるか(インストールしているか)の判定するにはSteamAppsのBIsAppInstalledを使います。

//App Id 1549790(SLASH OF BULLET)のゲームがライブラリにあるか
bool isAppInstalled = SteamApps.BIsAppInstalled(new AppId_t(1559790));


なおドキュメントには以下のようにあり、

ライブラリにはあっても所有はしてない場合もある点には注意が必要です。

指定のアプリがインストールされているかを確認します。

無料ウィークエンドなどを利用したことで、ユーザーが現時点でアプリを所有していない場合があります。

ダウンロードコンテンツ (DLC)ではなく、これはベースアプリケーションでのみ機能します。 DLCには、代わりにBIsDlcInstalledを使用します。

ISteamApps インターフェイス (Steamworks ドキュメント)


ちなみにDLCのインストール判定や実装については以下の記事を参照の事。