我正在研究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之外)获取已安装游戏的列表?
答案 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一起使用,以获取全名和其他信息。