Unity 向け 6labs SDK
このガイドでは、6labs SDK を Unity ゲームに統合する方法を説明します。パッケージのインポート、ゲームプレイ観察の開始と制御、ゲームイベントの送信までを扱います。
対応プラットフォーム
6labs Unity SDK は、以下のプラットフォームでゲームプレイを観察します。
- iOS — iOS 15以降
- Android — APIレベル23(Android 6.0 Marshmallow)以降
- Windows 11(DirectX 12)
前提条件
6labs SDK を統合する前に、開発環境とプロジェクトが以下の要件を満たしていることを確認してください:
- Unity 2021 LTS以降が必要です。それ以前のバージョンでも動作する可能性がありますが、積極的にはサポートされていません。
- Appleプラットフォームのみ — 開発マシンに以下のツールがインストールされていることを確認してください:
- Xcode 26.2以降
- CocoaPods 1.12.0以降
1. モジュールのダウンロードとインポート
6labs SDK は、Unity パッケージファイルとして提供されています。
以下の手順でモジュールを Unity プロジェクトに追加します:
- ダウンロード 6labs Unity SDK の最新バージョン
v4.0.0。 - パッケージを Unity プロジェクトにインポートします:
- Unity エディタで Assets > Import Package > Custom Package. をクリックします。
- システムからダウンロードした
.unitypackageファイルを選択してください。 - Import をクリックしてインポートを完了します。
2. ゲームプレイの観察を開始
StartSession() メソッドを使用して、ゲームプレイの観察を開始します。以下の例を参照してください。
using SixLabs.SDK;
SixLabsSDK.Instance.StartSession(
inGameId: "<optional_player_in_game_id>",
developerPayload: "<optional_developer_payload_here>",
callbackOnComplete: (sdkResponse, errorMessage) => {
// sdkResponse == SdkResponse.SUCCESS は StartSession() が正常に完了したことを意味します
// 結果を処理する
// SixLabsSDK.Instance.CurrentState で SDK の現在の状態を取得できます
}
);
重要事項
inGameIdが渡されない場合、観察されたセッションは破棄され、AI 分析に使用されない可能性があります。これがないと、セッションをプレイヤーに紐付けることができず、後続のインサイト生成に必要な情報が不足します。- ゲームプレイの観察を開始する前に、必ずユーザーの同意を取得してください。SDKは自動的に許可を要求しないため、同意処理はゲームロジック内で実装する必要があります。
- 推奨されるベストプラクティスとして、ゲームのEULA(エンドユーザー使用許諾契約)またはプライバシーポリシーに、ゲームプレイ観察に関する記載を含めることを検討してください。
- 対象プラットフォームに応じて、アプリに必要なインターネットアクセス権限が有効になっていることを確認してください。
- SDKはUnity
Editor内では動作しません。正しくテストするには、プラットフォーム別のビルドを作成し、実機で実行する必要があります。Editor内では、
StartSession()は代わりにcallbackOnCompleteをERROR_NOT_SUPPORTEDとともに呼び出します。
リファレンスStartSession()
public void StartSession(
string inGameId = null,
string developerPayload = null,
Action<SdkResponse, string> callbackOnComplete = null)
パラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
inGameId |
string |
いいえ | 省略可能ですが推奨されるユーザー識別子です。省略した場合、セッションが破棄され、AI 分析に使用されない可能性があります。 |
developerPayload
|
string |
いいえ | セッションに関連付けられる任意の開発者定義メタデータです。この値はセッションリクエストとともにそのまま転送され、カスタムのトラッキング情報やコンテキスト情報を付加するために利用できます。より詳細な developerPayload を提供することで、AIによる分析やセッション理解の精度を大幅に向上させることができます。詳細なユースケースと JSON の例については、Developer Payload の例ページを参照してください。例:
|
callbackOnComplete |
Action<SdkResponse, string> |
いいえ | 呼び出しが完了すると(成功・失敗を問わず)呼び出されます。詳細はコールバックパラメータを参照してください。 |
コールバックレスポンス
このコールバックは非同期に呼び出され、sdkResponse と errorMessage で結果を提供します。
| レスポンス | 説明 |
|---|---|
SUCCESS |
セッションが正常に開始しました。 |
ERROR_STATE_NOT_IDLE |
SDK が SDK_STATE_IDLE 状態ではありませんでした — 既にセッションが実行中である、一時停止中である、または前のセッションがまだ停止処理中です。一時停止中のセッションを継続するには ResumeSession() を使用してください。 |
ERROR_NOT_SUPPORTED |
Unity Editor など、ゲームプレイの観察に対応していないプラットフォームで StartSession() が呼び出されました。 |
ERROR_SESSION_FAILED |
リクエストは受理されましたが、観察セッションを開始できず、SDK は SDK_STATE_IDLE に戻りました。これは、セッション作成の失敗、デバイスの性能限界、古い SDK バージョン、ネットワークの問題、またはその他の初期化に関する問題が原因で発生することがあります。 |
3. ゲーム内 ID の設定
SetInGameId() メソッドを使用して、プレイヤーのゲーム内 ID を既存の観察セッションに関連付けます。このメソッドは、ユーザーアカウントが作成される前に SDK が初期化された場合に、ログイン済みのユーザーを進行中のセッションに紐付けるためによく使用されます。
SixLabsSDK.Instance.SetInGameId("<player_in_game_id>");
注意
StartSession()呼び出し時にinGameIdを渡していた場合、SetInGameId()を呼び出すと、現在のセッションに設定されていた値が上書きされます。
リファレンスSetInGameId()
public void SetInGameId(string inGameId)
パラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
inGameId |
string |
はい | 現在のセッションに関連付けるプレイヤーのゲーム内識別子です。 |
4. ゲームイベントの送信
SendGameEvent() メソッドを使用すると、進行中の観察セッション中にカスタムのゲームプレイイベントを記録できます。イベントはセッションに紐付けられ、分析時に特定のゲームプレイの瞬間を関連付けるために利用できます。
bool result = SixLabsSDK.Instance.SendGameEvent(
eventName: "<event_name>",
eventDataJson: "<event_data_as_json>"
);
リファレンスSendGameEvent()
public bool SendGameEvent(
string eventName,
string eventDataJson)
パラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
eventName |
string |
はい | 記録するカスタムイベントの名前です。 |
eventDataJson |
string |
はい | イベントに関連付ける追加データを含む JSON エンコードされた文字列です。 |
戻り値
| 値 | 説明 |
|---|---|
true |
イベントが受理され、アップロード待ちのキューに追加されました。 |
false |
イベントが拒否されました。例えば eventName が空の場合などです。 |
5. 高度な制御
StartSession() は新しいセッションのゲームプレイ観察を開始します。その後は要件に応じて
PauseSession()、
ResumeSession()、
StopSession() を使用してそのセッションを制御できます。
5.1 一時停止 (PauseSession)
PauseSession()
メソッドを使用して、ゲームプレイの観察を一時停止します。
SdkResponse result = SixLabsSDK.Instance.PauseSession();
重要事項
- ゲームプレイの観察を一時停止します。
- 観察を再開する場合は、後から再度
ResumeSession()を呼び出すことができます。
リファレンスPauseSession()
public SdkResponse PauseSession()
戻り値
| 値 | 説明 |
|---|---|
SUCCESS |
呼び出しが受理され、実行されました。 |
ERROR_STATE_NOT_CAPTURING |
SDK が SDK_STATE_CAPTURING 状態でない場合に返されます — 例えば、ゲームプレイの観察が実行されていない、セッションが既に一時停止されている、または停止処理が既に進行中である場合です。状態とレスポンスコードの全一覧については、セッションライフサイクルを参照してください。 |
5.2 再開 (ResumeSession)
ResumeSession() メソッドを使用して、PauseSession() によって一時停止されていたセッションを再開します。
SixLabsSDK.Instance.ResumeSession(
callbackOnComplete: (sdkResponse, errorMessage) => {
// sdkResponse == SdkResponse.SUCCESS は ResumeSession() が正常に完了したことを意味します
// 結果を処理する
// SixLabsSDK.Instance.CurrentState で SDK の現在の状態を取得できます
}
);
リファレンスResumeSession()
public void ResumeSession(Action<SdkResponse, string> callbackOnComplete = null)
パラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
callbackOnComplete |
Action<SdkResponse, string> |
いいえ | 呼び出しが完了すると(成功・失敗を問わず)呼び出されます。詳細はコールバックパラメータを参照してください。 |
コールバックレスポンス
このコールバックは非同期に呼び出され、sdkResponse と errorMessage で結果を提供します。
| レスポンス | 説明 |
|---|---|
SUCCESS |
セッションが正常に再開しました。 |
ERROR_STATE_NOT_PAUSED |
SDK が SDK_STATE_PAUSED 状態ではなかったため、再開できる一時停止中のセッションがありませんでした。 |
ERROR_SESSION_FAILED |
リクエストは受理されましたが、一時停止中のセッションを再開できず、SDK は SDK_STATE_IDLE に戻りました。これは、セッションまたはランタイムの障害、ネットワークの問題、またはセッションの再開を妨げるその他の障害が原因で発生することがあります。 |
5.3 停止 (StopSession)
StopSession() メソッドを使用して、現在のセッションを完全に終了します。PauseSession() とは異なり、停止したセッションは ResumeSession() で再開することはできません — 新しいセッションを開始するには、再度 StartSession() を呼び出す必要があります。
SixLabsSDK.Instance.StopSession(
callbackOnComplete: (sdkResponse, errorMessage) => {
// sdkResponse == SdkResponse.SUCCESS は StopSession() が正常に完了したことを意味します
// 結果を処理する
// SixLabsSDK.Instance.CurrentState で SDK の現在の状態を取得できます
}
);
リファレンスStopSession()
public void StopSession(Action<SdkResponse, string> callbackOnComplete = null)
パラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
callbackOnComplete |
Action<SdkResponse, string> |
いいえ | 呼び出しが完了すると(成功・失敗を問わず)呼び出されます。詳細はコールバックパラメータを参照してください。 |
コールバックレスポンス
このコールバックは非同期に呼び出され、sdkResponse と errorMessage で結果を提供します。
| レスポンス | 説明 |
|---|---|
SUCCESS |
呼び出しが受理され、セッションが終了しました。 |
ERROR_STATE_NOT_CAPTURING |
SDK が SDK_STATE_CAPTURING または SDK_STATE_PAUSED 状態ではなかったため、停止できるアクティブなセッションまたは一時停止中のセッションがありませんでした。 |
6. セッションライフサイクル
SDK は以下の状態を遷移します。呼び出せるメソッドとその結果は、現在の状態によって決まります:
SixLabsSDK.Instance.CurrentStateを使用すると、いつでも現在の SDK の状態を確認できます。StartSession()、PauseSession()、ResumeSession()、StopSession()は、SDK が有効な状態にあるときにのみ呼び出すことができます。無効な状態から操作を呼び出すと、エラーが返されます。PauseSession()はSdkResponseを直接返します。StartSession()、ResumeSession()、StopSession()は、任意のcallbackOnCompleteコールバックを通じて結果を返します。callbackOnCompleteコールバックは非同期に呼び出されます。
6.1 コールバックパラメータ
このコールバックは Action<SdkResponse, string> 型で、次の 2 つのパラメータを受け取ります:
| パラメータ | 型 | 説明 |
|---|---|---|
sdkResponse |
SdkResponse |
呼び出しの結果。レスポンスコードのいずれかです。 |
errorMessage |
string |
成功時は空文字列で、失敗時にはその理由を示します。 |
6.2 状態
| 状態 | 値 | 説明 |
|---|---|---|
SDK_STATE_IDLE |
100 |
SDK がゲームプレイを観察していない状態です。これはデフォルトの状態であり、セッションが停止した後、または開始に失敗した後に戻る状態でもあります。 |
SDK_STATE_CAPTURING |
101 |
SDK がゲームプレイを積極的に観察している状態です。これには、アクティブなセッションと、データのバッファリングやアップロードといったバックグラウンド処理が含まれます。 |
SDK_STATE_STOPPING |
102 |
セッションが停止処理中の状態です。SDK は SDK_STATE_IDLE に戻る前に、残っている処理を完了させています。 |
SDK_STATE_PAUSED |
103 |
セッションが一時停止している状態です。ゲームプレイの観察は一時的に停止していますが、セッションは開いたままであり、それまでに観察されたデータのアップロードは継続できます。 |
6.3 レスポンスコード
| レスポンス | 値 | 発生元メソッド | 対処方法 |
|---|---|---|---|
SUCCESS |
0 |
すべて | 対応は不要です — 呼び出しは受け付けられ、正常に完了しました。StopSession() の場合はセッションが終了しています。 |
ERROR_STATE_NOT_IDLE |
1000 |
StartSession() |
すでにセッションが実行中、一時停止中、または停止処理中です。CurrentState を確認し、一時停止中であれば ResumeSession() を呼び出してください。 |
ERROR_STATE_NOT_CAPTURING |
1001 |
PauseSession(), StopSession() |
SDK は観察を行っていません。セッションがない状態でも発火しうるライフサイクル処理からの呼び出しであれば、無視して問題ありません。StopSession() は一時停止中のセッションを終了することもできます。 |
ERROR_NOT_SUPPORTED |
1002 |
StartSession() |
この環境ではゲームプレイの観察を利用できません — 現時点ではUnity エディタが該当します。処理を中断し、再試行しないでください。 |
ERROR_STATE_NOT_PAUSED |
1003 |
ResumeSession() |
SDK は一時停止していません。状態が SDK_STATE_IDLE の場合は、代わりに StartSession() を呼び出してください。 |
ERROR_SESSION_FAILED |
1004 |
StartSession(), ResumeSession() |
リクエストは受け付けられましたが、セッションを開始できず、SDK は SDK_STATE_IDLE に戻りました。このエラーは即時の拒否ではなく callbackOnComplete を通じて返されます。errorMessage を記録し、次の適切なタイミングで再試行してください。主な原因は、低スペック端末、SDK バージョンの古さ、ネットワークの問題です。 |
