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

本文关键字:游戏 列表 安装 Steam API 检索 | 更新日期: 2023-09-27 18:21:31

我正在开发一个Steam Roulette程序,并试图创建过滤器。我想实现的过滤器之一是(如果用户数据是用SteamWorks加载的),返回他/她在电脑上安装的游戏列表(最好是应用程序ID形式),然后我可以将其与原始完整列表进行比较,以删除不需要的值;就像一个过滤器,从可以选择的可能游戏列表中删除用户没有安装在机器上的游戏。

情况:

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

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

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

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


我是否可以使用SteamWorks函数来检索安装在计算机上的游戏列表,而不是玩家拥有的所有游戏,而无需读取各自文件夹的steam库?

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

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

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

包含所有本地蒸汽库的路径。(不包括默认库中的)

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

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

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