3

私は現在、一種のテーブル アンド カード ゲームである Flex ゲームを開発しています。このエンティティを使用して他のゲームを開発することを考えて、ゲームから、さらには他のゲーム エンティティから切り離されたエンティティを作成することを選択しました。その結果、現在、ゲーム エンティティ間の通信にイベントを使用しています。

私の場合、ゲーム エンティティとは、たとえば、カードを受け取ることができるプレイヤーの手のコンポーネントを指します。または、カスタムの要求および処理イベントによってカードを別の未知のコンポーネントに送信します。たとえば、カード ホルダー コンポーネントのデッキにも同じことが起こります。

このアプローチは、最初は優れたデザイナーのように見えましたが、しばらくすると、ゲーム コントローラー クラスに多くのイベント ハンドラー関数が含まれるようになりました。

私の現在のアイデアは、イベントを処理し、コントローラー コードをクリーニングするために、ゲーム コントローラーと組み合わせたゲーム イベント マネージャーを作成することです。

最後に、上で示した私のデザインの決定について確信が持てないので、この種のゲームではどのコミュニケーション デザインが示されるかを皆さんに教えていただきたいと思います。

この質問の回答が他の人の心にも役立つことを願っています。前もって感謝します。

4

1 に答える 1

0

複数のコントローラ クラスに分割できますか? タブ付きアプリケーションでは、タブごとに別のコントローラーを使用します。アプリケーションを賢明な部分に分割することは、カットアンドドライではありませんが、非常に可能です。

1つの提案は次のとおりです。

  • MainController - アプリケーションの起動、メニュー、スプラッシュ スクリーンなど、ゲームの「シェル」を処理します。

  • GameController - ターンの実行、勝利条件のチェック、スコアの更新など、状態の変更とユーザー ベースのイベントを処理します。

  • EntityController - ゲーム エンティティ (カード、デッキ、ハンドなど) 間の通信。

あなたのゲームに関するわずかな情報から判断を下すのは難しいですが、理解していただければ幸いです。

また、定型的なイベント処理コードを削減したい場合は、フレームワークを使用するという考えを支持します。robotlegs について良いことを聞いたことがあり、いくつかのプロジェクトで個人的に Swiz を使用しました。Swiz には、目立たない優れたイベント メディエーションswizframework.orgがあります。

于 2011-11-13T16:15:27.893 に答える