2011-09-14 3 views
1

私は2DベースのRPGゲームを作成しています。ゲームボーイのポケモンのそれに似ています。基本的に、私のゲームマップは、xサイズの地形で作成されます。また、風景オブジェクト(樹木、低木など)や難しいもの(標識、ドア、アイテムなど)もあります。現在、これらのオブジェクトをハードにコーディングしています。問題は、シーンオブジェクト、地形タイルなどを追加するたびに、そのクラスを追加したり、別のデータを指定したりする必要があります。基本的に、私は何か簡単なことをするためにたくさんの繰り返し作業をしなければならないように感じます。ハードコードするか、外部のXMLファイルに残す方が良いですか?

私は後で、私のプロジェクトは管理できなくなる恐れがあります。新しい地形、風景、または 'GridElement'というクラスから継承した他のオブジェクトの各部分。

したがって、タイルや風景などの情報をすべて外部XMLファイルに入れて実行時に読み込む方がよいでしょうか、またはこれらの要素をハードコーディングし続けますか?

主な問題点は、これらの要素のほとんどに、特定の機能を適用する必要があることです。彼らの中には、彼らが歩いているときにイベントを呼び出す必要があるものもあります。一部の要素も動的です(タイルは水、花などの数秒ごとに変更されます)。

ありがとうございました!

乾杯!

+0

@Mike Kwan、編集に感謝します。私は間違いに気付かなかった: – FreeSnow

答えて

2

、あなたが行動を表現したい場合にのみ、新しいクラスを作成し、で、このクラスのパラメータを制御する必要がありますあなたのデータ。

あなたのケースでは、あなたの花、低木、壁などの風景クラスが1つ必要になるでしょう。このクラスのオブジェクトをカスタマイズするには、関数を呼び出してビットマップ(ビットマップ)、アニメーション速度を設定します。このデータがどこから来るのか、ハードコーディングされるのか、オブジェクトファクトリから来るのか、xmlから読み込むのは本当に重要ではありません。

対話可能なオブジェクトにアクセスするときは、追加のクラスが必要ですが、特定のクラスよりも汎用的にするようにしてください。したがって、ユーザーがオブジェクトとやりとりするときにメッセージを表示する場合は、符号クラスではなく、汎用の対話クラスを使用します。このクラスは、看板、本棚、不思議な見た目のアイテムに使用できます。

特別イベントでは、いくつかの選択肢があります。最も簡単なのは、ジェネリックイベントクラスを作成することです。これにより、新しいアクタを画面上に表示したり、オブジェクトをプレーヤーに与えるように指示できます。代わりに、ユーザーが特定のトリガーに当たったときに呼び出されるオブジェクトに関数ポインタ/デリゲートを渡すこともできます(つまり、四角形にステップインしてモンスターを倒す)。最後に、ポケモンやそれに類するゲームの中でもっとも複雑なものの中で最も複雑ですが、独自のスクリプト言語を作成/使用することができます。

+0

だから私はあなたが言っていることを理解していると思います。ですから、タイルやシーンオブジェクトなどにXMLを使用し、すべてのインタラクションイベント、アニメーションなどを処理するスクリプト言語(たとえばLua)を使用することをお勧めしますか?私はこの考えが本当に好きです。私はプロジェクトの後半にLuaを実装しようとしていましたが、あなたのアイデアはまだ本当に好きです。 – FreeSnow

+0

あなたが再利用可能なゲームエンジンを作成している場合、私はXMLや何らかのファイル形式を使用しますが、これを早めに行う必要はありません!最初に良いゲームコアを持っていることを確認してください。それは楽しいですか、それは拡張可能な価値がありますか?あなたがこれを構築している間、私はデータをハードコードするだけです。このオブジェクト作成コードをすべて抽象化すれば(オブジェクトファクトリなど)、後で簡単に取り除くことができ、XMLパーサーで後で置き換えることができます。 – DanDan

+0

これの主な難点は、マップエディタが組み込まれていることです。私は、新しいものを追加するなど、多くのことを可能にしたい。おそらく私はおそらく早く、まだ、しかしすぐにそのようなシステムを構築し始めるでしょう。そうすれば、時が来たら、それを扱うほうがはるかに簡単になります。私は先に進んで私のプログラムにLuaを紹介します。 – FreeSnow

2

データファイルにデータを格納し、それらのデータファイルを処理するコードを記述することをお勧めします。複数の理由があります.1つのことを暗示しました。この方法でデータを管理しやすくなりました(つまり、きれいに整理され、見つけやすくなります)。もう1つの重要な利点は、データを変更しやすくすることです。大きな違いを生む他の人と一緒に作業している場合でも、個別に作業している場合でも、コード自体ではなく、設定ファイルにあるすべてのゲームプレイ値を微調整する方が簡単です。

あなたの注意点は、別々の種類の要素に対して別々のクラスを用意し、それらのクラスをXMLで参照する必要があることを意味します。

<grid_element> 
    <class>GrassElement</class> 
    <image>dark_grass.png</image> 
    <xpos>10</xpos> 
    <ypos>10</ypos> 
</grid_element> 

ハードコードされたものからできるだけ離して、データファイルで実行します。例えば、呼び出されるさまざまなイベントをXMLで定義することができます緩いルールとして

<step_event>somethingOrOther</step_event> 
+0

これについての説明を得ることはできますか?私は答えを探しているだけではない、理由が必要だ。申し訳ありません:) – FreeSnow

+0

私はいくつかの理由を追加しました。もっと理由がありますが、それは私の頭の上から最も重要なものです。 – jhocking

関連する問題