[Unity]Steamの実績(Achievement)の実装

この記事は約4分で読めます。
スポンサーリンク

やりたいこと

Steamの実績(Achievement)の実装します。

スポンサーリンク

前提

SteamWorksで作成しているアプリのAppIDを取得するところ(アプリの設定ページが表示されている、ストアページが公開されている必要はないです)まで終わっていることを前提にしています。

スポンサーリンク

作業

Steamworks.NETのインストール

以下のページからSteamworks.NETをダウンロードします。この記事を書いた時点ではRelease 2025.162.1が最新でした。

ダウンロードするのはAssetsの中の.unitypackageです。

Releases · rlabrecque/Steamworks.NET
Steamworks wrapper for Unity / C#. Contribute to rlabrecque/Steamworks.NET development by creating an account on GitHub.

UnityEditorのメニューからAssets → ”Import Package” → “Custom Package..”を選択します。

ファイルの選択ダイアログが表示されるので、ダウンロードした.unitypackageを選択します。

しばらく待つとインポートファイル選択ダイアログが表示されるのでImportをクリックします。

Assetsフォルダに以下の2つが追加されます。

Steamworks.NETはMITライセンスです。EULAに注意してください。

Steamworks.NET-ExampleはRelease 2025.162.1との組み合わせで動作しませんでした。

(修正すれば動作するのですがここで悩むこともないと思います)

AppIDの設定

開発向け

steam_appid.txtの名前でテキストファイルを作成します。

ファイルの中身はAppIDのみを記載して保存します。

AppIDは以下に表示されている数字です。

作成したsteam_appid.txtはUnityのプロジェクトのルート(*.slnのあるフォルダ)に置きます。

steam_appid.txtを置いたら(もしくは更新したら)Editorを再起動します。

Editorからではなくビルド後に使用する場合はビルドしたexeファイルのフォルダに上記のファイルを置きます。

製品向け

製品向けにはsteam_appid.txtを削除します。

Assets\Scripts\Steamworks.NET¥SteamManager.csを開きます。

以下の行の”AppId_t.Invalid”を”(AppId_t)AppID”に置き換えます。例:(AppId_t)480

if (SteamAPI.RestartAppIfNecessary(AppId_t.Invalid)) {

スポンサーリンク

SteamWorksでの設定

対象のアプリのページを開き実績ページを開きます。

新しい実績をクリックして設定します。(達成アイコン、未達成アイコンは初回は設定できません。いったん保存してから設定します。)

ここで紹介するのは値を使用しない実績です。

API 名: アプリから指定するID。ユニークである必要がります。

進行状況: なしに設定

ディスプレイ名: ユーザに表示される実績名

説明: ユーザに表示される実績の説明

非表示?: 未達成の時にユーザに表示するかどうか

必要なアチーブメントを追加したら公開タブに移動し、”公開の準備”、”Steamに公開”をクリックします。

実装

実績の解除は以下のコードで行います。ACHIEVEMENT_IDはSteamWorksで設定したAPI名に変更します。

if (SteamManager.Initialized) {
    SteamUserStats.SetAchievement("ACHIEVEMENT_ID");
    SteamUserStats.StoreStats();
}

以上で実績解除の実装が行えました。

SteamManager.Initializedを呼ぶのは必須です。

わかりにくいのですがSteamManager.Initializedはただ初期化をされているか確認しているのではなく、インスタンスの嗄声も行っています。

スポンサーリンク

おまけ

起動したアプリのAppIDの確認

steam_appid.txtなどで設定したAppIDがちゃんと効いているか確認します。

Steamを右クリックしてコンソールを起動します。

対象のアプリを起動します。

以下のようなログが記録されると思うのでAppIDが確認できます。

ちなみにAppID 480は試験用のIDなので正しくせってできていないということです。

Game process updated : AppID 480 ""C:\Program Files\Unity\Hub\Editor\2021.3.44f1\Editor\Unity.exe"・・・・・
スポンサーリンク

参考にさせていただいたサイト

[Unity] Steam実績をStatsを使用しないでシンプルに実装する (2024.04)
【Unity】Steamで実績を実装する方法その3~実績解除を実装する~
前書きSteamの実績を実装する方法はいろいろなサイトに載っているのですが、今後も同様の作業をすると思うので自分なりにかみ砕いてSteamの実績を導入する方法を残しておこうと思います。今回は前回設定したSteamworksの実績をソースコー...

コメント

タイトルとURLをコピーしました