ゲームデータを%AppData%ではなく%UserProfile%\ Documentsに保存する実用的な理由はありますか?


33

私のドキュメントフォルダには、最近のAAAタイトルのサブフォルダを含む、さまざまなゲームのサブフォルダがあふれています。ゲーム業界で経験のないプロのアプリケーション開発者として、これはまったく間違っています。これらのファイルは%APPDATA%または%LOCALAPDATA%に属します。

私の質問は、特定の利点を得るためにこれらのファイルを%UserProfile%\ Documentsに入れるという意識的な決定があるのか​​、それともWindows XPの時代から引き継がれた単なるレガシーな振る舞いなのか?または、Steamがこれを必要とする、または推奨する、またはデフォルトでこれを行う人気のあるエンジンなど、さらに良い理由がありますか?

関連:ゲームの保存ファイル/データを書き込むディレクトリは?(無意味な議論を避けるため)



4
@Lorenいいえ、セーブゲームはアプリケーション固有のファイル/データ= APPDATAです。ユーザー文書は、ユーザーが意識的に保存した文書です。それがこれらの場所の定義方法です。
ピーター

1
どちらにせよ、これを議論することができます。ドキュメント内の保存、AppData内の構成を見つけることを期待しています。
ローレンペクテル

2
ゲーム内のキャンペーンは、「文書を意識的に保存する」のではないのですか?また、Photoshopドキュメント(PSD)は「アプリケーション固有」ではありませんか?
ダミアンジェリック

4
これは長い間私を覗き込んできました。Documentsフォルダーは、ファイルが適切な場所であるかどうかに関係なく、ファイルを自動的に配置する場所としては不十分です。「マイドキュメント」フォルダは、明示的に選択したMYドキュメント用に予約する必要があります。これにより、自分の個人的なものを追跡できます。システム上のソフトウェアの半分に関連するデータの断片ではありません。なんて不格好な混乱だ!もうDocumentsフォルダーを使用しません。私は自分のドライブを別のドライブで使用し、そのディレクトリをドキュメントライブラリに置き、デフォルトを削除しました。
ファジーロジック

回答:


35

いいえ、そうでもありません。

従来、ゲーム開発者は、オペレーティングシステムによって確立された規則を尊重することはできませんでした。公平であるとはいえ、多くの通常のアプリケーション開発者もそうではありません。

%AppData%およびドキュメントフォルダは、ユーザーごとのデータを保存するためのものです。この質問の目的のためのそれらの違いは、主に%AppData%、ユーザーが表示または対話する必要のないものがあり、ドキュメントフォルダーはユーザーのドキュメント用である:彼らが見たい、対話したいもの。

ゲームは設定を保存し、ファイルをドキュメントフォルダーに保存することがあります。これにより、技術的なユーザーはそれらを確認して存在することを確信するか、バックアップ方法が正しい場合に正しくバックアップする可能性が高くなります「ユーザーフォルダーの内容を別のドライブにコピーします。」

また、ゲームでは、関連するコードの動作を古いOSバージョンから変更していないため、または単に問題をあまり気にしないために、ファイルをそこに保存することがあります。

それはばかげており、通常は間違っていますが、それはそれが何であるかです。


2
もう1つの利点は、ユーザーが%APPDATA%を掘ることなく、ワールド、テクスチャパックなどをインストールできることです。
バルディハーバーロウ

14
%appdata%はそれを手に入れたとき、そのデータをバックではなくドキュメントフォルダに保存することを覚えています。そのフォルダーを見ると、私のクリーチャーはすべてpng画像として保存されていました。これは非常にすばらしかったです。ドキュメントフォルダーに意図的に置かれたので、人々はより多くのクリーチャーと乗り物を簡単に共有およびダウンロードできました。そうは言っても、原油のみを使用するゲームがsave.dat自分のものをそこに置くことにした理由がわかりません。
グスタボ

Sporeがどうやって成功したかについての良い記事がどこかにあります。
TankorSmash

