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