发布第一个用户生成的内容

重要

Economy v2 现已正式发布。 有关支持和反馈,请转到 PlayFab 论坛

本教程逐步讲解如何通过 API 和 Game Manager UX 发布包含内容的 UGC,深入了解比快速入门更详细的内容。

要求

通过 API

在本部分中,我们将使用 Postman 集合 与 PlayFab UGC API 交互,但你可以使用我们的任何 SDK

创建 Blob URL

  • UGC 系统适用于 PlayFab 实体模型,因此我们需要使用实体令牌而不是会话票证来调用这些 API。 可以在 Postman Collections 快速入门中了解如何获取游戏实体令牌。

  • UGC 系统使用Azure Blob 存储来存储与游戏的 UGC 关联的所有内容 (文件和图像) 。 若要上传内容,首先需要调用 CreateUploadUrlsAPI,传入文件名和大小(以字节为单位)以创建新的 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: blobx-ms-blob-type: blockblob 为标头来创建 PUT 请求:Postman 发布示例

  • 然后,可以通过选择二进制文件作为正文类型上传文件:Postman 上传二进制文件

通过 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",
            ...
        }
      }
    }
    
  • 草稿目录中现在存在草稿 UGC 项! 只要 UGC 项尚未发布,将无法通过公共目录进行搜索。 可以通过调用以下 API 之一来查找此 UGC 项:

    • GetDraftItem,传入从 CreateDraftItem response 获取的项 ID
    • GetDraftItems,传入已知项 ID 的列表
    • GetEntityDraftItems,通过草稿项列表传入实体 ID 和/或将 ContinuationToken 从上一个响应传递到页面

注意

如果想要立即发布,可以将 field Publish 更改为 true

  • 准备好发布 UGC 项时,请调用 PublishDraftItem,传入从 CreateDraftItem 响应) 获取的项目 ID (。
  • 如果 UGC 项包含多个特别大的文件,则发布该项目可能需要一些时间,并且当有许多其他玩家同时上传内容时,此过程可能需要更多时间。 可以通过调用 GetItemPublishStatus,传入项 ID(从 CreateDraftItemresponse)来检查发布状态。 有一些可能的状态:
    • Succeeded - UGC 项已成功发布
    • Pending - UGC 项仍在发布过程中
    • Failed - UGC 项发布失败,在修改违规内容之前不会发布
    • Unknown - 这是默认状态,将在调用 UGC 项上的 PublishDraftItem 的返回
    • Canceled - 发生了内部错误,请尝试再次发布该项目(如果多次看到此状态,请联系 PlayFab 工程团队)
  • 成功发布 UGC 项后,可以通过 SearchItemsor 直接通过 获取它 GetItem (如果具有项目 ID)。
  • 可以通过执行以下操作,在发布前后对 UGC 项进行更改:
    • 调用 GetDraftItem,传入项 ID(从 response CreateDraftItem 获取)
    • 复制 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!)" }

    新的用户生成内容的项目

  • FilesImages部分下,通过选择Upload按钮上传相应的内容。

  • 选择保存并发布

  • UGC 项目现在将自动创建为草稿项,并发布到公共目录 - 现在,你将能够在表中找到此项和其他已发布的 UGC 项目。

注意

目前无法在 Game Manager 中检查草稿项目或发布状态 - 这只能通过 API 完成

  • 若要对已发布的 UGC 项进行任何更改,可以执行以下操作:
    • 从表中选择已发布的 UGC 项
    • 进行适当的编辑
    • 选择保存并发布

故障排除

  • 请求无效 - 不支持内容类型“游戏项”。
    • 如果在游戏的配置 (“经济设置”选项卡) UpdateCatalogConfigGetCatalogConfig/下或在 Game Manager 中指定了内容类型,则需要将游戏项添加到列表中,或者将内容类型更改为游戏已经支持的内容类型
  • 请求无效 - 此游戏未配置为使用此服务。
    • 你的游戏当前已禁用 UGC - 你可以通过更新游戏的配置(通过 GetCatalogConfig/UpdateCatalogConfig、在“经济设置”选项卡下的 Game Manager 中或导航到“经济>目录(预览版)选项卡并选择"启用")来启用此功能。

后续步骤

现已在目录中发布 UGC 项! 可以使用 SearchItems 为玩家创建内容发现体验。