服务器的创意工坊文件,Steam 创意工坊实现指南

简介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 上传创意工坊物品。

创建并上传内容创建并上传创意工坊内容流程简单,可重复进行,如下方的流程图所示。

66b21fa73d193b7ef4540d13561ae07b.png

创建创意工坊物品所有创意工坊物品自调用 ISteamUGC::CreateItem 起开始存在。

nConsumerAppId 变量应包含游戏或应用程序的 App ID。 如果创意工坊物品创建工具有单独的 App ID,切勿传入该App ID。

EWorkshopFileType 为枚举类型,定义文件如何在社区中共享。 有效值为:

k_EWorkshopFileTypeCommunity:此类型文件用于描述由用户上传且可由社区内任何人下载的文件。 通常用于共享用户创建的模组。

k_EWorkshopFileTypeMicrotransaction:此类型文件用于描述由用户上传的文件,但其目的为仅供游戏决定是否添加入官方内容。 其他用户无法通过创意工坊下载该类型文件,但可在社区中查看并进行评价。

Team Fortress 2 中也使用该实施方法。

首先查看 m_eResult,以确保物品已成功创建。

执行调用结果处理程序时,读取并保存 m_nPublishedFileId 值,以便将来更新创意工坊物品时可用(如保存于与创建工具相关的项目文件中)。

还应查看 m_bUserNeedsToAcceptWorkshopLegalAgreement 变量,如果为 true,需将用户重新定向至接受法律协议。 参见创意工坊法律协议,了解更多信息。

上传创意工坊物品创意工坊物品创建完毕且 PublishedFileId_t 值返回后,即可填入创意工坊物品内容并上传至 Steam 创意工坊。

更新调用完成后,调用 ISteamUGC::SubmitItemUpdate 即可开始 Steam 创意工坊的上传流程。

执行调用结果处理程序时,检查 m_eResult 以确认上传是否成功。

注意:一旦调用便无法取消物品更新与上传。

如有需要,可使用 ISteamUGC::GetItemUpdateProgress 跟踪上传过程。

punBytesProcessed 和 punBytesTotal 可用于提供用户界面控制输入,例如显示上传进度的进度栏。

punBytesTotal 可在上传进程中根据物品更新状态进行更新。

用创建创意工坊物品相同的方法,确认用户是否已接受法律协议, 以防用户并非该物品初创者,而是在对现有物品进行编辑。

附注创意工坊物品原先指定为单个文件。 但有了 ISteamUGC,创意工坊物品是包含文件的文件夹的表现形式。

如果创意工坊物品因应用程序使用需要而需额外元数据,可调用 ISteamUGC::SetItemMetadata 将元数据加入物品。 这些元数据可从查询返回,无需下载安装实际内容。

之前我们建议将该元数据存储于创意工坊物品文件夹内的一个文件当中,您仍可照样执行。

使用内容使用创意工坊内容分为两类:物品订阅和物品安装。

物品订阅绝大部分的创意工坊物品订阅通过 Steam 创意工坊门户进行。 这是对所有游戏与应用程序通用的已知位置,因此用户可在创意工坊网站上定期查找并订阅物品。

但 ISteamUGC 提供了两种方法,用编程方式订阅和取消订阅创意工坊物品,以支持对游戏中物品订阅的管理。

ISteamUGC::SubscribeItem:订阅一个创意工坊物品。 会尽快下载并安装该物品。

ISteamUGC::UnsubscribeItem:取消订阅一个创意工坊物品。 退出游戏后会移除该物品。

另外还有两个枚举用户已订阅物品的方法。

接收外部订阅操作通知用户通过任何机制(如 ISteamUGC 或 Steam 创意工坊网站)订阅一个文件或取消订阅时,可收到游戏内通知。

结构中也包含与创意工坊物品关联的应用程序 ID(m_unAppID)。 无论正在运行什么应用程序,所有物品订阅均会调用处理程序,因此请检查该应用程序 ID 与执行中程序的 ID 是否一致。

物品安装知晓物品订阅信息后,便可利用剩下的使用方法。 这些方法将物品下载与安装状态反馈回游戏, 然后基于下列规则,创意工坊物品通过 Steam 客户端自动下载:

