1

ゲーム開発者は通常、cocos2d で作業するときに MVC を使用しますか? それとも、そのパラダイムはフレームワークにうまく適合しないのでしょうか?

私は Rails 出身で、MVC について Apple がネイティブで行う方法とは大きく異なる理解を持っていますが、通常 iOS 開発者は cocos2d のようなフレームワークでも MVC パラダイムで作業しようとしているのだろうかと思っています...また、MVC を使用するとどのように見えるか、どのような利点が見られるかについても知りたいですか?

私が現在取り組んでいるゲームは、よりモジュール的に設計されており、それを使って MVC を実行する方法を想像しようとしてきましたが、最終的にはより多くのファイル、より多くのコードが必要になるだけのようです。本当に価値があります...このトピックに関するコミュニティからのフィードバックをお待ちしております。

4

1 に答える 1

3

最初の質問に答えるには: いいえ。背景情報については、このスレッドを参照してください

MVC は、ビジネス ロジック (モデル) から切り離したいユーザー入力駆動型プログラムに適した設計です。2 人が直接会話するのを避けるために、コントローラーを 2 人の仲介者として導入します。

ただし、ゲームでは事情が異なります。ほとんどの場合、ゲームはユーザーの入力を待っているわけではありません。また、モデルは多くの場合軽量 (いくつかの変数) ですが、多くの場合、システム全体に関する知識が必要です (他のオブジェクトとの衝突、AI による他のオブジェクトの動作のチェック)。

ゲームは、ユーザーの入力に関係なく、フレームごとにゲームの状態 (モデル) を前進させ続け、フレームごとにビューをレンダリングし続けます。ユーザー入力は、特にアクション ゲームでは、イベントの継続的なストリームに似ています。そのため、ほとんどのゲーム開発者は、少なくとも 2 つのレイヤーの間に明確な境界を定義しようとしますが、通常、モデルとビューは密接に結合されていることがよくあります。(厳密な) MVC はかなりのオーバーヘッドを追加する可能性があるため、これはパフォーマンスへの妥協でもあります。

MVC の代わりに、ゲームでより一般的に使用されるデザイン パターンは、コンポーネント ベースの開発です。多くの場合、ゲーム オブジェクトは大部分が似ていますが、動作、能力、武器、ヒットポイント、免疫、速度などに微妙な違いがある場合があります。ハードコーディングする代わりに、この種の動作はコンポーネントとしてゲーム オブジェクトに追加され、オブジェクト自体に作用します。これは cocos2d のアクションにいくらか似ていますが、通常、コンポーネントは常にアクティブであり、無効化/一時停止することができ、アニメーションだけでなくゲーム ロジックにも使用されるという点で異なります (つまり、シールド コンポーネントを介して受けるダメージを減らします)。

于 2012-09-20T22:05:25.657 に答える