Steam の実績を設定する手順|Steamworks の管理画面・統計・アイコン
実績と統計(stats)は、Steamworks パートナーサイトの「アプリ管理」ページで定義します。ゲームの側では、実績が解除されたら `SetAchievement` で設定し、`StoreStats` で Steam へ送ります。
このページの目次
ゲームの側から使う API
ゲームの側では、Steamworks API を初期化したあとに、ISteamUserStats に含まれる Stats API と Achievements API を使い始められます。
Steam で実装が要るものと選べる機能の全体は、Steam で実装が要る仕様にあります。
管理画面で実績を作る手順
実績エディターを使うには、アプリの情報を編集する権限が必要です。実績は、次の順で作ります。
- Steamworks のアプリのランディングページから、「Steamworks設定を編集」を選択します。
- 「データ&実績」>「実績」を選択します。
- ページ上部のバナーをクリックして、新しい実績エディターを開きます。
- 「実績の管理」タブで、実績を追加したいセットの「実績を作成」をクリックします。
エディターには、「実績の管理」と「一括インポート/エクスポート」の2つのタブがあります。実績を編集するには、実績テーブルで対象を選択します。他のセットに割り当てない限り、すべての実績は「ベースゲームの実績」セットに属します。
実績には、次のフィールドがあります。
| フィールド | 説明 |
|---|---|
| API名 | ゲームが Steamworks API に渡す一意の名前(例:ACH_WIN_ONE_GAME)。必須。 |
| 表示名 | プレイヤーに表示される実績の名前。ローカライズ可能。 |
| 説明 | プレイヤーに表示される実績の説明。ローカライズ可能。 |
| アイコン | 達成アイコンと未達成アイコン。 |
| 設定者 | 実績を解除できる設定者(クライアント、ゲームサーバー、または公式ゲームサーバー)。 |
| 進捗状況データ | 任意で、この実績の進捗状況を表示するために使用するデータと、0%および100%の進行状況にマッピングされるデータ範囲を指定できます。 |
| 公開設定 | 公開、または実績の詳細を解除まで非表示にする場合はネタバレに設定できます。 |
| ステータス(任意) | 利用可能、または実績を獲得できなくなった場合はアーカイブ済みとして設定できます。 |
| セット | この実績が属するセット。 |
ネタバレ実績の名前と説明は、プレイヤーがそれを解除するか、表示することを選択するまで表示されません。以前に「非表示」としてマークされていた実績が、現在はネタバレ実績と呼ばれています。
ツールバーの「言語」セレクターを使うと、ゲームがサポートしている各言語で実績を表示および編集できます。API 経由で実績をクエリすると、Steam はリクエストされた言語のテキストを返します。
実績を削除すると、すでにその実績を解除しているプレイヤーも含め、すべてのプレイヤーからその実績が削除されます。実績をアーカイブすると、解除したプレイヤーには引き続き表示され、プロフィールに載せることもできます。アーカイブされた実績を解除していないプレイヤーには、その実績は表示されません。アーカイブしても、ゲームには変更はありません。
アイコンの形式と大きさ
最良の結果を得るには、実績アイコンを256x256ピクセルの PNG 画像にします。64x64のように小さいサイズでも構いません。アイコンは正方形である必要があります。JPG 画像も使用できます。
アイコンには、達成アイコンと未達成アイコンがあります。未達成アイコンは、自分で作成する必要はありません。実績エディターで「生成」をクリックするか、一括アップロード時に「未達成アイコンを自動生成」オプションを使うと、達成済みアイコンからグレースケールの未達成アイコンを生成できます。アイコンを生成した場合でも、自分のアイコンに置き換えることができます。
「一括インポート/エクスポート」タブでは、実績を CSV ファイルとしてエクスポートおよびインポートし、アイコンを一括でアップロードできます。アイコンのファイル名は、実績の API 名の後に「_ACHIEVED」または「_UNACHIEVED」を付けた形で、たとえば LEVEL_20_ACHIEVED.png や LEVEL_20_UNACHIEVED.png です。アイコンは、該当する実績に自動的に割り当てられます。
統計の作り方と、実績との結び付け
統計(データ)は、Steamworks アプリ管理の「Steamworks管理」>「データ&実績」タブから設定できます。
データには、たとえば次のプロパティがあります。
- ID:各データ用に自動的に生成される数値 ID
- API Name:API を使って、このデータにアクセスするために使用される文字列
- Set By:データを修正できる人を設定します。初期値は、クライアントです。
- Default Value:設定されている場合、新規ユーザー用に最初に設定される初期値です。設定されない場合、初期値はゼロになります。
- Display Name:アプリ内で表示されるときの、このデータの名前
データの型と、最小値・最大値などの条件は、Steam で実装が要る仕様の「実績と統計」の節にあります。
実績に進捗を出すには、実績の「進捗状況データ」フィールドで、進捗状況を表示するために使用するデータと、0%および100%の進行状況にマッピングされるデータ範囲を、任意で指定します。一括インポートの定義 CSV にも、進捗バーに使用する既存のデータの名前と、データ範囲の最小と最大を書く列があります。最小はデータの最小値以上の数値、最大は最小より大きく、データの最大値以下の数値です。整数のデータの場合は、整数値である必要があります。進行状況データは既に存在している必要があり、実績と同じ権限を持っている必要があります。
ゲームの側では、データを変更したときに SetStat または UpdateAvgRateStat を呼び出します。これらの呼び出しは、Steam の内部メモリ状態だけを変更するもので、低コストです。変更をアップロードするには、ゲーム内の適切なポイント(チェックポイント、レベル遷移時など)で StoreStats を呼び出します。
プログレスバーを持つ実績には、重要なタイミングで IndicateAchievementProgress を使用すると、進行状況を示すポップアップが表示されます。たとえば、20勝する必要がある場合に10回勝った時点で、半分達成したことをユーザーに示す呼び出しに使えます。この関数を呼び出しても、進行状況の設定や実績のアンロックは行われません。ゲームは SetStat を呼び出して手動で行う必要があります。IndicateAchievementProgress が true を返すのは、次のすべての条件を満たした上での成功時で、それ以外の場合は false です。
- 指定した実績が Steamworks Web サイトのアプリ管理に存在し、変更が公開されている。
- 指定の実績が、まだアンロックされていない。
nCurProgressがnMaxProgressよりも小さい。
変更を公開する操作と、ゲームの側の呼び出し
実績エディターで行った変更は、アプリの下書き設定に保存されます。変更を有効にするには、他の Steamworks 設定と同様に、「Steamworks設定を編集」内の「公開」タブから変更を公開します。
ゲームの側の呼び出しは、次の順です。
SteamAPI_Initを呼び出します。この呼び出しは Steam 全体を初期化するもので、一番最初に呼び出される必要があります。- Steam のコールバックを処理するために、ゲームループで
SteamAPI_RunCallbacksを呼び出します。 - 実績が解除されたら、解除された実績ごとに、実績の API 名(例:
ACH_WIN_100_GAMES)を渡してSetAchievementを呼び出します。 - 実績をただちにアップロードするために、続けて
StoreStatsを呼び出します。SetAchievementの呼び出しは、Steam の内部メモリ状態だけを変更します。アンロックされた状態をサーバーに送り、Steam オーバーレイの通知を出すには、StoreStatsの呼び出しが必要です。 - 結果は、
UserStatsStored_tのコールバックと、解除された実績ごとに1つのUserAchievementStored_tのコールバックで受け取ります。このとき、Steam のゲームオーバーレイは、ユーザーに通知パネルを表示します。
SetAchievement が成功して true を返す場合は、指定した実績の API 名が Steamworks パートナーサイトのアプリ管理に存在し、変更が公開されています。それ以外の場合は false です。1つの実績は複数回アンロックできます。Steam は、特定の DLC をプレイできないプレイヤーに対して、その DLC セット内の実績を解除しません。アーカイブされたセット内の実績も解除しません。
StoreStats が失敗した場合は、何もサーバーに送信されません。この呼び出しはレート制限を受けることがあり、呼び出し頻度は、秒単位ではなく分単位である必要があります。アプリケーションプロセスの終了時に、ローカルに保管したデータや実績をこの関数でアップロードしていない場合、この関数は自動的に呼び出されます。
UserStatsStored_t の m_eResult が k_EResultInvalidParam の場合は、アップロードされた1つ以上のデータが、制約を破ったか期限切れだったために拒否されています。この場合、サーバーは更新された値を送信します。
実績を完全に有効にしてリリースチェックリストを完了するには、ストアページの基本情報にある「対応している機能」の下の「Steam実績」オプションもチェックする必要があります。リリースチェックリストに合格するには、すべての実績に対して、各対応言語での名前が付けられ、アイコンが設定されている必要があります。
実績の数の上限と、プロフィール機能
実績の数とセットの数の上限は、次のとおりです。
| 項目 | 上限 |
|---|---|
| 1つのアプリにおける実績数 | 5,000個(レビューが完了していないアプリの場合は100個) |
| 1つのアプリにおけるセット数 | 40個(ベースゲームのセットを含む) |
アーカイブされた実績も、実績数の上限にカウントされます。
プロフィールのカスタマイズ機能を持たないゲームは、ゲームコレクターや実績コレクターの合計には数えられません。Steam は、ゲームとの関わりを十分に持つ顧客の存在を裏付けるための一定のプレイヤー指標と販売指標にゲームが達した時点で、プロフィールのカスタマイズ機能を自動的に有効にします。Steam は、ゲームが条件を満たすかどうかを1日に数回、自動的にチェックします。
指標は、売上とプレイヤー関与の数値に基づいています。指標には、ユーザーレビューからのデータ・ウィッシュリスト・プレイ時間合計や、ゲームの「品質」を判断するようなものは含まれません。このステータスは、ストアでのゲームのプロモーション方法には影響しません。
試し方
アプリのリリース前は、Steam コミュニティやライブラリ内で、獲得済みの実績を見ることはできません。
リリース前に試す方法には、次のようなものがあります。
実績エディターの上部からリンクされている Steam 実績ページで、実績をプレビューできます。
開発者専用としてマークしたセットは、アプリがリリースされているかどうかにかかわらず、アプリの開発者にのみ表示されます。開発者専用セットの実績は、開発者のみが解除できます。開発者専用セットを使うと、新しい実績をプレイヤーに公開せずにテストできます。
ゲームにコードを追加せずに、実績またはデータを消去するには、Steam クライアントコンソールを使用できます。
steam.exe -consoleで実行し、次のように入力します。achievement_clear <appid> <achievement name> reset_all_stats <appid>ゲームの側で
ResetAllStatsを呼び出すと、現在のユーザーの統計データと、任意で実績をリセットします。bAchievementsTooを true に設定すると、実績も同様にリセットされます。StoreStatsは自動的に呼び出されます。
ユーザー全員の統計データと実績を一括消去する方法はありません。
プレイヤーに実績が出る場所
プレイヤーは、Steam の実績ページ、Steam クライアント、Steam コミュニティ Web サイトで実績を確認できます。ストアページの実績パネルには、ネタバレやアーカイブされた実績を除く、ゲームの実績が表示されます。
ゲームがリリースされると、個々の実績とグローバル実績の進行状況に関する情報が、Steam コミュニティ内に表示されます。ただし、アプリがコミュニティにある程度認知されるまで、ゲームの実績は表示されません。それぞれの実績は、Steamworks で設定されたアイコン・名前・説明とともにリストされます。実績の名前と説明は、ユーザーが現在選択している言語にローカライズ済みの場合には、その言語で表示されます。
情報源
- Steamworks — 統計データと実績(定義の場所・API の呼び出し・テスト・Steam コミュニティでの表示)https://partner.steamgames.com/doc/features/achievements確認日 2026-10-20
- Steamworks — ステップバイステップ:実績(実績エディターのフィールド・アイコン・上限・公開)https://partner.steamgames.com/doc/features/achievements/ach_guide確認日 2026-10-20
- Steamworks — ステップバイステップ:データ(統計の設定場所と保存)https://partner.steamgames.com/doc/features/achievements/stats_guide確認日 2026-10-20
- Steamworks — ISteamUserStats インターフェイス(SetAchievement・StoreStats・IndicateAchievementProgress・ResetAllStats)https://partner.steamgames.com/doc/api/ISteamUserStats確認日 2026-10-20
- Steamworks — プロフィール機能(プロフィールのカスタマイズ機能が有効になる条件)https://partner.steamgames.com/doc/marketing/profile確認日 2026-10-20