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

ayt*_*thy 5 c# steam-web-api steam steamworks-api

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

如果:

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

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

string apiURL = "http://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key=" + APIKey + "&steamid=" + id + "&format=json&include_appinfo=1";
Run Code Online (Sandbox Code Playgroud)

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


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

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

Mit*_*nen 8

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

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

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

  • 您可以尝试处理位于每个库的 `steamapps` 文件夹中的文件 `appmanifest_*.acf`,而不是尝试获取 `steam_appid.txt`(对于大多数游戏似乎不存在)。每个文件代表一个已安装的游戏,文件名包含应用程序 ID,文件本身包含更多有用的信息。 (4认同)