发布第一个用户生成的内容
重要
Economy v2 现已正式发布。 有关支持和反馈,请转到 PlayFab 论坛。
本教程逐步讲解如何通过 API 和 Game Manager UX 发布包含内容的 UGC,深入了解比快速入门更详细的内容。
要求
- PlayFab 开发人员帐户
- 已启用 UGC 的游戏
通过 API
在本部分中,我们将利用 Postman Collections 与 PlayFab UGC API 交互,但你可以利用我们所有的 SDK。
创建 Blob URL
UGC 系统适用于 PlayFab 实体模型,因此我们需要使用实体令牌而不是会话票证来调用这些 API。 可以在 Postman Collections 快速入门中了解如何获取游戏实体令牌。
UGC 系统利用Azure Blob 存储来存储与游戏的 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
again 来创建新的 blob。 此 URL 也不允许访问内容,除非已上传到草稿项,该草稿项将接收其他(现在可公开访问的)URL注意
每个 blob 只能用于一个项中。 如果希望在多个项目中重复一段内容,应将内容重新上传到不同的 Blob。
将内容上传到 Blob
可通过几种不同的方法将内容加载到这些 URL
通过 Postman
使用调用
CreateUploadUrls
生成的 URL,以及通过将和添加comp: blob
和x-ms-blob-type: blockblob
为标头来创建PUT
请求:然后,可以通过选择二进制文件作为正文类型上传文件:
通过 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", ... } } }
注意
创建的草稿项返回的内容/图像 URL 和原始
CreateUploadUrls
调用将有所不同。 无论选择如何上传内容,都可以通过复制基 URL(在"?"之前)并在浏览器中导航到它来测试上传是否成功。 这只会返回图像after它已上传到草稿项,而不是通过使用来自CreateUploadUrls
的 URL。草稿目录中现在存在草稿 UGC 项! 只要 UGC 项尚未发布,便无法通过公共目录进行搜索。 可以通过调用以下 API 之一来查找此 UGC 项:
-
GetDraftItem
,传入从CreateDraftItem
response 获取的项 ID -
GetDraftItems
,传入已知项 ID 的列表 -
GetEntityDraftItems
,通过草稿项列表传入实体 ID 和/或将 ContinuationToken 从上一个响应传递到页面
-
注意
如果想要立即发布,可以将 field Publish
更改为 true
- 准备好发布 UGC 项时,调用
PublishDraftItem
,传入项 ID(从 responseCreateDraftItem
获取)。 - 如果 UGC 项包含多个特别大的文件,则发布该项目可能需要一些时间,并且当有许多其他玩家同时上传内容时,此过程可能需要更多时间。 可以通过调用
GetItemPublishStatus
,传入项 ID(从CreateDraftItem
response)来检查发布状态。 有一些可能的状态:-
Succeeded
- UGC 项已成功发布 -
Pending
- UGC 项仍在发布过程中 -
Failed
- UGC 项发布失败,并且在修改有问题的内容之前不会发布 -
Unknown
- 这是默认状态,将在调用 UGC 项上的PublishDraftItem
的返回 -
Canceled
- 发生了内部错误,请尝试再次发布该项目(如果多次看到此状态,请联系 PlayFab 工程团队)
-
- 成功发布 UGC 项后,可以通过
SearchItems
or 直接通过 获取它GetItem
(如果具有项目 ID)。 - 可以通过执行以下操作,在发布前后对 UGC 项进行更改:
- 调用
GetDraftItem
,传入项 ID(从 responseCreateDraftItem
获取) - 复制 UGC 项的数据(field 中的所有内容
data
) - 调用
UpdateDraftItem
,传入修改后的 UGC 项的数据 - 如果要更新任何文件或图像,则需要通过调用 again 创建另一个 blob
CreateUploadUrls
- 通过调用
PublishDraftItem
重新发布 UGC
- 调用
通过 Game Manager
在本部分中,我们将在 Game Manager 体验中完全创建 UGC 项 - 无需代码!
创建草稿目录项
选择“经济”>“目录 (v2)”导航到 UGC 页。
选择“新建项”。
填写 UGC 项的相应元数据:
字段名称 值 实体类型 title_player_account 实体 ID [你的玩家 ID] 内容类型 游戏项 开始日期 [过去的任何日期] 游戏 { "NEUTRAL": "Hello World!" }
说明 { "NEUTRAL": "My first UGC item (with content!)" }
在Files和Images部分下,通过选择Upload按钮上传相应的内容。
选择保存并发布。
UGC 项现在将自动创建为草稿项并发布到公共目录 - 现在可以在表中找到此项以及其他已发布的 UGC 项。
注意
当前无法在 Game Manager 中检查草稿项或发布状态 - 只能通过 API 执行此操作
- 若要对已发布的 UGC 项进行任何更改,可以执行以下操作:
- 从表中选择已发布的 UGC 项
- 进行适当的编辑
- 选择保存并发布
故障排除
- 无效请求 - 不支持内容类型"Game Item"。
- 如果已在游戏的配置中指定内容类型(通过
GetCatalogConfig
/UpdateCatalogConfig
或在"经济设置"选项卡下的 Game Manager 中),则需要将游戏项目添加到列表中,或者将内容类型更改为游戏已支持的类型
- 如果已在游戏的配置中指定内容类型(通过
- 请求无效 - 此游戏未配置为使用此服务。
- 你的游戏当前已禁用 UGC - 你可以通过更新游戏的配置(通过
GetCatalogConfig
/UpdateCatalogConfig
、在“经济设置”选项卡下的 Game Manager 中或导航到“经济>目录(预览版)选项卡并选择"启用")来启用此功能。
- 你的游戏当前已禁用 UGC - 你可以通过更新游戏的配置(通过
后续步骤
现已在目录中发布 UGC 项! 可以利用 SearchItems
为玩家创建内容发现体验。