【Unity / Steamworks】Steam実績実装

Steamworks Steam実績実装 C#
Steamworks Steam実績実装

UnityでのSteam実績を実装する方法です。
Unity側とSteamworks側でそれぞれ設定を行っていきます。

Steamworks

まずはSteamworks側の設定から行います。
Steamworksの対象ゲームのページにアクセスします。

Steamworks コミュニティプレゼンス
Steamworks コミュニティプレゼンス

「実績」クリック

実績データ作成

Steamworks 実績の追加
Steamworks 実績の追加

「新しい実績」クリック


実績の詳細を設定していきます。
まずは以下の項目のみ入力して、画像をアップロードせずに保存します。

Steamworks 実績の編集
Steamworks 実績の編集
API名実績キー名を入力
ディスプレイ名実績のタイトルを入力
説明実績の説明を入力
非表示?隠し実績にする場合はチェック

必要項目入力 →「保存」クリック


初回の保存で画像をアップロードしてまとめて保存しようとした場合、次のエラーが出ることがあります。

Steamworks 実績保存時エラー
Steamworks 実績保存時エラー

「画像を登録する前に実績の項目を作ってね」というエラーが発生します。
このエラーが発生したら一旦画像無しで実績データのみ保存し、再度編集で画像をアップロードして登録します。

実績用画像アップロード

一度実績データを作成してから画像を登録していきます。

「Edit」クリック


「達成アイコン」と「未達成アイコン」の2種類の画像を登録します。

Steamworks 実績アイコン画像アップロード
Steamworks 実績アイコン画像アップロード

画像ファイルを選択 →「アップロード」クリック →
画像が表示されればアップロード完了!


「達成アイコン」をグレースケールにした画像が「未達成アイコン」になっていることが多いです。

Steam実績 達成アイコンサンプル
Steam実績 達成アイコンサンプル
Steam実績 未達成アイコンサンプル
Steam実績 未達成アイコンサンプル

実績のローカライズ

ここからSteam実績のローカライズ対応をしていきます。

「データ&実績」タブ →「実績のローカリゼーション」クリック


実績のローカライズ対応をしたい言語を選択します。

Steamworks 実績ローカリゼーション設定
Steamworks 実績ローカリゼーション設定

ローカライズ言語チェック →「保存」クリック

実績設定の画面に戻ると「Select a language」というドロップダウンがあるので、それぞれの言語に対応した実績を保存すれば完了です。

最後に忘れずに公開を行いましょう。

Steamworks 変更を公開
Steamworks 変更を公開
Steamworks 変更を公開
Steamworks 変更を公開
Steamworks 変更を公開
Steamworks 変更を公開

「公開」タブ → 「公開の準備」→
「Steamに公開」→ 確認コード入力 →「本当に公開する」

これでSteamworks側のSteam実績の設定は完了です!

Unity

次にUnity側での設定を行います。

Steamworks.NETインポート

最初にSteamworks.NETパッケージをインポートしていきます。

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

上記のサイトからパッケージをダウンロード、もしくはGit経由でUnityにインポートしていきます。

実績解除の実装

Steam実績解除の一通りの流れを簡潔にまとめてみました。

using Steamworks;

public class SteamAchievementUpdate
{
    private void UpdateAchievement()
    {
        string apiName = "Steamworksで設定したAPI名";

        //SteamAPI初期化(必須)
        if (SteamManager.Initialized)
        {
            if (SteamUserStats.RequestCurrentStats())
            {
                //対象の実績状態をチェック
                SteamUserStats.GetAchievement(apiName, out bool isUnlocked);

                //実績がロックされていれば更新対象
                if (!isUnlocked)
                {
                    SteamUserStats.SetAchievement(apiName);
                }

                //実績解除
                SteamUserStats.StoreStats();
            }
        }
    }
}

実績解除のタイミングで上記コードを実行すればOKです。

最後にSteamworksにゲームビルドをアップロードして更新すればSteam実績の実装は完了です!

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