5

Steam Roulette プログラムに取り組んでおり、フィルターを作成しようとしています。私が実装したいフィルターの 1 つは (ユーザー データが SteamWorks で読み込まれた場合)、彼/彼女が自分のコンピューターにインストールしたゲームのリスト (できればアプリ ID 形式) を返し、それを比較できるようにすることです。不要な値を削除するために、元の完全なリストに移動します。選択可能なゲームのリストから、ユーザーが自分のマシンにインストールしていないゲームを取り除くフィルターのようなものです。

万一に備えて:

Steam Roulette は、ユーザーが自分の Steam ライブラリからランダムにゲームを選んでプレイする Web アプリケーションの形をしたオンライン トレンドでした。

現在、取得した Steam ID を使用して Web API を使用してユーザーの詳細を取得し、次のSteamUser.GetSteamID().ToString()ように入力しています。

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

そこから返さ.jsonれた情報を読み取って、プログラムが選択できるゲームのリストを生成します。


プレイヤーが所有/所有しているすべてのゲームではなく、それぞれのフォルダーの Steam ライブラリを読み取ることなく、コンピューターにインストールされているゲームのリストを取得するために使用できる SteamWorks 機能はありますか?

可能な関数が存在しない場合、手動で (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 は、PC にインストールされているかどうかを確実に伝える値を返しません。ただし、ゲームがインストールされているフォルダー (私の場合は「C:\Program Files (x86)\Steam\steamapps\common」) を調べると、各ゲーム フォルダーに Steam アプリ ID のテキスト ファイルが含まれていることがわかりました。したがって、各フォルダーを再帰的に調べて、最初に ID のリストを作成することができます。次に、JSON getOwnedGames でアプリ ID リストを使用して、完全な名前とその他の情報を取得します。

于 2015-12-13T18:39:13.187 に答える