> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 사용자 생성 콘텐츠(UGC) 빠른 시작

> 서비스 대 서비스 호출을 사용해 초안 콘텐츠 아이템에 연결하고, 게시하며, 게임 내에서 플레이어가 만든 콘텐츠를 노출하는 PlayFab UGC용 빠른 시작입니다.

# 사용자 생성 콘텐츠(UGC) 빠른 시작

이 가이드의 목적은 직접 서비스 대 서비스 호출을 사용하여 UGC를 빠르게 시작하는 방법을 설명하는 것입니다. 초안 UGC 콘텐츠 아이템에 연결하고, 해당 아이템을 게시한 다음 검색하여 찾는 방법을 단계별로 보여드립니다.

## 엔터티 토큰 가져오기

UGC는 PlayFab 엔터티와 함께 작동하도록 설계되었으므로 첫 번째 단계는 [LoginWithCustomID](https://learn.microsoft.com/en-us/rest/api/playfab/client/authentication/login-with-custom-id)를 사용해 엔터티 토큰을 가져오는 것입니다. 이 예제는 서비스 호출을 보여줍니다.

```json theme={null}
{
  "CustomId": "exampleUser",
  "CreateAccount": true,
  "TitleId": "DC7B"
}
```

## Blob URL 만들기

UGC 시스템은 [Azure Blob Storage](https://learn.microsoft.com/en-us/azure/storage/blobs/storage-blobs-introduction)를 사용해 타이틀 UGC와 관련된 모든 콘텐츠(파일 및 이미지)를 저장합니다. 콘텐츠를 업로드하려면 먼저 파일 이름과 크기(바이트 단위)를 전달하여 새 blob을 만드는 [CreateUploadUrls](https://learn.microsoft.com/en-us/rest/api/playfab/economy/catalog/create-upload-urls) API를 호출해야 합니다. 예를 들어, 텍스트 파일과 PNG 이미지를 업로드하려면 요청 본문에 다음을 전달합니다.

```json theme={null}
{
  "Files": [
    {
      "FileName": "HelloWorld.txt",
      "FileSize": 12
    },
    {
      "FileName": "PlayFabLogo.png",
      "FileSize": 20725
    }
  ]
}
```

응답에는 각 콘텐츠에 대한 `Id`와 `Url`이 포함됩니다.

```json theme={null}
{
    "code": 200,
    "status": "OK",
    "data": {
        "UploadUrls": [
            {
                "Id": "[Content ID]",
                "Url": "[Content Url + '?' + Token]",
                "FileName": "HelloWorld.txt"
            },
            {
                "Id": "[Image ID]",
                "Url": "[Image Url + '?' + Token]",
                "FileName": "PlayFabLogo.png"
            }
        ]
    }
}
```

## 초안 UGC 아이템 만들기

`"Type":"ugc"` 매개 변수와 함께 [CreateDraftItem](https://learn.microsoft.com/en-us/rest/api/playfab/economy/catalog/create-draft-item) API를 호출하여 "초안" UGC 아이템을 만듭니다. 크리에이터는 게시하기 전에 초안 아이템을 검토하고 액세스할 수 있습니다. 초안 아이템을 만들려면 다음이 필요합니다.

* X-EntityToken 헤더의 이전 호출에서 얻은 `EntityToken`.
* 아이템의 `CreatorEntityKey.Id`에 이전 호출의 `Entity.Id`.
* 아이템의 sourceId에 타이틀의 `TitleId`.

이 호출은 다음과 같이 보입니다.

```json theme={null}
{
  "Item": {
   "Type": "ugc",
    "Title": {
      "NEUTRAL": "Neutral Title Test",
      "en-GB": "en-gb Title",
      "en-US": "en-us Title"
    },
    "Description": {
      "NEUTRAL": "Neutral Description Test",
      "en-GB": "en-gb Description",
      "en-US": "en-us Description"
    },
    "startDate": "2018-10-18T20:01:26.1520582Z"
  }
}
```

이는 `Id`가 있는 생성된 초안 아이템을 반환합니다. 나중에 사용할 수 있도록 `Id`를 저장하세요.

```json theme={null}
       "Item": {
            "SourceEntity": {
                "Id": "1184A",
                "Type": "title",
                "TypeString": "title"
            },
            "SourceEntityKey": {
                "Id": "1184A",
                "Type": "title",
                "TypeString": "title"
            },
            "Id": "44857e2b-c93b-4054-80be-7890028201ff",
            "Type": "ugc",
            "Title": {
              "NEUTRAL": "Neutral Title Test",
              "en-GB": "en-gb Title",
              "en-US": "en-us Title"
            },
          ...
        }
```

## 플레이어의 초안 아이템 ID 가져오기

특정 플레이어의 초안 아이템 ID를 가져오려면 [GetEntityDraftItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/catalog/get-entity-draft-items) API를 사용할 수 있습니다. 타이틀 엔터티는 `Entity` 매개 변수에 플레이어 ID로 이 API를 호출할 수 있으며, API는 해당 특정 플레이어의 초안 아이템 목록을 반환합니다. 타이틀 엔터티만 `Entity` 매개 변수를 전달할 수 있습니다. 플레이어 엔터티는 `Entity` 매개 변수 없이 API를 호출할 수 있으며 API는 호출하는 플레이어가 만든 초안 아이템 목록을 반환합니다.

```json theme={null}
{
  "Count": 2,
  "Entity": {
    "Id": "C88F55C6A734B1DC",
    "Type": "title_player_account",
    "TypeString": "title_player_account"
  }
}
```

## UGC 아이템 게시

아이템이 초안 상태가 되면 [PublishDraftItem](https://learn.microsoft.com/en-us/rest/api/playfab/economy/catalog/publish-draft-item)을 사용해 게시된 상태로 전환할 수 있습니다. UGC 아이템이 게시되면 검색할 수 있고 공개적으로 사용할 수 있습니다. `CreateDraftItem` 응답에서 반환된 아이템 `Id`를 사용해야 합니다.

```json theme={null}
{
"Id": "44857e2b-c93b-4054-80be-7890028201ff"
}
```

## UGC 아이템의 게시 상태 가져오기

아이템 `Id`를 사용해 [GetItemPublishStatus](https://learn.microsoft.com/en-us/rest/api/playfab/economy/catalog/get-item-publish-status) API를 사용하여 UGC 카탈로그의 아이템에 대한 게시 상태를 가져올 수 있습니다.

```json theme={null}
{
"Id": "44857e2b-c93b-4054-80be-7890028201ff"
}
```

가능한 게시 `Result` 값은 다음과 같습니다.

* `Unknown`
* `Pending`
* `Succeeded`
* `Failed`
* `Canceled`

아이템을 다시 게시하면 게시된 아이템이 현재 초안 아이템과 일치하도록 업데이트됩니다.

## 검색 수행

게시 호출이 성공하면 모든 플레이어가 공개 카탈로그의 아이템에 액세스할 수 있습니다. [`SearchItems` API](https://learn.microsoft.com/en-us/rest/api/playfab/economy/catalog/search-items)는 제공된 매개 변수를 사용해 (UGC 아이템을 포함한) 게시된 카탈로그에 대해 검색을 실행하고 페이지가 매겨진 결과 집합을 반환합니다. `Filter`, `OrderBy`, `Select` 필드는 OData를 쿼리 표준으로 사용합니다.

```json theme={null}
{
  "Search": "Test",
  "Count": 2
}
```

## 참고 항목

[첫 번째 사용자 생성 콘텐츠 게시](/services/playfab/economy-monetization/economy-v2/tutorials/publish-ugc)


## Related topics

- [PlayFab 사용자 생성 콘텐츠](/ko/services/playfab/economy-monetization/economy-v2/ugc/overview.md)
- [첫 번째 사용자 생성 콘텐츠 게시](/ko/services/playfab/economy-monetization/economy-v2/tutorials/publish-ugc.md)
- [사용자 생성 콘텐츠 조정](/ko/services/playfab/economy-monetization/economy-v2/ugc/moderation.md)
- [PlayFab Economy v2 문서](/ko/services/playfab/economy-monetization/index.md)
- [XR-018 사용자 생성 콘텐츠](/ko/publishing/certification/xr/xr-018.md)
