Steamworks 文献库
Steam 经济体上下文 ID
Steam 经济体中的各资产能通过三个数字的组合识别:App ID、上下文 ID、资产 ID。 各游戏自己决定 64 位上下文 ID 对其资产的意义。 不同风格的游戏可能会采用一个或多个不同的形式。 不论哪种情况,Steam 均不关心上下文 ID 的实际值。 唯一的要求是上下文(服务器、字符、容器等)逻辑相同,以便审核记录始终精确,并且 GetAssetDetails 对这些资产始终有效。

Steam 保留各上下文 ID 的上两位自用。 由资产服务器返回的上下文 ID 的上两位必须为零。

由资产服务器定义的上下文也必须有非零上下文 ID。 返回上下文 ID 的 API 绝不能指定零的值。

全游戏库存

一些游戏中每个用户都有单个库存,并不存在区别于用户帐户的永久角色的概念。 这些游戏可以每个帐户只有一个上下文,代表该帐户拥有的所有物品; 也可以声明包含其他资产类型的上下文或用户完全不可见的上下文,以便在客服工具中暴露一些内部数据。

economy_simple_contexts.png

各角色库存

有的游戏中,每个帐户有多个角色,每个角色可以有多个库存。 在这些游戏中可以使用这种上下文物品方案,将上下文 ID 分为 32 位角色 ID (最高两位保留给 Steam),以及角色中的 32 位容器 ID。 如果您的游戏有内部独一无二的 32 位角色 ID,您的游戏可以直接在上下文 ID 中使用这些角色 ID。

economy_simple_contexts.png

分片上的角色

有的游戏含有依赖特定服务器的角色,且每个角色有多个库存。 这种模式常见于大型多人游戏。 为这种设置分割上下文 ID 的办法之一是,最高 16 位(2 位保留)用于服务器 ID, 32 位用于角色 ID,16 位用于容器 ID。 (图中省略零,以求简洁。)

economy_shard_contexts.png