Steamworks 文献库
Steam 库存服务

原文内容有作更新

此页英文版本在翻译版发布之后作了更新。
点击此处查看此页更新后的英文版本。
Steam 库存服务提供了一系列功能,允许游戏为玩家提供恒久库存,无须另外再运行特殊服务器来管理用户或物品。

请在 Steamworks 开发者组的 Steam 库存讨论中,留下您的反馈与问题。

描述

库存服务有两种使用方式:无服务器,或者添加知晓游戏状态的受信任服务器。

在没有游戏服务器的情况下,游戏客户端可以直接与 Steam 服务通信,以获取用户的库存内容、消耗或交换物品,并接收在游玩一定时间后而授予的新物品。 用户也可以直接从物品商店购买物品,或在 Steam 社区市场中进行交易或交换。

然而,由于客户端不可信(且客户端中的密钥可能被黑客获取),您不能以此方式给予顾客特定物品。 相反,您要选择某些可以掉落的物品,配置掉落频率。 在适当时候,游戏客户端调用 ISteamInventory::TriggerItemDrop。 Steam 服务器管理每个玩家的游戏时间与物品掉落频率。 这些 API 使用假定为不可信任的内部“客户端 API 密钥”调用。

如果您有一个用于库存服务的可信任服务器,那么您可以在该服务器上使用一个 Steam API 特权密钥,并在适当情况下向用户发放指定物品。 但您仍需记住,您不能信任您自己的客户端,因此,您只能在服务器控制游戏状态时才这样做。

最后,配合库存服务,您可以在游戏中或通过网页版商店销售单件物品或一购物车物品。

您可以观看 Steam Dev Days 2016 的讲座,了解库存服务的实现概览、库存服务为开发者解决特定问题的详情、合作伙伴使用此系统为顾客服务的演示。

https://www.youtube.com/watch?v=jDfhPTSOLis

实现概览

  1. 创建物品定义
    您需要先创建并上传一些物品定义(ItemDefs)。
    这些定义描述了您游戏中可能存在的物品集。 您不需要为游戏本身使用这些定义,但是 Steam 需要它们来正确显示库存。 要创建 ItemDefs ,前往您的 Steamworks 配置区域的 Steam 库存栏目。 您可以通过这里前往: https://partner.steamgames.com/apps/inventoryservice/
  2. 启用库存服务
    拥有物品定义后,在您上传物品定义的页面,勾选“启用库存服务”,开启库存服务。 请注意,如果您物品的可见性在 Steam 经济体中设置为私密,那么只有加入了您 Steamworks 合作伙伴组的帐户才能访问您的游戏内物品。
  3. 设置资产服务器密钥
    首先为您的应用程序生成发行商 Web API 密钥(步骤:创建发行商 Web API 密钥),并填入“Steam 经济体设置”中的“资产服务器密钥”一项中。
  4. 下载用户库存
    让您的游戏客户端调用 ISteamInventory::GetAllItems,下载用户库存。
    建议定期执行此操作,因为用户可能通过交易或购买获得了新物品。
    视您的游戏设计而定,在每局游戏或每个关卡开始时进行检查可能是比较合适的做法。
  5. 授予测试物品
    使用 ISteamInventory::GenerateItems 向当前玩家的帐户添加特定物品,用于开发测试目的。
  6. 授予用户基于游戏时间的掉落(可选)
    在适当时候(通常在比赛/阶段结束时)调用 ISteamInventory::TriggerItemDrop,查看玩家是否获得了新掉落的物品。
  7. 出售物品(可选项)
    需要在您的 itemdefs 中定义价格,才能添加对小额支付的支持。 然后可以允许用户通过几种不同的方式进行购买:

API

Steam 库存 API 的文档位于 API 索引中:ISteamInventory

Web API

Steam 库存 Web API 的文档位于 Web API 索引中:IInventoryService

Web 功能

您可以将用户重新定向至这些结构化网页。
  • ItemCart – 可以用于发送要通过 Steam 购买的一整车物品。
  • BuyItem – 可以用于要通过 Steam 购买的单个物品。