私は、すべてのクリーチャーが3回の攻撃を行うことができ、すべての攻撃が同時に多くの効果をもたらすことができるゲームを作成しています。CoreDataを使用してすべてのデータを保持しています。
私の問題の基本的な例は、次の3つのエンティティで確認できます。
Creature
Attack
:エンティティとの多対多の関係が含まれていますAttack
Effect
:エンティティとの多対多の関係が含まれていますEffect
:効果の詳細(ダメージ、混乱、毒など)が含まれています
Attack
したがって、最初に、一意のエンティティごとに3つの一意のエンティティを用意する必要がありCreature
ます。次にEffect
、各攻撃にエンティティを追加する必要があります。私の問題は、それぞれの効果が異なる値を持つことができるということですが、それは基本的に他のすべてのクリーチャーと同じ効果です。それはまだ「ダメージ」ですが、ダメージの値は各クリーチャーとは異なります。
私がこれを行うことを考えた方法は2つだけです。
Effect
それぞれAttack
に固有のものを作成しますCreature
。これにより、エンティティ内にエフェクト値を保存できます。これの欠点は、データが大きくなる可能性があることです。3x3x400=Effect
それぞれ単一の関係を持つためにのみ存在する3,600のエンティティ。Effect
タイプ(損傷、混乱など)ごとに1つ作成し、エンティティでTransformableデータ型を使用します。ここには、各エンティティ識別子(必要なときに見つけられるように)とその効果の値をAttack
含む辞書の配列を格納します。Effect
これは自動的に簡単に処理でき、オブジェクトNSCoding
の量をEntity
3,600からおそらく20に減らすことができます。
Effect
&エンティティにアクセスすることはめったになく(Attack
クリーチャーが戦闘中の場合のみ)、それらの内部を検索する必要がないため、パフォーマンスへの顕著な影響はないと思います。また、CoreDataに配列や辞書を保存しないことを提案している多くのWebサイトを読みました。これを行う他の方法はありますか?そうでない場合は、どのオプションが良いでしょうか?
PS:わかりにくいタイトルで申し訳ありませんが、何を入れるべきかわかりませんでした。