Steam 创意工坊实现指南 (Steamworks 文献库) |
您所在的位置:网站首页 › steammod怎么开启 › Steam 创意工坊实现指南 (Steamworks 文献库) |
简介Steam 创意工坊系统使用后端存储、前端网页的形式,便于存储、整理、排序、评分及下载游戏或应用程序。 本文提供了为产品实现 Steam 创意工坊的技术细节。 在开始将 Steam 创意工坊与您的游戏整合前,请参见 Steam 创意工坊概览,了解更多您能使用的各类创意工坊整合的定义及信息,以及如何最大程度利用 Steam 各类工具。 在一般情况下,您游戏的顾客会使用购买游戏时您提供的工具修改或创建全新的内容, 并将其通过工具内置表格提交给 Steam 创意工坊。 其他顾客可在 Steam 社区的 Steam 创意工坊中浏览、排序、评分或订阅希望增添至游戏中的物品, 并通过 Steam 下载这些物品。 如果您在游戏中注册了 ISteamUGC::ItemInstalled_t 回调,便可以调用 ISteamUGC::GetItemInstallInfo 获取安装位置并从该文件夹直接读取数据, 游戏便会以适合游戏及所创建内容的方式辨识新内容。 Steam 创意工坊类型、货币化及最佳实践参见 Steam 创意工坊 一文,了解更多您能使用的各类创意工坊整合的定义及信息,以及如何最大程度利用 Steam 各类工具。管理 Steam 创意工坊可见度Steam 创意工坊是由 Steam 管理的网站,列出所有分享的内容,允许用户对社区中可见内容进行投票或留言。 应用程序在创意工坊中默认为不对公众开放可见, 以此防止不打算通过 Steam 创意工坊门户共享的内容被公开,除非将创意工坊设定为公开。创意工坊可见状态的设置步骤如下: 打开 Steamworks 网站上的应用程序登录页面。 点击“编辑 Steamworks 设置” 在“创意工坊”选项卡中,选择“通用” 在页面右边,找到“可见状态”栏。 使用单选按钮选择可见度,可以为仅开发者可见、开发者和测试人员可见、顾客和开发者可见,以及所有人可见。 在“发布”选项卡中选择“准备发行” 点击“发布到 Steam”即可完成流程并发布变更。注意:如果要将可见度更改为所有人可见,必须完成创意工坊清单上的项目,包括品牌、标题、描述等,并至少有一项内容公开可见。技术概览参见 Steamworks SDK,了解通过 ISteamUGC API 共享和消费用户生成内容的流程。 所公开的方法提供了分享创意工坊物品内容并可随后在 Steam 创意工坊或应用程序中找到相关内容的途径。创意工坊 API 必须通过由 SteamUGC() 返回的指针才能访问。 示例: SteamAPICall_t hSteamAPICall = SteamUGC()->CreateItem( SteamUtils()->GetAppID(), k_EWorkshopFileTypeMicrotransaction );在游戏或应用程序中启用 ISteamUGC将创意工坊物品上传至 Steamworks 后端之前,必须先设置两项配置,即配置 Steam 云配额、与启用 ISteamUGC API。Steam 云用于存储与创意工坊物品相关的预览图片。 请按下列步骤配置 Steam 云配额: 前往应用管理员面板中的 Steam 云设置页面。 将“每个用户的字节配额”以及“每个用户的文件量配额”设置为适合储存预览图片的值。 点击“保存” 在“发布”选项卡中选择“准备发行” 点击“发布到 Steam”即可完成流程并发布变更。启用 ISteamUGC API 步骤如下: 前往应用管理员面版中的 Steam 创意工坊配置页面。 找到“附加配置选项”栏目。 勾选“为文件传输启用 ISteamUGC”。 点击“保存”。 在“发布”选项卡中选择“准备发行”。 点击“发布到 Steam”即可完成流程并发布变更。设置完成后即可通过 API 上传创意工坊物品。创建并上传内容创建并上传创意工坊内容流程简单,可重复进行,如下方的流程图所示。但 ISteamUGC 提供了两种方法,用编程方式订阅和取消订阅创意工坊物品,以支持对游戏中物品订阅的管理。 ISteamUGC::SubscribeItem:订阅一个创意工坊物品。 会尽快下载并安装该物品。 ISteamUGC::UnsubscribeItem:取消订阅一个创意工坊物品。 退出游戏后会移除该物品。另外还有两个枚举用户已订阅物品的方法。 ISteamUGC::GetNumSubscribedItems:获得当前用户订阅的游戏或应用程序的物品总数。 ISteamUGC::GetSubscribedItems:获得当前用户订阅的当前游戏的物品清单。接收外部订阅操作通知用户通过任何机制(如 ISteamUGC 或 Steam 创意工坊网站)订阅一个文件或取消订阅时,可收到游戏内通知。 注册 RemoteStoragePublishedFileSubscribed_t 与 RemoteStoragePublishedFileUnsubscribed_t 的回调处理程序。 结构中将填入 ISteamRemoteStorage::PublishedFileId_t,该内容随后可用来访问创意工坊物品信息。 结构中也包含与创意工坊物品关联的应用程序 ID(m_unAppID)。 无论正在运行什么应用程序,所有物品订阅均会调用处理程序,因此请检查该应用程序 ID 与执行中程序的 ID 是否一致。物品安装知晓物品订阅信息后,便可利用剩下的使用方法。 这些方法将物品下载与安装状态反馈回游戏, 然后基于下列规则,创意工坊物品通过 Steam 客户端自动下载: Steam 客户端即将启动游戏或应用程序时,便会下载并安装所有已更新的应用程序 depot。 如有需要,会更新所有现有已安装创意工坊物品。 启动游戏或应用程序。 新订阅但尚未下载的创意工坊物品将在后台进行下载与安装。 已订阅文件将按订阅顺序下载至客户端。 下载创意工坊物品时,Steam 的下载页面将以特定的横幅显示创意工坊物品正在下载。 注意:使用 Steam 客户端的“验证游戏文件完整性”功能也可导致下载创意工坊物品。由于游戏会在新订阅物品下载并安装前启动,剩余的使用方法用于监控管理安装进度, 或是在游戏内订阅物品时用于提供实时安装状态。 创意工坊物品状态 ISteamUGC::GetItemState:获取此客户端中某个创意工坊物品的状态。创意工坊物品下载进度 ISteamUGC::GetItemDownloadInfo:获取进行了 k_EItemStateNeedsUpdate 设置的创意工坊物品待下载状态信息。开始下载创意工坊物品或提高其优先顺序 ISteamUGC::DownloadItem 将 bHighPriority 设置为 true,即可暂停所有进行中的下载并立即开始下载此创意工坊物品。 如果返回值为 true,在调用 ISteamUGC::GetItemInstallInfo 或访问磁盘上创意工坊物品前,注册并等待 ISteamUGC::DownloadItemResult_t 回调。 如果用户并未订阅该物品(例如匿名登录的游戏服务器),创意工坊物品会下载并临时存放于缓存中。 如果创意工坊物品有一个 k_EItemStateNeedsUpdate 的 ISteamUGC::EItemState,可调用 ISteamUGC::DownloadItem 开始更新。 在调用 ISteamUGC::DownloadItemResult_t 回调前切勿访问磁盘上的创意工坊物品。 此方法只对 ISteamUGC 创建的创意工坊物品有效, 对旧版 ISteamRemoteStorage 创意工坊物品则无效。 ISteamUGC::DownloadItemResult_t 回调结构中包含与创意工坊物品关联的应用程序 ID(m_unAppID)。 无论正在运行什么应用程序,所有物品下载均会调用处理程序,因此请检查该应用程序 ID 与执行中程序的 ID 是否一致。 获取创意工坊物品本地副本信息 ISteamUGC::GetItemInstallInfo:获取进行了 k_EItemStateInstalled 设置的的创意工坊物品当前在磁盘上安装内容的信息。创意工坊物品已安装或更新通知 注册一个 ISteamUGC::ItemInstalled_t 回调处理程序。查询内容ISteamUGC 接口提供了枚举各种 Steam UGC(如创意工坊物品、截图、视频等)的灵活方式。您也可调用以下函数获取各物品的额外信息(有些数据不会默认返回,因此需妥善配置查询条件): ISteamUGC::GetQueryUGCPreviewURL:收到 UGC 查询调用结果后,获取创意工坊物品预览图片的 URL。 ISteamUGC::GetQueryUGCMetadata:收到 UGC 查询调用结果后,获取开发者设置的创意工坊物品元数据。 ISteamUGC::GetQueryUGCChildren:收到 UGC 查询调用结果后,获取创意工坊物品的子物品 ID。 ISteamUGC::GetQueryUGCStatistic:收到 UGC 查询调用结果后,获取创意工坊物品的各项统计数据。 ISteamUGC::GetQueryUGCNumAdditionalPreviews 和 ISteamUGC::GetQueryUGCAdditionalPreview:收到 UGC 查询调用结果后,获取与创意工坊物品关联的额外预览详情。 ISteamUGC::GetQueryUGCNumKeyValueTags 和ISteamUGC::GetQueryUGCKeyValueTag:收到 UGC 查询调用结果后,获取与创意工坊物品关联的键值标签详情。 调用 ISteamUGC::ReleaseQueryUGCRequest 释放查询或获取结果时分配的内存。分页结果每个查询可返回最多 50 项结果。 如果要对更多结果进行分页,可在查询中递增 unPage 参数(从 1 开始。)游戏时间跟踪要跟踪创意工坊物品的游戏时间,只需以所希望跟踪物品的 ID 调用ISteamUGC::StartPlaytimeTracking 即可。 随后物品从游戏移除时,再以物品 ID 调用 ISteamUGC::StopPlaytimeTracking 来停止跟踪,或调用 ISteamUGC::StopPlaytimeTrackingForAllItems 一次性停止所有物品跟踪。关闭应用程序时,游戏时间跟踪自动停止。 您也可使用 ISteamUGC::CreateQueryAllUGCRequest 在查询中以不同的游戏时间指标对物品进行排序。 以下是基于游戏时间的查询法: k_EUGCQuery_RankedByPlaytimeTrend - 按降序排列“某”时段内总的游戏时间(以 ISteamUGC::SetRankedByTrendDays 设置)。 k_EUGCQuery_RankedByTotalPlaytime - 按降序排列总计游戏时间。 k_EUGCQuery_RankedByAveragePlaytimeTrend - 按降序排列“某”时段内平均游戏时间(以 ISteamUGC::SetRankedByTrendDays 设置)。 k_EUGCQuery_RankedByLifetimeAveragePlaytime - 按降序排列总计平均游戏时间。 k_EUGCQuery_RankedByPlaytimeSessionsTrend - 按降序排列“某”时段内的游戏会话次数(以 ISteamUGC::SetRankedByTrendDays 设置)。 k_EUGCQuery_RankedByLifetimePlaytimeSessions - 按降序排列总计游戏会话次数。删除创意工坊物品内容您可以调用 ISteamUGC::DeleteItem 来删除一件创意工坊物品。 请注意这样做将不会提示用户,且操作不可撤销。Steamworks 示例:SpaceWar 集成Steamworks SDK 中的 Steamworks API 示例应用程序(SpaceWar)展示了一个 ISteamUGC API 子集。 CSpaceWarClient::LoadWorkshopItem 展示了如何检查创意工坊物品是否已下载并安装至磁盘中,及如何使用 ISteamRemoteStorage::PublishedFileId_t 请求创意工坊物品信息。 CSpaceWarClient::LoadWorkshopItems 展示了如何获取当前用户为 SpaceWar 应用程序已订阅的创意工坊物品清单。 CSpaceWarClient::OnWorkshopItemInstalled 展示了一个 ISteamUGC::ItemInstalled_t 回调处理程序。创意工坊法律协议在贡献者同意《Steam 创意工坊法律协议》前,创意工坊物品默认为隐藏状态。 为方便贡献者公开他们的物品,请按以下步骤进行: 在将物品提交至创意工坊的按钮旁添增一段文字,类似于“提交此物品即表明您同意了创意工坊服务条款”(包括链接)。 用户提交物品后,调用 ISteamFriends::ActivateGameOverlayToWebPage,将 pchURL 设为 steam://url/CommunityFilePage/,并将 替换为创意工坊物品 ID,以在浏览器窗口打开该物品的 Steam 创意工坊页面。这样可将作者定向至创意工坊页面,以便作者查看物品,必要时也可进行更多配置。此外也便于用户阅读并接受《Steam 创意工坊法律协议》。Web API除上述方法外,Web API 接口也提供了类似功能,与基于社区的筛选 API 来一起列出所有分享内容。 请参阅 Web API 列表内的 ISteamRemoteStorage 接口文件。专用游戏服务器游戏服务器也可以用来下载和安装物品。 游戏服务器需有 PublishedFileId_t 信息方可请求创意工坊物品。该信息可由游戏客户端提供,或由服务器管理员设置。 随后可调用 ISteamUGC::DownloadItem 获取创意工坊物品的临时副本。 调用 ISteamUGC::GetItemInstallInfo 以获取定位信息并使用创意工坊物品。 若需更多有关这些 API 方法的信息,请参见上述物品安装部分。SteamCmd 集成除 ISteamUGC API 之外,steamcmd.exe 命令行工具也可用于为测试目的创建和更新创意工坊物品。 由于此工具要求用户输入 Steam 凭据(我们不希望顾客提供),因此仅限于测试使用。如要使用 steamcmd.exe 创建新的 Steam 创意工坊物品,首先须创建一个纯文本 VDF 文件, 并包含以下键值。 "workshopitem" { "appid" "480" "publishedfileid" "5674" "contentfolder" "D:\\Content\\workshopitem" "previewfile" "D:\\Content\\preview.jpg" "visibility" "0" "title" "Team Fortress Green Hat" "description" "A green hat for Team Fortress" "changenote" "Version 1.2" } 注意: 键值与各种 ISteamUGC::SetItem[...] 方法对应。 请见上方文献了解更多信息。 所示值为均为示例,应根据情况而适当调整。 要创建新物品,则必须设置 appid,且 publishedfileid 必须不设,或设置为 0。 要更新现有物品,appid 与 publishedfileid 均需设置。 若要更新键值,剩余键/值对须包含在 VDF 文件中。创建 VDF 后,可按 workshop_build_item 的文件参数运行 steamcmd.exe。 如:steamcmd.exe +login myLoginName myPassword +workshop_build_item workshop_green_hat.vdf +quit如果命令成功,VDF 中的 publishedfileid 值会自动更新,以包含创意工坊物品 ID。 由此,同一个 VDF 的 steamcmd.exe 后续调用将会更新而非创建新物品。错误与日志大部分 ISteamUGC 方法返回布尔值。 更多有关特定错误的信息,有多个地方可查阅: Steam\logs\Workshop_log.txt 日志内包含创意工坊物品下载安装时产生的所有传输。 Steam\workshopbuilds\depot_build_.log 日志内包含上传更新创意工坊物品时的所有操作。 ISteamUGC::SteamUGCQueryCompleted_t、ISteamUGC::CreateItemResult_t 与 ISteamUGC::SubmitItemUpdateResult_t 包含 EResult 变量,可供查看。常见问题问:可以使用另一个应用程序将内容发布至我游戏的创意工坊吗?可以。 可在基础应用程序的创意工坊对另一编辑或发布工具应用程序进行配置,以接受来自该应用程序的内容。如要进行相关配置,请前往基础应用程序的创意工坊配置页面并滚动至页面底部, 在“应用发布权限”下方的字段中输入另一个应用程序的 App ID,然后点击“添加”。 发布 Steamworks 设置后,该编辑用应用程序即可将内容发布至基础程序的创意工坊。 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |