从 Steam 中检索已安装游戏的列表 API

Retrieve a list of installed games from the Steam API

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

案例:

Steam Roulette was an online trend, in the form of a web application in which the user picks a random game out of his/her Steam library and plays it.

现在,我正在使用通过 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";

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


我可以使用任何 SteamWorks 函数来检索安装在计算机上的游戏列表,而不是 所有 玩家 owns/has 的游戏, 没有阅读各自文件夹的 Steam 库?

如果没有可能的功能,有没有办法手动(在API之外)获取已安装游戏的列表?

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

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

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

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

Vdf 文件是阀门专有文件(如 JSON)。 您可以使用 Vdf.NET 来解析类似于 JSON.

的 vdf 文件