如何判断一个网站是php还是asp,免费咨询制度,国内大型软件外包公司,网站建设论文 php简介Steam 创意工坊系统使用后端存储、前端网页的形式#xff0c;便于存储、整理、排序、评分及下载游戏或应用程序。本文提供了为产品实现 Steam 创意工坊的技术细节。 在开始将 Steam 创意工坊与您的游戏整合前#xff0c;请参见 Steam 创意工坊概览#xff0c;了解更多您…简介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::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(如创意工坊物品、截图、视频等)的灵活方式。根据情况不同可用不同方法进行查询如查询与用户相关内容、查询所有内容或是以 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 480publishedfileid 5674contentfolder D:\\Content\\workshopitempreviewfile D:\\Content\\preview.jpgvisibility 0title Team Fortress Green Hatdescription A green hat for Team Fortresschangenote 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 设置后该编辑用应用程序即可将内容发布至基础程序的创意工坊。