2012-05-12 26 views
17

私は小さなC#Winformsゲームを開発しています。私がしたいことの1つは、アプリケーション固有のデータを保存することです。しかし、私はこれを保存すべき正しい場所を理解するために少し苦労しています。アプリケーション固有のデータを保存する場所はどこですか?

限り、私はそれが開催されるため、アプリケーションが保存可能性のあるデータとそれに応じてさまざまな場所のいくつかの種類がある見ることができるよう:

1.アプリケーションのプロパティを - このようなアプリケーションを格納し、それはだ場合など設定データ、最後にログインしたユーザの人数、デフォルトのウィンドウサイズ、位置などです。この情報はapp.settingsに入っていると思われますか?

2.グローバルアプリケーションデータ - これは、このマシンでアプリケーションを実行するすべてのユーザーが使用するスプライトやその他のゲームアセットを含む場合があります。この共通データはどこに保存されますか?私の特別なケースでは、このデータはデフォルトのインストールでは提供されず、ユーザーは同じコンピューター上の他のユーザーが利用できる独自のゲーム資産を追加することが許可されます。

3.ユーザー固有のアプリケーションデータ - これには、ユーザーが保存したゲームファイル、特定のアプリケーションの基本設定、およびプロファイル情報が含まれます。どこにこれを保管すべきですか?

理想的には、私のアプリケーションがWindows XP、Vista、7、そして今後発売予定のWindows 8と互換性があることを望みます。この方法が変更されるかどうかは分かりませんが、助言を提供することを願っています。

これはこの種の開発への私の最初の取り組みであり、「ベストプラクティス」アドバイスに感謝します。

答えて

13

質問2:
私はEnvironment.SpecialFolder.CommonAppData(デフォルトではWindows7上C:\ProgramDataにマップ)にサブフォルダを使用することをお勧め。これは隠しフォルダです。

質問3:
ユーザーがバックアップする意思がないことを期待していた場合Environment.SpecialFolder.AppData(デフォルトでC:\Users\[USERNAME]\AppData\Roamingにマップ、隠しフォルダ)にこれらのファイルを入れて、/それらを修正します。ゲームの中には、節約ゲームをEnvironment.SpecialFolder.MyDocumentsに入れるゲームもあります。これは、ユーザーが簡単に見つけることができるからです。

例コード:complete list of special folders on Windowsについては

var directory = Environment.GetFolderPath(Environment.SpecialFolder.AppData); 


using (FileStream fs = File.Create(Path.Combine(directory, "myAppDirectory", "myFile.txt")) 
{ 
    // write data    
} 

がリンク

  • ユーザーがこれらのディレクトリの周りに移動することができるので、あなたが提供されたコードを使用していることを確認しているSIDENOTES従ってください上記の
  • Windows 7 x64のバグがあります。 g CommonAppDataディレクトリにあり、Windows 8 x64 CPではバグがより深刻になります。私はこれについてブログしました:problems after moving CommonAppData directory on Windows 7 x64 and Windows 8 x64
+0

良いアドバイス。質問2のファイルが実際には動的であるかもしれないことを示すために質問を編集しました。 – Martin

+0

@Martinあなたの質問を再読した後に私の答えを更新しました – yas4891

+0

ありがとう - 非常に役に立ちました。 – Martin

1

なぜデータをオブジェクトに保存してファイルに書き込まないのですか?タイプごとに異なるファイルを使用します。

+1

これはまさに私がやっていることです。それらを格納するディスク上の最良の物理的な場所を知っている。 – Martin

関連する問題