> For the complete documentation index, see [llms.txt](/llms.txt)

# GS2-Log SDK for Game Engine API リファレンス

ゲームエンジン向け GS2-Log SDK の モデルの仕様 と API のリファレンス



## モデル

### EzInGameLog

インゲームログ<br>

ゲームクライアントまたはサーバーサイドスクリプトから送信されるカスタムログエントリです。GS2 API呼び出しにより自動生成されるアクセスログとは異なり、インゲームログはゲーム開発者がプレイヤーのアクション、ゲーム状態の変化、ビジネスメトリクスなどのゲーム固有のイベントを記録するために明示的に送信します。

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| timestamp | long |  | ✓ |  |  | 日時<br>インゲームログが送信された日時です。 |
| userId | string |  |  |  |  ~ 128文字 | ユーザーID |
| tags | [List&lt;EzInGameLogTag&gt;](#ezingamelogtag) |  |  | [] | 0 ~ 20 items | タグ<br>フィルタリングと分類のためにログエントリに付与されたキーバリューペアです。タグによりインゲームログの効率的な検索と集計が可能です（例：イベントタイプ、ステージID、アイテムカテゴリ）。 |
| payload | string |  | ✓ |  |  ~ 10485760文字 | ペイロード<br>JSON形式のカスタムログデータです。プレイヤーのアクション、ゲーム状態、ビジネスメトリクスなど、ゲーム固有の任意の情報を含めることができます。最大10MBまで。 |

**関連するメソッド:**
sendInGameLog - ゲーム内ログを送信します


---

### EzInGameLogTag

ゲーム内ログのタグ<br>

インゲームログエントリのフィルタリングと分類に使用されるキーバリューペアです。各タグキーは1つのログエントリ内で一意でなければなりません。

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| key | string |  | ✓ |  |  ~ 64文字 | タグ名<br>このタグのキー名です。インゲームログを検索する際のフィルタ条件として使用されます。 |
| value | string |  | ✓ |  |  ~ 128文字 | タグ値<br>このタグの値です。キーと組み合わせて、特定の条件でのログフィルタリングを可能にします（例：key="stageId", value="stage-001"）。 |

**関連するメソッド:**
sendInGameLog - ゲーム内ログを送信します


**関連するモデル:**
EzInGameLog - インゲームログ



---

## メソッド

### sendInGameLog

ゲーム内ログを送信します

#### Request

|  | 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 |
| --- | --- | --- | --- | --- | --- | --- |
| namespaceName | string |  | ✓|  |  ~ 128文字 | ネームスペース名<br>ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
| tags | [List&lt;EzInGameLogTag&gt;](#ezingamelogtag) |  | | [] | 0 ~ 20 items | タグ<br>フィルタリングと分類のためにログエントリに付与されたキーバリューペアです。タグによりインゲームログの効率的な検索と集計が可能です（例：イベントタイプ、ステージID、アイテムカテゴリ）。 |
| payload | string |  | ✓|  |  ~ 10485760文字 | ペイロード<br>JSON形式のカスタムログデータです。プレイヤーのアクション、ゲーム状態、ビジネスメトリクスなど、ゲーム固有の任意の情報を含めることができます。最大10MBまで。 |
| gameSession | GameSession | | |  |  | GameSession |

#### Result

|  | 型 | 説明 |
| --- | --- | --- |
| item | [EzInGameLog](#ezingamelog) | ゲーム内ログ|

#### 実装例




**Unity (UniTask)**
```csharp
    var domain = gs2.Log.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    );
    var result = await domain.SendInGameLogAsync(
        payload: "{\"category\": \"use-item\", \"count\": 1, \"itemId\": \"item-0001\"}",
        tags: new List<Gs2.Unity.Gs2Log.Model.EzInGameLogTag> {
            new Gs2.Unity.Gs2Log.Model.EzInGameLogTag() {
                Key = "tag1",
                Value = "value1",
            },
            new Gs2.Unity.Gs2Log.Model.EzInGameLogTag() {
                Key = "tag2",
                Value = "value2",
            },
        }
    );
    var item = await result.ModelAsync();

```

**Unity (Vanilla)**
```cs
    var domain = gs2.Log.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    );
    var future = domain.SendInGameLogFuture(
        payload: "{\"category\": \"use-item\", \"count\": 1, \"itemId\": \"item-0001\"}",
        tags: new List<Gs2.Unity.Gs2Log.Model.EzInGameLogTag> {
            new Gs2.Unity.Gs2Log.Model.EzInGameLogTag() {
                Key = "tag1",
                Value = "value1",
            },
            new Gs2.Unity.Gs2Log.Model.EzInGameLogTag() {
                Key = "tag2",
                Value = "value2",
            },
        }
    );
    yield return future;
    if (future.Error != null)
    {
        onError.Invoke(future.Error, null);
        yield break;
    }
    var future2 = future.Result.ModelFuture();
    yield return future2;
    if (future2.Error != null)
    {
        onError.Invoke(future2.Error, null);
        yield break;
    }
    var result = future2.Result;

```

**Unreal Engine 5**
```cpp
    const auto Domain = Gs2->Log->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        GameSession
    );
    const auto Future = Domain->SendInGameLog(
        "{\"category\": \"use-item\", \"count\": 1, \"itemId\": \"item-0001\"}", // payload
        []
        {
            auto v = MakeShared<TArray<TSharedPtr<Gs2::UE5::Log::Model::FEzInGameLogTag>>>();
            v->Add(
                MakeShared<Gs2::UE5::Log::Model::FEzInGameLogTag>()
                ->WithKey(TOptional<FString>("tag1"))
                ->WithValue(TOptional<FString>("value1"))
            );
            v->Add(
                MakeShared<Gs2::UE5::Log::Model::FEzInGameLogTag>()
                ->WithKey(TOptional<FString>("tag2"))
                ->WithValue(TOptional<FString>("value2"))
            );
            return v;
        }() // tags
    );
    Future->StartSynchronousTask();
    if (Future->GetTask().IsError())
    {
        return false;
    }

    // obtain changed values / result values
    const auto Future2 = Future->GetTask().Result()->Model();
    Future2->StartSynchronousTask();
    if (Future2->GetTask().IsError())
    {
        return Future2->GetTask().Error();
    }
    const auto Result = Future2->GetTask().Result();

```


---