2
ここでこのサイト誰かがそれについて尋ねました。答えの1つは、あなたが考えているかもしれない記事(ここにあります)を参照しています。
ジョシュ

6
理論的には、Vista以降での最善のアクションコースはSHGetKnownFolderPath(FOLDERID_SavedGames, 0, NULL, &path)、デフォルトでを使用することです%UserProfile%\Saved Games。そうすれば、ユーザーは保存したゲームデータを簡単に見つけてバックアップできますが、邪魔になりません。進行状況や構成以外のデータ(たとえば、コンパイルされたシェーダー、プラットフォームに最適化されたアセットまたはダウンロードされたアセットなど)は、appdataに格納する必要があります。
bcrist

18

ディスクを見ると、

  • savegamesを保存する1つのゲーム %APPDATA%
  • savegamesを保存する1つのゲーム %LOCALAPPDATA%
  • 「その他のもの」を保存する2つのゲーム %APPDATA%
  • 「その他のもの」を保存する3つのゲーム %LOCALAPPDATA%
  • savegamesを保存する2つのゲーム %UserProfile%\Saved Games
  • セーブゲームやその他のもののロードを保存する21のゲーム、%UserProfile%\Documentsカウントしない...
  • セーブゲームやその他のアイテムを保存する15のゲーム %UserProfile%\Documents\My Games

すなわち、1の比は次のとおりに記憶されているセーブデータ9 %APPDATA%%LOCALAPPDATA%%UserProfile%\Saved Games%UserProfile%\Documents\*。私のサンプルでは、​​savegamesを入れない、%UserProfile%\Documents\または%UserProfile%\Documents\My Games\小さなスタジオからの4つのゲームすべてです。そのため、数百万の開発コストを抱える大きなスタジオには、一時ファイルを含むすべてのファイルを入れる理由があると考えなければなりません%UserProfile%\Documents\*

レガシーな振る舞いはこれの一部を説明できますが、すべての主要なスタジオがファイルを間違った場所に置いていることを説明するのに十分な理由だとは思いません。したがって、より良い理由が必要です。

私が考えることができる最良の理由は、顧客サポートのコストを削減することです。問題は、%APPDATA%それ%LOCALAPPDATA%が隠されたディレクトリであり、誰もについて知らないようだということです%UserProfile%\Saved Games。ファイルをに配置するとDocuments、savegamesをバックアップする方法や、savegamesをあるマシンから別のマシンに移行する方法を尋ねるサポートコールの費用を節約できます。彼らはに位置セーブデータれたために見つけることができなかったユーザーの例%APPDATA% ここではここではここでは、とここに

別の理由は、この例で起こるようにユーザーがそれを求めるためかもしれません。


1
別のデータポイントを追加するだけで(私は興味があったので)、PCのカウントは19、10、10、17、6、45、31です。セーブゲームやその他のデータを含む50ゲームsteam\userdataと5ゲームで保存/データを使用し%ProgramData%ます。これは、これらすべてをインストールディレクトリに保持するゲームや、データを保存または保存する他の場所を見つけたゲームをカウントしません。
ロス・リッジ

@RossRidgeありがとう、それは便利です。サンプルでは、​​インディーゲームと大きなスタジオゲームに関する傾向がありますか?
ピーター

インディーズゲームが最初の4つのカテゴリに含まれる可能性が高いのは、それがランタイム環境が何かを置く場所(たとえば、Flash)である場合だけです。
ロス・リッジ

4

重要なファイルをすべてドキュメントから移動したため、バックアップ/復元などの後にやり直さなければならなかったゲームの数を思い出してもかまいませんが、ファイルを保存するなどのユーザーアプリケーションデータを完全に忘れてしまいました。多くの場合、プログラムファイルまたはその他の奇妙な場所(appdataなどの隠しフォルダー内など)にあります。

個人的には、この理由から、ドキュメントに含めるのが好きですが、誰かが手動で行うのではなく、適切なバックアップシステムを取得するように言うと確信しています。