Steam 客户端即将启动游戏或应用程序时,便会下载并安装所有已更新的应用程序 depot。

如有需要,会更新所有现有已安装创意工坊物品。

启动游戏或应用程序。

新订阅但尚未下载的创意工坊物品将在后台进行下载与安装。

已订阅文件将按订阅顺序下载至客户端。

下载创意工坊物品时,Steam 的下载页面将以特定的横幅显示创意工坊物品正在下载。注意:使用 Steam 客户端的“验证游戏文件完整性”功能也可导致下载创意工坊物品。

由于游戏会在新订阅物品下载并安装前启动,剩余的使用方法用于监控管理安装进度, 或是在游戏内订阅物品时用于提供实时安装状态。

创意工坊物品状态

创意工坊物品下载进度

开始下载创意工坊物品或提高其优先顺序ISteamUGC::DownloadItem

将 bHighPriority 设置为 true,即可暂停所有进行中的下载并立即开始下载此创意工坊物品。

如果用户并未订阅该物品(例如匿名登录的游戏服务器),创意工坊物品会下载并临时存放于缓存中。

此方法只对 ISteamUGC 创建的创意工坊物品有效, 对旧版 ISteamRemoteStorage 创意工坊物品则无效。

ISteamUGC::DownloadItemResult_t 回调结构中包含与创意工坊物品关联的应用程序 ID(m_unAppID)。 无论正在运行什么应用程序,所有物品下载均会调用处理程序,因此请检查该应用程序 ID 与执行中程序的 ID 是否一致。

获取创意工坊物品本地副本信息

创意工坊物品已安装或更新通知

查询内容ISteamUGC 接口提供了枚举各种 Steam UGC(如创意工坊物品、截图、视频等)的灵活方式。

45875245a178c29832ca03931431b3d2.png

根据情况不同可用不同方法进行查询,如查询与用户相关内容、查询所有内容或是以 ID 查询内容详情。

调用选项设置方法,自定义适合的查询:

查询用户 UGC 时

查询所有 UGC 时

ISteamUGC::SetMatchAnyTag:设置待处理的 UGC 查询返回的创意工坊物品须符合一个或多个标签,或是所有标签。

ISteamUGC::SetSearchText:设置待处理的 UGC 查询中物品字符串与标题相符还是与描述相符。

ISteamUGC::SetRankedByTrendDays:设置待处理的 UGC 查询中物品顺序是否按一定天数内物品排名进行更新。

查询任何一种 UGC 时

ISteamUGC::AddRequiredTag:给待处理的 UGC 查询增加标签, 只返回含有特定标签的 UGC。

ISteamUGC::AddExcludedTag:给待处理的 UGC 查询增加排除标签, 只返回不含特定标签的 UGC。

ISteamUGC::AddRequiredKeyValueTag:给待处理的 UGC 查询增加必须的键值标签, 只返回键为 [param]pKey[/param] 且值为 [param]pValue[/param] 的创意工坊物品。

ISteamUGC::SetReturnOnlyIDs:设置待处理的 UGC 查询是否只返回 ID 而非所有详细信息, 在只需要部分信息时非常有用(如只需要用户收藏夹列表中的物品 ID 时。)

ISteamUGC::SetReturnMetadata:设置待处理的 UGC 查询是否返回开发者指定的元数据。

ISteamUGC::SetReturnChildren:设置待处理的 UGC 查询是否需要传回物品的子物品 ID。

ISteamUGC::SetLanguage:设置待处理的 UGC 查询返回的标题和描述所使用的语言。

ISteamUGC::SetAllowCachedResponse:设置待处理的 UGC 查询是否从特定时间段的缓存中返回查询结果。

分页结果每个查询可返回最多 50 项结果。 如果要对更多结果进行分页,可在查询中递增 unPage 参数(从 1 开始。)

游戏时间跟踪要跟踪创意工坊物品的游戏时间,只需以所希望跟踪物品的 ID 调用ISteamUGC::StartPlaytimeTracking 即可。 随后物品从游戏移除时,再以物品 ID 调用 ISteamUGC::StopPlaytimeTracking 来停止跟踪,或调用 ISteamUGC::StopPlaytimeTrackingForAllItems 一次性停止所有物品跟踪。

