从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之外)获得已安装游戏的列表?
此文件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列表来获取全名和其他信息。