少し一貫性があればいいのですが、Steamのようなサービスでは、保存ファイルのコピーをネットワーク上のどこかに保存するのがさらに良いでしょう。


1
Steamには2009年からクラウドストレージがあります。ただし、開発者はそれを使用することを選択する必要があり、ユーザーが有効にしている場合にのみ機能します。ほとんどの新しいゲームは現在サポートしていますが、多くの古いゲームはまだサポートしていません。
bcrist

バックアップを作成する必要があることを人々に伝えるために言い訳を使用し、一貫性も気に入っていますが、アプリケーションデータディレクトリはアプリケーションデータを格納する「奇妙な場所」ではなく、ドキュメントフォルダです。ファイルが属していない場所にファイルを保存すると、バックアップの管理が非常に難しくなります。
マルクストーマス

0

私自身の個人的な経験から、%UserProfile%に保存することを選択しました。これは、ユーザーがアクセス許可を変更せずに常に読み取り/書き込み/変更アクセスできるためです。

これは%APPDATA%には当てはまりません。特に制限付きユーザーアカウントを使用する場合、%APPDATA%内の他のアカウントによって作成されたファイルへの書き込みアクセス権がないことがよくあります。私たちと同じ理由でAAAタイトルが選ばれたと思います。頭痛がしたくありませんでした。


3
ユーザーが書き込み可能なAPPDATA(C:\ Users \ Username \ AppData)を取得し、ユーザーが書き込み可能でないことが多いPROGRAMDATA(C:\ ProgramData)と混同していることは間違いありません。 windows.microsoft.com/en-us/windows-8/what-appdata-folder
パトリックM

1
%APPDATA%の全体的なポイントは、ユーザーが書き込み可能であるということです。C:\ Program Filesはユーザーが書き込み可能ではないため、特にそこにあります。
バルディHarbourow

@PatrickMそうですね、ProgramDataについて話していました。ごめんなさい。回答を削除する最良の方法は何ですか?
デビッド

0

ユーザーとしての個人的な観点から、私は主にバックアップしたいデータとそれを気にしないデータを区別します。

の増分バックアップを作成%LOCALAPPDATA%すると、数万の一時ファイルでバックアップが乱雑になり、その多くがバックグラウンドサービスによってロックされるため、混乱が生じます。これにより、バックアップが遅くなり(多くの小さなファイルからのオーバーヘッドが大きくなり)、不必要に大きくなります(一時ファイルが頻繁に変更されると、「増分」部分が妨害されます)。これを防ぐには、除外リストを手動で維持する必要があります。

%APPDATA%キャッシュなどの一時ファイルを含めることは想定されていないため、わずかに優れています-残念ながら、とにかく含まれています。多くのプログラム設定は、実際にはバックアップを保証しません。

最終的に、セーブゲームはユーザーとしてやり取りしたいタイプのデータであり、%UserProfile%\AppDataそれはそれ自体には役立ちません。


-3

古いゲームのように/ "game installation folder" / savegame /を使用しないのはなぜですか?どうしてsavegamesを隠しフォルダーに入れたのか、システムドライブのドキュメントに入れたのか理解できなかった

昔は、savegamesがどこにあるかを常に知っていました。


3
このフォルダーは書き込み保護されています。アドミニストレーターとしてゲームを開始する必要があります。これは迷惑であり、すべてのユーザー(たとえば、何かをインストールする子供からコンピューターを保護したい親)には利用できません。
ベイランクール

1
"game installation folder"です%ProgramFiles%\<gamename>%ProgramFiles%プログラムのインストール/アンインストール中にのみ変更されることを意図しています。そのディレクトリに書き込むWindows XP / Vistaアプリケーションは管理者として実行する必要があるため、たとえば、ウイルスがword.exeをword.exeの感染バージョンに置き換えるのを難しくします。もう1つの理由は、Microsoftが複数のユーザーが個人ファイル(この場合はsavegames)を共有せずに同じプログラムを使用できるようにしたかったためです。これらの問題に対処する他の/より良い方法がありますが、その時点では選択されていません。
ピーター
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.