2

これは C# の質問です。

XML ではなく *.cs ファイルにデータ (たとえば、構成ファイルなど) を保存しようとした人がいたら、私はたださまよいましたか?

私は XML が大嫌いです。データが必要になるたびにhtmlのような構造を解析するという全体的な考えはばかげているようです。

XML の軽量な代替手段 (YAML など) はありますか? 私の場合、実際には (ゲーム) レベルのデータを格納する必要があります。ここでは、さまざまなオブジェクト、地形の種類などが多数あります... フラット ファイルに格納して、後で読み取ることができるようにします。

Levelクラスをシリアル化できると思いますが、たとえば、データ ファイルを任意のテキスト エディターで編集可能にしたいと考えています。

どんな助けでも大歓迎です、ありがとう!

PS: .cs ファイルに関して、エディターを使用してゲーム内で新しいレベルを作成 (および保存) する機能が必要であることを忘れていました。

4

13 に答える 13

3

私は何年もゲーム業界で働いてきましたが、最高のツール サポートがある XML を使用しています。設定には Yaml または Ini ファイルが使用されますが、ゲーム データは XML で保存されます。もちろん、通常、ゲームを出荷するために XML をバイナリ コードに変換するツールがありますが、開発中やカスタム ゲーム ツールの開発中は、XML が非常に役に立ちます。

場合によっては、XML がニーズに適したハンマーとなることがあります。技術が一部の分野で最適ではないという理由だけで技術に偏見を持たないでください (Ajax(トランスポート) とデータ定義など)。

于 2009-04-18T05:44:18.160 に答える
2

なぜ(xml)ではないのですか?

特に、ファイルにさまざまな種類の情報を保存する必要があることを考えると、XML を使用しないケースは見当たりません。

つまり、.cs ファイルのアプローチでは、ファイル内のデータを探すのではなく、必要なデータを初期化するコードを読み込むようにアプリケーション コードを構造化することをお勧めします。ファイルにデータを検索する代わりに、初期化クラスをロードしているため、明確なパターン (コンパイル + ロード) が得られます。構成をできるだけ単純にするために、できる限り追加してください。

于 2009-04-18T06:11:07.300 に答える
1

iniファイル?

[section]
key=value

あなたの質問をもう少し読んで考えてみると、XML はゲーム業界では非常に標準的で、構造化されており、子供をサポートし、任意のテキスト エディターで手動で編集できます。

XML ファイルを使用するいくつかのゲームが思い浮かびます。

ワールド オブ ウォークラフト
クライシス
コマンド & コンカー 3

于 2009-04-18T05:31:49.390 に答える
1

構成ファイルには JSON が気に入っています。驚くほど多用途です。

手で編集するのも、解析と生成するのも簡単で (MS とサード パーティの両方の .NET 用の強力なライブラリを含む)、非常に強力です。優れた基本的なデータ型を備えた一種の XML です。

于 2009-06-04T13:19:30.687 に答える
1

データが必要になるたびにhtmlのような構造を解析するという全体的な考えはばかげているようです。

XML や YAML を使用しない場合は、独自のパーサーとバリデーターを作成する必要があり、愚か者が支配する世界に足を踏み入れたことになります。XML は厄介なものですが、XML を操作するためのツールのエコシステムがなければ、さらに悪いことになります。

于 2009-04-18T08:22:19.043 に答える
0

.NET構成システムを使用する場合は、XML解析が自動的に行われます。方法:ConfigurationSectionを使用してカスタム構成セクションを作成するを参照してください。ASP.NETセクションにありますが、すべての.NETコードに適用できます。

于 2009-04-19T15:04:10.647 に答える
0

技術的には、XMLを解析する必要はありません。データモデルを作成してから、XMLにシリアル化およびXMLから逆シリアル化します。TreeViewまたはListViewでデータモデル内の各アイテム/オブジェクトを表示し、PropertyEditorを使用して選択したオブジェクトのプロパティを編集することにより、VisualStudioでデータモデル用のエディターを構築することも非常に簡単です。OpenFileDialogとSaveFileDialogを使用して、ユーザーがXMLファイルとXmlSerializerを選択してデータモデルをロードおよび保存できるようにします。本当に痛みがないことを保証します!:-)

于 2009-06-28T17:12:25.600 に答える
0

以前に聞いたことがあるならドンノですが、この YAML のことを確認する必要があります。それは完全にクールですits own homepage

于 2009-04-18T05:39:57.267 に答える
0

私はゲーム業界で働いており、あなたが説明したことを行うために XML をほぼ独占的に使用しています。
理由は次のとおり
です。 1. よく理解されており、標準である
2. ライブラリに関して優れたサポートを提供している
3. 検証可能 - これはデータ エディタを作成する際に不可欠である
4. 構造化
されている 5. 人間が判読できるため、簡単に読めるデバッグ可能

値を取得するためだけにトロールしなければならないのが嫌だと言うという事実は、そこにある多くのxmlパーサーの1つを使用する必要があることを示唆しています. それは簡単でうまくいくと私を信じてください

人々は正当な理由でそれを使用します。はい、それには欠点、つまり冗長性などがありますが、利点が欠点をはるかに上回っていると信じてください!

于 2009-06-28T17:31:31.347 に答える
0

データがあまり複雑でも階層的でもない場合は、次のようなプロパティ ファイル形式で保存できます。

level.name=My Level
level.mapfile=Map.txt

一方、XML はシリアライゼーション (ISerializable または DataContract) を使用して C# で操作するのが非常に簡単です。解析コードを記述する必要はなく、フレームワークがすべてを行います。テキスト エディターで XML を編集するのは、それほど悪くはありません。

XML について少し妥協しても構わない場合は、NameValueCollectionを使用して構成項目を保持できます。その後、組み込みの .NET シリアル化を使用してこれをシリアル化できます。ファイルは XML になりますが、非常にシンプルで編集しやすい形式であり、手動の型変換/検証について心配する必要はありません。

于 2009-04-18T05:34:17.590 に答える
0

XML は、データをファイルに格納するための最良の選択肢であることが多いと考えられていましたが、LINQ for XML を使用すると、そのデータの読み取りと書き込みがはるかに簡単になります。

データが非常に複雑になった場合の別のオプションは、SQLite のようなものを使用することです。これは以前に使用したことがあり、シングル ユーザー アクセスの場合は非常に高速で使いやすいです。

于 2009-04-18T08:07:40.343 に答える
0

テキスト エディターで編集できるバイナリ形式が必要なようです。残念ながら (誰もが 16 進エディターを使いこなせるようになるまでは)、速度と編集の容易さの間には避けられないトレードオフがあります。

バイナリ形式は基本的に、状態をエンコードする最小のバイト セットの非常に高密度のパッキングであるため、高速で簡単に解析できます。一方、XML 形式は編集が容易です。考えられる解決策の 1 つは、両方を作成し、それらの間で変換する単純なプログラムを作成することです。パワー ユーザーは、このプログラムを使用してレベルを XML に変換し、編集してから元に戻すことができます。

このシナリオで XML を使用することになった場合は、複数のファイルを使用することをお勧めします。おそらくオブジェクトごとに 1 つです。複雑な世界を計画しているようですね。少し切り刻むのは理にかなっています。

于 2009-04-19T14:48:10.560 に答える