关闭应用程序时,游戏时间跟踪自动停止。

您也可使用 ISteamUGC::CreateQueryAllUGCRequest 在查询中以不同的游戏时间指标对物品进行排序。 以下是基于游戏时间的查询法:

删除创意工坊物品内容您可以调用 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 获取创意工坊物品的临时副本。

若需更多有关这些 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 日志内包含上传更新创意工坊物品时的所有操作。

常见问题

问:可以使用另一个应用程序将内容发布至我游戏的创意工坊吗?可以。 可在基础应用程序的创意工坊对另一编辑或发布工具应用程序进行配置,以接受来自该应用程序的内容。

如要进行相关配置,请前往基础应用程序的创意工坊配置页面并滚动至页面底部, 在“应用发布权限”下方的字段中输入另一个应用程序的 App ID,然后点击“添加”。

发布 Steamworks 设置后,该编辑用应用程序即可将内容发布至基础程序的创意工坊。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/487244.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CCF-GAIR 2020 全球人工智能和机器人峰会今日开幕

于 2020 年 8 月 7 日-9 日召开的 2020 全球人工智能和机器人峰会(CCF-GAIR 2020)今日正式开幕。CCF-GAIR 2020 峰会由中国计算机学会(CCF)主办,香港中文大学(深圳)、雷锋网联合承办&#xff0c…

ajax获取返回随机数,AJAX

AJAXAJAX:即“Asynchronous Javascript And XML”(异步的JavaScript和XML),是指一种创建交互式网页应用的网页开发技术,尤其是在一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。传统Web开发World Wide Web(简称Web)…

Neuron:迄今为止最大的颗粒细胞数据,发现海马齿状回神经元可过滤并放大空间信息...

来源:brainnews小柯生命 报道北京时间2020年8月6日晚,奥地利科学与技术研究所 (IST, Austria)的科研团队在《神经元》上发表论文,发现海马齿状回的神经元可以过滤并且放大空间信息。 出租车司机如何在错综复杂的大街小…

u盘服务器安装win7系统安装教程,最简单的u盘装win7系统详细教程及步骤

随着技术的进步,越来越多的安装电脑系统的方法,有硬盘方式安装,有一键重装系统软件,有U盘重装系统,有光盘安装方法,那么哪种方式最安全呢?答案肯定是U盘安装电脑系统方式最安全,因为…

周志华:“数据、算法、算力”人工智能三要素,在未来要加上“知识”| CCF-GAIR 2020...

来源:雷锋网作者 | 李雨晨如何将“机器学习“与“逻辑推理”相结合,是人工智能领域的“圣杯问题””编者按:2020 年 8 月 7 日,全球人工智能和机器人峰会(CCF-GAIR 2020)正式开幕。CCF-GAIR 2020 峰会由中国…

ISC 2020周鸿祎:以云端大脑为核心打造国家安全反导系统

来源:秦安战略“进入数字孪生时代,网络攻击影响力更甚核弹。”在第八届互联网安全大会(ISC 2020)上,360董事长兼CEO周鸿祎说道。360董事长兼CEO周鸿祎2020伊始,伴随一系列新基建政策的落地,各行…

b站的服务器在哪个位置,b站用的是哪个云服务器

b站用的是哪个云服务器 内容精选换一换介绍常见的安全组配置示例。如下示例中,出方向默认全通,仅介绍入方向规则配置方法。不同安全组内的云耀云服务器内网互通仅允许特定 IP 地址远程连接云耀云服务器SSH远程连接Linux云耀云服务器RDP远程连接Windows云…

丘成桐讲数学简史(2小时完整视频)

转自:数学杂说中国数学学者对于数学历史大都厥如,数学历史学家的重点在于考古,研究的是中国古代数学的断纸残章,对于古代文献的处理,不如一般歴史学家考证严谨,对于世界数学发展的潮流并不清楚,…

AI芯片发展的前世今生

