1

The Sims の変種としか言いようのない Java でゲームを開発しています。

ゲームのメイン インターフェイスはレベルで構成され、マップ上に配置できる多種多様な家具があります。私の問題は、家具の各アイテムにプロパティを割り当てることができるシステムを構築する方法を考えることはできますが、完成までの長い道のりを進む前に、正しい方法でそれを行うことを確認したいということです. たとえば、"sofa" という識別子を持つオブジェクトを参照した場合、家具オブジェクトのメンバーは、使用可能なすべてのオブジェクトを検索し、一致する識別子を持つオブジェクトを見つけることでアクセスできます。

私の方法は、家具の各アイテムの基本家具クラスからのインスタンスを含む非常に大きな .java ファイルを作成することです。それぞれに識別子と、画像、位置、回転など、割り当てられたすべての異なるプロパティと独自それらが提供するさまざまな機能ごとに固有のコード (例: 座る、寝る)。

これらのオブジェクトをテキスト ファイルに保存/格納するには、識別子の名前をテキスト ファイルの文字列配列に格納するだけで、読み込み時に、識別子が指すオブジェクトをインスタンス化することでオブジェクトを作成できます。

これらの方法のほとんどを使用するのは正しいでしょうか、それともより良い方法がありますか? 私が書いたことを理解するのが難しいと感じた場合 (そして、私はそれを明確に書くのに苦労しました)、より簡単な質問は次のようになります。

The Sims の家具アイテムは、利用可能な膨大な量と、それらを配置 (および保管/保存) できるさまざまなバリエーション/ローテーションに関してどのように管理されていますか?

4

2 に答える 2

0

Component-Entity-Systemは、調査するのに適している場合があります。それは基本的にあなたが説明しているものです。エンティティの大規模なコレクションがあり、各エンティティにはコンポーネントのコレクションがあり、特定のコンポーネントをどう処理するかを知っているシステムがあります。

EG: 家具は「椅子」という名前のエンティティです。多くのコンポーネントがあり、そのうちの 1 つが "Renderable" です。Renderable.render()そして、ゲーム ループは、メソッドを呼び出す「レンダラー」システムにすべてのレンダリング可能なものを渡します。

これはあまりオブジェクト指向ではありませんが、オブジェクト階層が爆発するため、このようなゲームをオブジェクト指向の方法で設計するのは難しいと思います。すべてのものには、他のすべてのものと共通するものがあります。「Unit」や「Thing」などの一般的なクラスになってしまいますが、これもオブジェクト指向ではありません。

于 2013-06-27T19:03:29.173 に答える