KDOC 537: スタックできる/できないアイテムが混在する場合を設計する

この文書のステータス

  • 作成
    • 2026-03-15 貴島
  • レビュー
    • 2026-03-15 貴島

概要

ECSを使ったゲーム開発において、アイテムをどう設計するか考える。

要件はこうだ。

  • 武器や防具はスタック(個数をまとめる)できない。武器や防具は同じ種類のものでもそれぞれパラメータが異なる設定にしているため、まとめられない
  • 拾ったときに、スタック可能アイテムであれば自動的にまとめられて個数が増える
  • アイテムの状態には、フィールド上に存在、インベントリ内があり、それぞれのアクション(拾う、捨てる、投げる、使う、売買する…)で変化する
--インベントリ内--

- 薬草 x4
- 鉄の剣
  - 品質: C
  - 攻撃力: 4
- 鉄の剣
  - 品質: A
  - 攻撃力: 6

最初、 Stackable のようなコンポーネントを定義して、スタックできるものだけに付与するのがきれいだと考えた。しかしそうするとアイテム関連の処理すべてで持っているか持ってないかで分岐を書かないといけないことに気づいた。なので、Stackableに上限を設定して、1つしか持てないアイテムには上限を1にした。これによって、条件分岐なく書いた。コンポーネントの名前と一致しなくなりリネームが必要だが、シンプルに書ける。

スタックできるアイテムとできないアイテムのふるまいが変わることはほとんどない。単にインベントリでの表記の問題だった。

関連

なし。