【问题标题】:Retrieve a list of installed games from the Steam API从 Steam API 检索已安装游戏的列表
【发布时间】:2016-02-13 05:31:40
【问题描述】:

我正在开发 Steam 轮盘赌程序,并且正在尝试创建过滤器。我想要实现的过滤器之一是(如果用户数据是使用 SteamWorks 加载的),是返回他/她在他/她的计算机上安装的游戏列表(最好以 App ID 形式),然后我可以比较到我原来的完整列表中删除不需要的值;就像一个过滤器,可以从可以选择的可能游戏列表中删除用户没有在他的机器上安装的游戏。

万一:

Steam 轮盘赌是一种在线趋势,以网络应用程序的形式出现,用户从他/她的 Steam 库中随机挑选一款游戏并进行游戏。

现在,我正在使用通过 SteamUser.GetSteamID().ToString() 检索到的 Steam ID 使用 Web API 检索用户详细信息并将其输入:

string apiURL = "http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=" + APIKey + "&steamid=" + id + "&format=json&include_appinfo=1";

并从那里读取返回的.json 信息以生成程序可以从中挑选的游戏列表。


我是否可以使用任何 SteamWorks 功能来检索计算机上安装的游戏列表,而不是所有玩家拥有/拥有的游戏,而无需阅读 Steam 库他们各自的文件夹?

如果不存在可能的功能,是否有任何方法可以手动(在 API 之外)获取已安装游戏的列表?

【问题讨论】:

    标签: c# steam steam-web-api steamworks-api


    【解决方案1】:

    此文件C:\Program Files (x86)\Steam\steamapps\libraryfolders.vdf

    包含所有本地 Steam 库的路径。 (不包括默认库中的那个)

    然后获取位于每个游戏文件夹 ({library}\steamapps\common\{game}\steam_appid.txt) 中的 steam_appid.txt 中的值,您将获得所有已安装游戏的 Steam 应用 ID 的列表。

    【讨论】:

    • 请注意:似乎并非所有游戏都有steam_appid.txt 文件,目前正在尝试解决此问题,因为我正在尝试做同样的事情。
    • 您可以尝试处理位于每个库的steamapps 文件夹中的文件appmanifest_*.acf,而不是尝试获取steam_appid.txt(大多数游戏似乎不存在)。每个文件代表一个已安装的游戏,文件名包含应用 ID,文件本身包含更多有用的信息。
    • 知道如何判断游戏是否标记为 VR 游戏吗?
    【解决方案2】:

    我自己正在考虑这样做。不幸的是,steam api 没有返回一个可以可靠地告诉你它是否安装在你的电脑上的值。但是查看安装游戏的文件夹(我的是“C:\Program Files (x86)\Steam\steamapps\common”),我发现每个游戏文件夹都包含一个带有 Steam 应用 ID 的文本文件。因此,您可以递归地查看每个文件夹并首先构建一个 ID 列表。然后,使用带有 JSON getOwnedGames 的应用 ID 列表获取全名和其他信息。

    【讨论】:

    • 我是这么想的,但出现的问题之一是您的 Steam 库文件夹可以... 任何地方。而且,我们可以拥有多个。
    • 带有steam ID的文本文件也不是必需的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-09
    • 1970-01-01
    • 1970-01-01
    • 2018-02-11
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多