첫 사용자 생성 콘텐츠 게시
Important
이제 Economy v2가 일반 공급됩니다. 지원 및 피드백을 받으려면 PlayFab 포럼으로 이동하세요.
이 자습서에서는 API와 게임 관리자 UX 모두를 통해 콘텐츠가 포함된 UGC를 게시하는 방법을 안내하며 빠른 시작보다 더 자세히 설명합니다.
요구 사항
- PlayFab 개발자 계정
- UGC 사용 타이틀
API를 통해
이 섹션에서는 Postman Collections를 활용하여 PlayFab UGC API와 상호작용하지만, 모든 SDK를 활용할 수 있습니다.
Blob URL 만들기
UGC 시스템은 PlayFab 엔터티 모델에서 작동하므로 세션 티켓 대신 엔터티 토큰을 사용하여 이러한 API를 호출해야 합니다. Postman Collections 빠른 시작에서 타이틀 엔터티 토큰을 얻는 방법을 배울 수 있습니다.
UGC 시스템은 Azure Blob Storage를 활용하여 타이틀의 UGC와 연결된 모든 콘텐츠(파일 및 이미지)를 저장합니다. 콘텐츠를 업로드하려면 먼저
CreateUploadUrls
API를 호출하고 파일 이름과 크기(바이트 단위)를 전달하여 새 Blob을 만들어야 합니다. 예를 들어 텍스트 파일 및 PNG 이미지를 업로드하려면 요청 본문에 다음을 전달합니다.{ "Files": [ { "FileName": "HelloWorld.txt", "FileSize": 12 }, { "FileName": "PlayFabLogo.png", "FileSize": 20725 } ] }
응답에는 각 콘텐츠에 대한
Id
및Url
이(가) 포함됩니다.{ "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" } ] } }
참고 항목
각 토큰 만들기(응답의 "URL" 필드에 반환됨)는 6시간 동안 유효하며, 그 후에는 Blob에 콘텐츠를 업로드할 수 없습니다. Blob에 콘텐츠를 업로드하지 않은 경우 서비스에서 정리되며
CreateUploadUrls
을(를) 다시 호출하여 새 Blob을 만들어야 합니다. 또한 이 URL은 다른(이제 공개적으로 액세스할 수 있음) URL을 수신하는 초안 항목에 업로드될 때까지 콘텐츠에 대한 액세스를 허용하지 않습니다.참고 항목
각 Blob은 하나의 항목에서만 사용해야 합니다. 여러 항목에서 콘텐츠를 반복하려면 콘텐츠를 다른 Blob에 다시 업로드해야 합니다.
Blob에 콘텐츠 업로드
이러한 URL에 콘텐츠를 업로드하는 몇 가지 방법이 있습니다.
Postman을 통해
CreateUploadUrls
호출에서 생성된 URL과comp: blob
및x-ms-blob-type: blockblob
를 헤더로 추가하여PUT
요청을 생성합니다.그런 다음 본문 유형으로 binary를 선택하여 파일을 업로드할 수 있습니다.
AzCopy를 통해
또 다른 옵션은 AzCopy 도구를 사용하는 것입니다. 도구를 다운로드하고 여기에서 AzCopy를 시작할 수 있습니다.
선택한 터미널에서 다음 매개 변수를 사용하여 azcopy를 호출합니다.
[relative path to azcopy.exe] copy [relative path to local content] [Url + '?' + Token]
초안 UGC 만들기
이제 파일 및 이미지가 성공적으로 업로드되었으므로
CreateDraftItem
을(를) 호출하여 콘텐츠 및 이미지의 URL을 전달하고 초안 카탈로그에서 첫 번째 항목을 만들 수 있습니다.{ "Item": { "Type": "ugc", "Title": { "NEUTRAL": "Hello World!" }, "Description": { "NEUTRAL": "My first UGC item (with content!)" }, "ContentType": "Game Item", "IsHidden": false, "Contents": [ { "Id": "[Content ID]", "Url": "[Content Url]" } ], "Images": [ { "Id": "[Image ID]", "Type": "Thumbnail", "Url": "[Image Url]" } ] }, "Publish": false, "AllowOverwrite": false }
참고 항목
항목에 이미지를 업로드할 때는 모든 이미지를
Type
매개 변수로 분류해야 합니다. 이는 "축소판 그림" 또는 "스크린샷"이 될 수 있습니다. 각 항목은 "축소판 그림" 유형의 이미지 하나만으로 제한되며 기본적으로 검색은 기본적으로 "축소판 그림" 이미지(있는 경우)를 반환합니다.응답은 항목 ID와 함께 전달한 메타데이터를 반환합니다.
{ "code": 200, "status": "OK", "data": { "Item": { ... "Id": "e5427509-1b72-4ee1-9e6c-03fc055a94f3", ... } } }
참고 항목
만든 초안 항목과 원본
CreateUploadUrls
호출에서 반환되는 콘텐츠/이미지 URL은 다릅니다. 콘텐츠를 업로드하도록 선택한 방법에 관계없이 기본 URL('?' 이전)을 복사하고 브라우저에서 해당 URL로 이동하여 업로드가 성공했는지 테스트할 수 있습니다. 이렇게 하면CreateUploadUrls
에서 URL을 사용하지 않고 초안 항목에 업로드된 후에만 이미지가 반환됩니다.이제 초안 UGC 항목이 초안 카탈로그에 있습니다. UGC 항목이 아직 게시되지 않은 한 공개 카탈로그를 통해 검색할 수 없습니다. 다음 API 중 하나를 호출하여 이 UGC 항목을 찾을 수 있습니다.
-
GetDraftItem
,CreateDraftItem
응답에서 얻은 항목 ID 전달 -
GetDraftItems
알려진 항목 ID 목록을 전달합니다. -
GetEntityDraftItems
엔터티 ID를 전달하고/또는 이전의 각 응답에서 임시 항목 목록을 통해 페이지에 ContinuationToken을 전달합니다.
-
참고 항목
즉시 게시하려는 경우 Publish
필드를 True로 변경할 수 있습니다.
- UGC 항목을 게시할 준비가 되면
PublishDraftItem
를 호출하여 항목 ID(CreateDraftItem
응답에서 가져온)를 전달합니다. - UGC 항목에 특히 큰 파일이 여러 개 있는 경우 항목을 게시하는 데 시간이 걸릴 수 있으며, 콘텐츠를 동시에 업로드하는 다른 플레이어가 많은 경우 이 프로세스에 훨씬 더 많은 시간이 걸릴 수 있습니다. 항목 ID(
CreateDraftItem
응답에서 가져온)를 전달하여GetItemPublishStatus
을(를) 호출하여 게시 상태를 확인할 수 있습니다. 다음과 같은 몇 가지 가능한 상태가 있습니다.-
Succeeded
- UGC 항목이 성공적으로 게시되었습니다. -
Pending
- UGC 항목이 아직 게시되는 중입니다. -
Failed
- UGC 항목 게시에 실패했으며 문제가 되는 콘텐츠가 수정될 때까지 게시되지 않습니다. -
Unknown
- 기본 상태이며 UGC 항목에서PublishDraftItem
를 호출하기 전에 반환됩니다. -
Canceled
- 내부 오류가 발생했습니다. 항목을 다시 게시해 보세요(이 상태가 여러 번 표시되면 PlayFab 엔지니어링 팀에 문의하세요).
-
- UGC 항목이 성공적으로 게시되면
SearchItems
을(를) 통해 검색하거나 항목 ID가 있는 경우GetItem
을(를) 통해 직접 가져올 수 있습니다. - 게시 전이나 후에 다음을 수행하여 UGC 항목을 변경할 수 있습니다.
-
GetDraftItem
을(를) 호출하여 항목 ID를 전달합니다(CreateDraftItem
응답에서 가져온). - UGC 항목의 데이터 복사(
data
필드의 모든 항목) -
UpdateDraftItem
을(를) 호출하여 수정된 UGC 항목의 데이터를 전달합니다. - 파일 또는 이미지를 업데이트하려면
CreateUploadUrls
을(를) 다시 호출하여 다른 Blob을 만들어야 합니다. -
PublishDraftItem
를 호출하여 UGC 항목을 다시 게시합니다.
-
게임 관리자를 통해
이 섹션에서는 게임 관리자 환경 내에서 UGC 항목을 완전히 만듭니다. 코드가 필요하지 않습니다.
초안 카탈로그 항목 만들기
경제>카탈로그(v2)를 선택하여 UGC 페이지로 이동합니다.
새 항목을 선택합니다.
UGC 항목에 대한 적절한 메타데이터를 작성합니다.
필드 이름 값 엔터티 형식 title_player_account 엔터티 ID [플레이어 ID] 콘텐츠 유형 게임 항목 시작 날짜 [과거의 모든 날짜] 타이틀 { "NEUTRAL": "Hello World!" }
설명 { "NEUTRAL": "My first UGC item (with content!)" }
파일 및 이미지 섹션에서 업로드 단추를 선택하여 적절한 콘텐츠를 업로드합니다.
저장 및 게시를 선택합니다.
이제 UGC 항목이 자동으로 초안 항목으로 만들어지고 공용 카탈로그에 게시됩니다. 이제 다른 게시된 UGC 항목이 있는 테이블에서 이 항목을 찾을 수 있습니다.
참고 항목
현재 게임 관리자 내에서 초안 항목 또는 게시 상태를 확인할 수 있는 방법은 없습니다. 이 작업은 API를 통해서만 수행할 수 있습니다.
- 게시된 UGC 항목을 변경하려면 다음을 수행하여 변경할 수 있습니다.
- 테이블에서 게시된 UGC 항목 선택
- 적절히 편집
- 저장 및 게시 선택
문제 해결
- 잘못된 요청 - 콘텐츠 형식 '게임 아이템'이 지원되지 않습니다.
- 콘텐츠 형식이 타이틀의 구성에 지정된 경우(
GetCatalogConfig
/UpdateCatalogConfig
을(를) 통해 또는 경제 설정 탭 아래의 게임 관리자에서) 게임 항목을 목록에 추가하거나 타이틀이 이미 지원하는 콘텐츠 형식으로 변경해야 합니다.
- 콘텐츠 형식이 타이틀의 구성에 지정된 경우(
- 잘못된 요청 - 이 타이틀은 이 서비스를 사용하도록 구성되어 있지 않습니다.
- 타이틀은 현재 UGC가 비활성화되어 있습니다. (Economy 설정 탭 아래 게임 관리자의
GetCatalogConfig
/UpdateCatalogConfig
에서, 또는 경제 > 카탈로그(미리 보기) 탭으로 이동하여 활성화를 선택하여) 타이틀의 구성을 업데이트하여 활성화할 수 있습니다.
- 타이틀은 현재 UGC가 비활성화되어 있습니다. (Economy 설정 탭 아래 게임 관리자의
다음 단계
이제 카탈로그에 UGC 항목을 게시했습니다.
SearchItems
을(를) 활용하여 플레이어를 위한 콘텐츠 검색 환경을 만들 수 있습니다.