2

これまでに 2 つのゲームを作成しました。1 つは単純な 2D MMO で、もう 1 つはいくつかの機能を備えた 2D ポータル クローンです。

とにかく、これら 2 つのゲームのクラス デザインが少し異なることに気付きました。

MMO では、「Enemy」というクラスを作成します。このクラスは、 や などの引数を取りimageますattack_power

ポータルのようなゲームでは、「ボックス」、「壁」、「ドア」など、あらゆる種類のオブジェクトのクラスを作成します。次に、これらはposition引数としてのみ取り、内部でmovablephysicswithtrue/falseにフラグを立て、これらのオブジェクトに作用する update 関数を持ちます。

この種の問題に対する最善のアプローチは何ですか?どのくらい具体的にする必要がありますか? また、まったく別のものを使用する必要がありますか?

これらのゲームは Python と Javascript で作成しました。

4

2 に答える 2

4

それは、各クラスの目的、使用している言語、達成しようとしているもの、解決しようとしている特定の問題、およびその他の無数の要因によって異なります。すべての問題とすべてのプログラムは異なります。 .

OO 設計の SOLID 原則について調査することをお勧めします。これらの原則はルールというよりもガイドラインに似ていますが、それらを理解して実際の問題に適用できるようになると、「優れた」クラス設計を達成するのに役立つ可能性があります - http:/ /davesquared.net/2009/01/introduction-to-solid-principles-of-oo.html

問題を解決するための普遍的な正しい方法や間違った方法はないため、「最善の」アプローチはありません。また、途中で遭遇する可能性のある他の現実の問題を考慮に入れると、完璧な解決策が常に可能または望ましいとは限りません。

自問しようと思うかもしれない種類の質問は、次のようなものです。

  • 私のプログラムは実際に何をしますか? 多くの場合、プログラムの動作について考え始めると、最も有用なクラスが浮かび上がります。たとえば、移動可能な Box クラスは、単純な構造体として表現する方が簡単なところまでほとんど何もしないかもしれませんが、「移動」ロジックが満載で、その方法を知っている BoxMover クラスの用途を見つけることができます。ボックスを移動します。

  • プログラム内のさまざまなエンティティはどのように動作しますか? クラスの詳細についてはあまり言及していないため、それらが異なることを行うかどうかを知っているのはあなただけですが、ほとんど同じクラスが数十個ある場合(特に違いがデータに限定されている場合)、行った可能性があります遠すぎる。

  • クラスで実際に何をしたいですか?インターフェイスについて考えることが重要です。OO 設計の焦点は、クラスが格納するデータよりもクラスの使用方法にあります。(たとえば、広く信じられていることとは反対に、Square は Rectangle とまったく共通点がない場合があります)。同様に、インターフェイスに単一行の get-set 関数しかないクラスは、おそらくあなたの人生を楽にすることも、良い解決策を見つけることに近づくこともありません.

于 2012-05-29T16:57:30.513 に答える
3

この種の問題に対する最善のアプローチは何ですか?

一部のゲーム開発者は、OOP はゲームに使用するタイプのプログラミングではないと言うでしょう。グローバル データ ストアがあり、手続き型コードを使用してグローバル データ ストアにアクセスします。

この質問に本当に答えられるのはあなただけです。あなたのクラスはあなたのゲームプログラミングを助けましたか、それとも妨げましたか?

どのくらい具体的にする必要がありますか? また、まったく別のものを使用する必要がありますか?

ゲームをモデル化するために必要なだけ具体的にします。私の意見では、ゲームを終了したので、あなたは良いモデルを持っていました. 開発の経験が増えるにつれて、使用できるモデルが増えてきます。

于 2012-05-29T17:01:24.507 に答える