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

时间:2015-11-12 00:04:03

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

我正在研究Steam轮盘计划,我正在尝试创建过滤器。我想要实现的其中一个过滤器(如果用户数据是用SteamWorks加载的),则返回他/她在他的计算机上安装的游戏列表(最好是App 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功能来检索计算机上安装的游戏列表,而不是所有玩家拥有/拥有的游戏,而无需读取蒸汽库他们各自的文件夹?

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

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:2)

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