Steam タイムラインに対応する手順|イベントの印・ゲームの状態・録画
Steam タイムラインは、ゲームレコーディングのフレームワーク内に備わった機能です。ゲームレコーディング機能を使うために、ゲームで特別なことを行う必要はなく、API 呼び出しを追加すると、主に Steam タイムラインの UI に情報を渡せます。関数は `ISteamTimeline` にまとまっています。
このページの目次
タイムラインの機能と、ゲーム側で足すもの
Steam タイムラインは、ゲームレコーディングフレームワーク内に備わった機能で、プレイヤーがゲームプレイの重要な瞬間を見つけて、保存し、共有するための機能です。
ゲームレコーディング機能を使うにあたり、ゲームで特別なことを行う必要はありません。ゲームには、いくつかの API 呼び出しを追加できます。これらの呼び出しは、主に Steam タイムラインの UI に情報を渡すために使います。
呼び出しは ISteamTimeline のメンバー関数で、グローバルアクセサー関数の SteamTimeline 経由で呼び出します。以降の節では、ゲームの状態・イベントの印・アイコン・ゲームフェーズ・録画の確認の順に、関数と引数の名前を並べます。
Steam で選べる機能の全体はSteam で実装が要る仕様に、ストアページでのゲームの配信はストアページの配信の設定にあります。
ゲームの状態を渡す
ゲームの状態は、タイムラインバーの色と、状態の説明で渡します。
タイムラインバーの色
SetTimelineGameMode は、タイムラインバーの色を変更します。引数の eMode(ETimelineGameMode)は、ゲームが実行中のモードです。ETimelineGameMode は、タイムラインバーのセグメントの色を制御します。
| 名前 | 値 | 内容 |
|---|---|---|
k_ETimelineGameMode_Playing |
1 | プレイヤーはゲームを完全にロードしプレイ中です。 |
k_ETimelineGameMode_Staging |
2 | プレイヤーはマルチプレイヤーロビーにいます。 |
k_ETimelineGameMode_Menus |
3 | プレイヤーはゲームのメインメニューまたは一時停止メニューにいます。 |
k_ETimelineGameMode_LoadingScreen |
4 | プレイヤーはロード画面を待っています。 |
これらの値の名前は、マルチプレイヤーゲームにマップされます。ユーザーは(メニューから)ゲームを開始し、まずはキャラクター選択ロビーがあるマルチプレイヤーセッションに参加し、その後でマルチプレイヤーセッションが始まります。
これらの値は、任意のタイプのゲームにマップすることもできます。たとえば、町やダンジョンを訪れるシングルプレイヤーゲームでは、プレイヤーが町でアイテムを購入しているときを k_ETimelineGameMode_Menus に、ダンジョンのロード中を k_ETimelineGameMode_Staging に、ダンジョンでモンスターと戦っているときを k_ETimelineGameMode_Playing に設定できます。
状態の説明
SetTimelineTooltip は、タイムライン内の現在のゲーム状態の説明を設定します。これは、ユーザーがクリップを保存する際に、タイムライン上で特定の瞬間を見つけるのに役立ちます。新しい状態の説明を設定すると、以前の説明が置き換えられます。
引数の pchDescription は、SteamUtils の GetSteamUILanguage によって返される言語のローカライズされた文字列です。flTimeDelta は、この状態変更に適用する時間オフセット(秒単位)で、負の値は、過去に発生したイベントを示します。
状態の説明の例として、シングルプレイヤーゲームにおけるワールド内のユーザーの位置、マルチプレイヤーゲームにおけるラウンドのカウント、スポーツゲームの現在のスコアなどがあります。
ClearTimelineTooltip は、タイムラインで以前に設定したゲームの状態をクリアします。引数の flTimeDelta は、SetTimelineTooltip の flTimeDelta と同じく、この状態変更に適用する時間オフセット(秒単位)で、負の値は過去に発生したイベントを示します。
イベントに印を付ける
イベントの印を付ける・更新する・削除する関数と引数は、次のとおりです。
| 関数 | 引数 | 内容 |
|---|---|---|
AddInstantaneousTimelineEvent |
pchTitle・pchDescription・pchIcon・unPriority・flStartOffsetSeconds・ePossibleClip |
タイムライン上にイベントをマークします。このイベントは瞬時にマークされます。 |
AddRangeTimelineEvent |
pchTitle・pchDescription・pchIcon・unPriority・flStartOffsetSeconds・flDurationSeconds・ePossibleClip |
完了までに一定時間を要するイベントをタイムライン上にマークします。 |
StartRangeTimelineEvent |
pchTitle・pchDescription・pchIcon・unPriority・flStartOffsetSeconds・ePossibleClip |
完了までに一定時間を要するイベントの開始位置をタイムライン上にマークします。 |
UpdateRangeTimelineEvent |
ulEvent・pchTitle・pchDescription・pchIcon・unPriority・ePossibleClip |
StartRangeTimelineEvent で開始されたイベントの詳細を更新します。 |
EndRangeTimelineEvent |
ulEvent・flEndOffsetSeconds |
開始したイベントを終了します。 |
RemoveTimelineEvent |
ulEvent |
AddInstantaneousTimelineEvent や AddRangeTimelineEvent で追加されたイベント、または StartRangeTimelineEvent で開始された進行中のイベントを削除します。 |
AddInstantaneousTimelineEvent・AddRangeTimelineEvent・StartRangeTimelineEvent は、TimelineEventHandle_t を返します。これは、RemoveTimelineEvent、またはオーバーレイ関数の DoesEventRecordingExist および OpenOverlayToTimelineEvent で使用できます。
AddInstantaneousTimelineEvent の例として、新しい武器や弾薬を拾う、ゴールを決める、といったものがあります。AddRangeTimelineEvent の例として、ボス戦、印象的なコンボ、大規模なチームファイトといったものがあります。
StartRangeTimelineEvent で開始したイベントの長さは、EndRangeTimelineEvent への対応する呼び出しによって決まります。ゲームが進行中のイベントをキャンセルしたい場合は、RemoveTimelineEvent を呼び出すことでキャンセルできます。進行中のイベントは、UpdateRangeTimelineEvent を使用することで何度でも更新できます。
引数
| 引数 | 内容 |
|---|---|
pchTitle・pchDescription |
SteamUtils の GetSteamUILanguage によって返される言語にローカライズされた、ゲーム提供の文字列です。 |
pchIcon |
この時点でタイムラインに表示するアイコンの名前です。ゲームの Steamworks パートナーサイトを通じてアップロードされたアイコンの1つ、またはシステムが提供する steam_ で始まるアイコンの1つになります。 |
unPriority |
タイムラインでアイコンが密集する場合に、どのアイコンを表示するかを UI が決定する際に使用される優先度を指定します。優先度の値が大きいイベントは、優先度の値が小さいイベントよりも目立つように表示されます。この値は0から k_unMaxTimelinePriority の間でなければなりません。 |
flStartOffsetSeconds |
イベント開始に適用する時間オフセット(秒単位)です。負の値は、過去に発生したイベントを示します。 |
flDurationSeconds |
イベントの持続時間(秒単位)です。即時イベントの場合は0を渡します。 |
flEndOffsetSeconds |
イベント終了に適用する時間オフセット(秒単位)です。負の値は、過去に発生したイベントを示します。 |
ulEvent |
更新・終了・削除するイベントのハンドル(TimelineEventHandle_t)です。 |
ePossibleClip |
ETimelineEventClipPriority。動画クリップとしてユーザーに推奨しうるイベントをゲーム側から説明できるようにします。 |
flStartOffsetSeconds の用途の1つは、後になって初めてその重要性が明らかになるイベントの処理です。たとえば、プレイヤーが他のプレイヤーに対して時間の経過とともにダメージ効果を発揮する攻撃を開始し、3.5秒後にそのプレイヤーが死亡する場合、ゲームは開始オフセットとして-3.5を渡し、効果を開始した時点からタイムラインにイベントが表示されるようにすることができます。
クリップの優先度
ゲームは、k_ETimelineEventClipPriority_Standard または k_ETimelineEventClipPriority_Featured を ePossibleClip に渡すことで、クリップに適したイベントを推奨します。プレイヤーはいつでも自分でクリップを作成できます。
| 名前 | 値 | 内容 |
|---|---|---|
k_ETimelineEventClipPriority_None |
1 | このイベントはクリップには適していません。 |
k_ETimelineEventClipPriority_Standard |
2 | ユーザーはこのイベントを中心にクリップを作成する場合があります。 |
k_ETimelineEventClipPriority_Featured |
3 | プレイヤーはこのイベント周辺でクリップを作成する可能性が高く、それらのクリップは k_ETimelineEventClipPriority_Standard 優先度のクリップよりも目立たせる必要があります。 |
TimelineEventHandle_t は、進行中または完了している可能性のある単一のタイムラインイベントを識別するために使用されます。これらのハンドルはゲームの現在のセッションに対してのみ有効であり、ゲームを再起動した後は使用できません。
アイコンを指定する
Steam タイムラインには、ゲームで使用できるアイコンセットが用意されています。アイコンは、steam_ のプレフィックスを使用して参照できます。または、steam_ の後ろに数字を付けた steam_[数字] の形式を使用すれば、0~99の数字アイコンを生成することもできます(たとえば、数字が0のものや1のものなど)。
Steamworks のサイトに、自分の製品のためのカスタムアイコンをアップロードすることもできます。
デフォルトのアイコンセットでは、steam_ の後ろに、marker(マーカー)・achievement(実績)・attack(攻撃)・combat(戦闘)・death(死亡)・star(星)・trophy(トロフィー)などを付けた名前が使えます。
ゲームフェーズを使う
StartGamePhase は、ゲームフェーズを開始するために使います。ゲームフェーズを使用すると、ユーザーがバックグラウンド録画やクリップをナビゲートできるようになります。ゲームフェーズの正確な定義はゲームごとに異なりますが、ゲームフェーズは通常10分から数時間のゲームプレイのセクションです。ゲームフェーズは、ゲームがプレイされた日付を示す UI でユーザーに表示され、ゲームセクションごとに1行ずつ表示されます。
ゲームフェーズの例として、マルチプレイヤーの PvP ゲームでの1つのマッチ、ストーリーとともに進行するシングルプレイヤーゲームの1つのチャプター、ローグライクでの1回のランなどがあります。
ゲームフェーズは StartGamePhase で開始されます。フェーズが進行中であっても、AddGamePhaseTag や SetGamePhaseAttribute を使用してタグや属性を追加できます。一度にアクティブにできるゲームフェーズは1つのみです。EndGamePhase は、StartGamePhase で開始されたゲームフェーズを終了するために使います。
フェーズの ID
SetGamePhaseID の引数 pchPhaseID は、ゲームが提供する、ゲームフェーズ用の永続的な ID です。これに該当するのは、マルチプレイヤーゲームのマッチ ID、シングルプレイヤーゲームのチャプター名、キャラクターの ID などです。
このフェーズ ID は、DoesGamePhaseRecordingExist または OpenOverlayToGamePhase への呼び出しで、どのフェーズを指定しているかをゲームに識別させるために使用されます。また、複数のフェーズを相互に関連付けるためにも使用される場合があります。
タグ
AddGamePhaseTag は、ゲームフェーズタグを追加します。フェーズタグは、マッチの結果、プレイしたヒーロー、ゲームモードなどのデータを含む、明確に定義されたオプションのセットを持つデータを表します。タグには、テキスト名に加えてアイコンを付けることができます。
引数は、pchTagName・pchTagIcon・pchTagGroup・unPriority です。pchTagName と pchTagGroup は、SteamUtils の GetSteamUILanguage によって返される言語にローカライズされた、ゲーム提供の文字列で、同じグループ内のタグは UI にまとめて表示されます。pchTagIcon は、UI にタグが表示されたときに表示するアイコンの名前で、ゲームの Steamworks パートナーサイトを通じてアップロードされたアイコンの1つ、またはシステムが提供する steam_ で始まるアイコンの1つになります。unPriority は、どのアイコンを表示するかを UI が決定する際に使用される優先度を指定します。優先度の値が大きいタグは、優先度の値が小さいタグよりも目立つように表示されます。この値は0から k_unMaxTimelinePriority の間でなければなりません。
同じグループ内の複数のタグをフェーズごとに追加でき、すべてが記憶されます。たとえば、AddGamePhaseTag は「倒したボス」グループに対して複数回呼び出されることがあり、フェーズ中に倒したボスごとにそれぞれ異なる名前とアイコンが付けられ、そのすべてがユーザーに表示されます。
属性
SetGamePhaseAttribute は、ゲームフェーズ属性を追加します。フェーズ属性は、フェーズ中に更新される一般的なテキストフィールドを表します。これらは、明確に定義されたオプションセットの一部ではないフェーズメタデータに使用されます。たとえば、「0/0/0」の値で始まり、フェーズが進行するにつれて更新される KDA 属性や、プレイヤーが入力するキャラクター名などです。
引数は、pchAttributeGroup・pchAttributeValue・unPriority です。pchAttributeGroup と pchAttributeValue は、SteamUtils の GetSteamUILanguage によって返される言語にローカライズされた、ゲーム提供の文字列です。unPriority は、どの属性を表示するかを UI が決定する際に使用される優先度を指定します。優先度の値が大きい属性は、優先度の値が小さい属性よりも目立つように表示されます。この値は0から k_unMaxTimelinePriority の間でなければなりません。
属性は、SetGamePhaseAttribute を使用してゲームで必要な回数だけ設定でき、最後の値のみがユーザーに表示されます。
録画の有無を確かめて、オーバーレイを開く
DoesEventRecordingExist(引数は ulEvent)は、指定されたイベントの録画が存在するかどうかを判断するために使います。DoesGamePhaseRecordingExist(引数は pchPhaseID)は、指定されたゲームフェーズの録画が存在するかどうかを判断するために使います。どちらも SteamAPICall_t を返し、Steam は結果とともにコールバックを送信します。
| 関数 | コールバック | 内容 |
|---|---|---|
DoesEventRecordingExist |
SteamTimelineEventRecordingExists_t |
m_ulEventID は照会されたイベントのハンドルです。m_bRecordingExists は、要求されたイベントハンドルの録画が存在する場合は true になります。 |
DoesGamePhaseRecordingExist |
SteamTimelineGamePhaseRecordingExists_t |
m_rgchPhaseID はこの結果に対応するフェーズ ID です。m_ulRecordingMS はこのフェーズの録画の合計時間(ミリ秒単位)、m_ulLongestClipMS はこのフェーズの最も長いクリップの長さ(ミリ秒単位)、m_unClipCount はこのフェーズの動画を含むクリップの数、m_unScreenshotCount はユーザーがこのフェーズで撮ったスクリーンショットの数です。 |
コールバックは、SteamAPI_RunCallbacks を呼び出すことによって実行されます。録画の有無の確認は、OpenOverlayToTimelineEvent または OpenOverlayToGamePhase を呼び出すコントロールを表示するかどうかをゲームが判断する必要がある場合に役立ちます。
OpenOverlayToGamePhaseは、Steam オーバーレイを開き、ゲームフェーズが表すタイムラインのセクションを表示します。引数のpchPhaseIDは、オーバーレイに表示するゲームフェーズです。OpenOverlayToTimelineEventは、Steam オーバーレイを開き、タイムラインイベントが表すタイムラインのセクションを表示します。TimelineEventHandle_tの値は将来のゲームセッションでは有効ではないため、このイベントは現在のゲームセッションのものである必要があります。
ソフトウェアのアプリでオーバーレイを有効にする
Steam オーバーレイは、Steam 上で起動したほぼすべてのゲームの上でアクティブにできる Steam のユーザーインターフェイスの1つです。
タイプが「ソフトウェア」に設定されているアプリでは、自動的にオーバーレイが無効になります。オーバーレイを有効にする必要がある場合の手順は、次のとおりです。
- アカウントに「アプリのメタデータ編集」権限があることを確認します。
- アプリのランディングページから「Steamworks設定を編集」>「インストール」タブ>「インストール全般」を開きます。
- アプリケーションの Steam オーバーレイを有効化するチェックボックスをオンにします。
- 公開します。
情報源
- Steamworks — Steamタイムライン(概要・要件・タイムラインアイコン)https://partner.steamgames.com/doc/features/timeline?l=japanese確認日 2026-10-21
- Steamworks — ISteamTimeline インターフェイス(メンバー関数・コールバック・列挙型)https://partner.steamgames.com/doc/api/ISteamTimeline?l=japanese確認日 2026-10-21
- Steamworks — Steamオーバーレイ(概要・要件)https://partner.steamgames.com/doc/features/overlay?l=japanese確認日 2026-10-21