2009-04-21 4 views
2

私のゲームに* .txtレベルのファイルをどこにどのように格納するのかはかなり失われています。カスタムレベルのフォルダはどこにXNAゲームを置くのですか?

ゲームに必要なのは、ゲームにインストールされたいくつかの「プリベークド」レベルの利用可能性だけでなく、ユーザーが自分のOWNレベルを作成できることです。

私がしたことは、レベルと呼ばれる「コンテンツ」のビジュアルスタジオ内に新しいディレクトリが作成され、そこに「level1.txt」が置かれています。しかし、私はレベルにアクセスすることができる唯一の方法* .txtファイルはフルパスを使用することです、そして、それはビルドされませんので、私は私のVisual Studioソリューションでそれらを含めることはできません。

"C:\My Documents\blahblabh....\levels\level1.txt" 
  • 私はこれらの「プリベークを入れてください。実行可能ファイルの近くのディレクトリにマップしますか?プロジェクトをコンパイルする前に/ binディレクトリ内にディレクトリを作成するにはどうすればよいですか?
  • どのようにして、ゲームにインストールされている「プリベーキング」レベルの削除を排除しますか?
    (これはもう必要ありません)
  • また、ユーザーカスタム作成レベルはどこに保存されますか?私はそれがStorageDeviceで行われるべきだと考えています。しかし、ゲームの後にディレクトリを作成する方法に関する最初の質問と結びついています。

任意のポインタを歓迎します!ありがとうございます

編集:Re:カスタムコンテンツプロセッサ。これは私が必要とするより複雑な方法です。でも私のゲームをxbox360にも展開する必要があるので、ストレージデバイスも使えますか?

答えて

3

あなたのレベルファイルを扱うためのカスタムコンテンツプロセッサを書くことができますが、それはおそらく過剰です。これには、レベルをユーザーが変更するのが困難な形式に「コンパイル」できるという利点があります。

プロジェクトに(コンテンツではなく)追加するだけで、プロパティで[出力ディレクトリにコピー - 常にコピーする]を指定できます。プロジェクトに新しいサブフォルダを作成してそこに配置します。これはコピー先のディレクトリになります。

プリベークされたレベルを削除するユーザーを許可しないようにするには、Windowsで許可する方法はありません。ユーザーがいくつかの期待されるファイルを削除した場合、コードが失敗する原因となるコードをチェックすることができます。

新しいディレクトリを作成するには、StorageDevice.OpenContainer()。Pathを使用してルートパスを取得し、Directory.CreateDirectoryを使用します。これはPCとXBoxで動作します。

+0

カスタムコンテンツプロセッサを作成することはそれほど難しくありません。また、読み込みのフォーマットがはるかに単純であるため、ロード時にゲームをスピードアップしながら、適切なプラクティスを強制して、また、事実の後にX360に移植する方がずっと簡単です。要するに、やや多くの努力が必要であり、潜在的に多くのバグを防ぎ、それを受け入れる方法です。:) – jfclavette

+0

@jfclavette:これはおそらくこのタスクのために過労ですが、それは間違いなく良い学習経験になるでしょう - XNAはコンテンツパイプラインに非常に重点を置いており、それを理解する良い方法はありません。 – Michael

+0

"レベルが"コンテンツ "の下で公開されている限り、Game.Content.RootDirectoryを使用してファイルを検索し、"。 これは機能しません。なぜなら、コンテンツの下に "levels"ディレクトリを含めると、なんらかの理由で/ binディレクトリにコピーされないからです。コンテンツ/レベルフォルダ内の "level1.txt"はコンパイルされないため、ビジュアルスタジオに含めることはできません。 – drozzy

0

実行可能ファイルには、「プリベーク済み」のレベルを置く必要があります。私はVSを使用しないので、それを行う方法を教えることはできません。

実際にユーザーがレベルを削除しないようにする方法はありませんが、ハッシュを使用して変更されていないことを確認することもできます(ユーザーは実行可能ファイルを変更して回避できますが、 )。

C:\Documents and Settings\User\MyGame\levels\level.txtのように、カスタムレベルをユーザーのフォルダに配置する必要があります。

関連する問題