7
ゲームにおける描画とロジックの分離
私は今、ゲーム開発をいじり始めている開発者です。私は.Netの男なので、XNAをいじり、iPhone用のCocos2dで遊んでいます。私の質問は本当にもっと一般的です。 簡単なPongゲームを作成しているとしましょう。私が持っていると思いますBallクラスとPaddleクラスを。ビジネスの世界の開発から来た私の最初の本能は、これらのクラスのいずれにも描画または入力処理コードがないことです。 //pseudo code class Ball { Vector2D position; Vector2D velocity; Color color; void Move(){} } ballクラスでは、入力を処理したり、描画を処理したりするものはありません。次に、別のクラス、私のGameクラス、またはScene.m(Cocos2dの)私がボールを新しくし、ゲームループ中に必要に応じてボールを操作します。 ただし、XNAとCocos2dの両方の多くのチュートリアルで、次のようなパターンが見られます。 //pseudo code class Ball : SomeUpdatableComponent { Vector2D position; Vector2D velocity; Color color; void Update(){} void Draw(){} void HandleInput(){} } 私の質問は、これは正しいですか?これは、人々がゲーム開発で使用するパターンですか?Ballクラスにすべてをやらせることは、私が慣れ親しんだことすべてに何らかの形で反します。さらに、この2番目の例では、Ball移動方法がわかっているので、Paddle?のBall知識が必要Paddleですか?私の最初の例では、Gameクラスは、両方への参照であろうBallとPaddle、その後、いくつかにそれらのオフの両方を出荷CollisionDetectionマネージャか何かが、各個々のコンポーネントは、それ自体で、すべてをしなければどのように私は、さまざまなコンポーネントの複雑さに対処するのですか?(私は私が理にかなっていると思います...)