5

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

如果:

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

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

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

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


是否有任何 SteamWorks 功能可用于检索计算机上安装的游戏列表,而不是玩家拥有/拥有的所有游戏,而无需阅读各自文件夹的 Steam 库?

如果不存在可能的功能,是否有任何方法可以手动(在 API 之外)获取已安装游戏的列表?

4

2 回答 2

8

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

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

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

于 2016-09-11T10:42:48.087 回答
2

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

于 2015-12-13T18:39:13.187 回答