だから私は自分のクラスがどれだけモノリシックになるかを考えていました。たとえば、Character
クラスのJump
メソッドでは、サウンドエフェクトオブジェクトへの参照があり、それを再生できます。それ自体は問題ありませんが、物理学、アニメーション、衝突などを考慮に入れると、Jumpメソッドは巨大になり、Character
クラスには多くの異なるものへの多くの依存関係があります。それでも、これで問題ない可能性があります。ただし、キャラクターがジャンプしたときにサウンドを再生したくない場合はどうすればよいでしょうか。さて、コードのごちゃごちゃした混乱の中から特定のコード行を見つけてJump
、コメントアウトするか、何でもしなければなりません。
それで..と思っていました。
代わりに、ある種のAudioSystem
クラスがあり、他のクラスに関心のあるランダムなイベントをサブスクライブした場合はどうなるでしょうか。たとえば、クラスにはメソッド内のクラス内で発生Character
するJumped
イベント(静的だと思います)があるかもしれませんCharacter
。次に、Character
クラスは、キャラクターがジャンプしたときに再生される小さな音響効果について何も知りません。これAudioSystem
は、静的イベントを使用してゲーム内で発生する特定のイベントでサウンドエフェクトをフックするためにプログラマが後退できる巨大なクラスです。その後、それはのようなサブクラスにして分離することができ大きすぎるなった場合はEffectsAudioSystem
、BackgroundAudioSystem
、AmbientAudioSystem
、エトセトラ。
次に、ゲームのオプションで、これらの種類のサウンドを有効または無効にするチェックボックスを設定できます。実行する必要があるのは、単純な単一のブールフラグでその1つのシステムを無効にすることだけです。このシステムの考え方は、物理学、アニメーションなどにも拡張でき、プレーヤーのアクションから生じるゲームの応答のほとんどが、これらの精巧で分離されたシステムを通じて接続されます。
さて、私の質問は少しあいまいかもしれませんが、この種のことはどのように聞こえますか?このようなシステムについては、これまであまり話を聞いたことがありません。これは、今のところコーディングがまったく行われていないので、頭の中で問題になっているので、おそらく「理論的には良いが実際にはない」種類の取引の1つでしょう。この種のシステムは、より大きなゲームで機能するのでしょうか、それとも最終的に故障して、元のシステムよりもさらにスパゲッティの混乱になるのでしょうか?