来源:数学与人工智能,以上文章观点仅代表文章作者,仅供参考,以抛砖引玉!人工智能芯片的分类2.1 传统CPU困局自20个世纪60年代早期开始,CPU(中央处理器)开始出现并使用在计算机工业中。现如今,虽…

华为服务器怎么格式化系统,如何格式化服务器

如何格式化服务器 内容精选换一换已获取该弹性云服务器的密钥文件,如未获取,请参见获取弹性云服务器的密钥文件。弹性云服务器已经绑定弹性IP地址。已配置安全组入方向的访问规则。如果您是在Windows操作系统上登录Linux,可以按照下面方式登录…

防止被算力“锁死”,人工智能进化急需革命性算法

来源:搜狐,以上文章观点仅代表文章作者,仅供参考,以抛砖引玉!“深度学习所需的大规模样本数据对于算力产生巨大需求,但近日美国麻省理工学院等研究机构的报告显示,深度学习正在逼近算力极限&…

Hinton口中破解宇宙终极秘密的GPT-3厉害在哪?这有篇涂鸦详解

大数据文摘出品编译:王绍宇、 AndyGPT-3最近又开始火起一阵,关于GPT-3的各种精彩文章现在也很多,其中不光有展示了它生成结果的,也有对结果一些思考的,还有可视化其工作原理的。由于GPT-3各种参数应用太强大&#xff0…

c# ref和out参数

向方法传递参的时候,对应的参数通常会用实参的拷贝来初始化。就是说随便在方法内部进行怎样的修改,都不会影响作为参数传递的变量的原始值。 通过上面的例子我们可以看出来,如果一个方法的参数是引用类型,那么使用哪个参数来进行任…

Gartner:如何利用数字孪生帮助企业创造价值?

❑ 导 读白皮书预测:到2021年,半数的大型工业企业将使用数字孪生,从而使这些企业的效率提高10%。到2024年,超过25%的全新数字孪生将作为新loT原生业务应用的绑定功能被采用。全文共计1723,预计阅读时间6分钟来源 | 树根…

集成电路将成一级学科,这些高校迎来重大机遇!

来源:软科8月4日,国务院发布关于印发《新时期促进集成电路产业和软件产业高质量发展的若干政策》的通知。《新时期促进集成电路产业和软件产业高质量发展的若干政策》在人才政策这一项中提到:进一步加强高校集成电路和软件专业建设&#xff0…

震撼三观:从细胞到宇宙

这是一次高速旅行,每次都以10倍的速度跳跃。从 10的0次方开始(也就是1 米), 然后每次按照10的乘方增加。从10米, 100 米, 1000米,以此类推, 直至巨视世界的无尽。来源:通往知识之路(ID:tongwang…

边缘AI芯片市场将在2025年首次反超云端AI芯片市场

边缘AI将利用许多其他新兴技术,为消费者和企业领域的各种新商机铺平道路。来源:雷锋网作者:吴优由于市场对低延迟、数据隐私以及低成本和超节能的可用性的日益关注,预计到2025年,边缘AI芯片组市场将首次超过云AI芯片组…

倪光南:看好鸿蒙系统,坚持生态体系创新才能不被“卡脖子”

图为倪光南院士接受专访来源:澎湃新闻8月7日,在中国信息化百人会2020年峰会上,华为消费者业务CEO余承东关于“麒麟芯片将绝版”的消息一石激起千层浪,在新的国际环境下,国内科技企业应当如何突破重围,自主创…

弦理论三先驱获2020年狄拉克奖

狄拉克奖是国际理论物理中心(International Centre for Theoretical Physics,ICTP)为纪念理论物理学家狄拉克而在1985年设置的奖项,被视为理论和数学物理领域的最高荣誉之一。近日,ICTP 在意大利 Trieste 宣布了2020年…

CCAI 2020 | 黄铁军:“仿真主义”下的人工智能发展之路

来源:中国人工智能学会在人工智能发展的60多年中,大致有四种方法来实现某些人工智能:符号主义,联结主义,行为主义和统计学,它们分别从不同的角度抓住了“智能”的一些特点,因此各自引领着一个时…