Я работаю над системой инвентаря для моей маленькой RPG-игры. Это предназначено для многопользовательских игр. До сих пор у меня рабочая программа, но я довольно неудовлетворен ею и хочу начать с новой. Я говорю главным образом о модели, а не о представлении.Структура системы инвентаризации игр?
Предполагается, что Пользователь имеет несколько инвентарей. Различные запасы для напитков, другие для некоторых специальных предметов, только для граффити и т. Д.
Инвентарь может содержать до n элементов, представленных в слотах. X, y не является фиксированным и может быть изменен пользователем в зависимости от его устройства.
Товар может быть уложен или нет. Если он не может складываться, он может быть оборудован.
предназначены для различных устройств (Mobile/Desktop)
Моя проблема была в основном, что он стал слишком зависим друг от друга. У меня был класс Item и ItemStack. Если Item является штабелируемым, Item будет добавлен в itemstack с суммой. Оба унаследованы от AbstractItem - хотя Itemstack не является Item, но я не знал, как его добавить. Это привело к тому, что мне пришлось добавлять методы в абстрактном классе/интерфейсе, чтобы иметь возможность нормально работать с обоими классами. Подобно добавлению currentCount() в абстрактный класс, который необходим только для ItemStack, но Item также имеет его, хотя он ему никогда не понадобится. Кроме того, Inventory хранит InventorySlot, который имеет только один ItemStack или Item и переменную для позиции этого слота. Различные инвентаризации были бы реализованы с простой проверкой Itemtype (enum).
View будет просто искать инвентарь. Проверяется не - пустые слоты и читает текстуры в классе Item - или текстуры в пункте в ItemStack ~
That's, как я думал об этом, но это, кажется, дерьмо.
Как вы рекомендуете создавать такую простую, но легко обновляемую и поддерживаемую систему? Лучше ли отличать Itemtypes (и с этим Inventories) за перечисление или даже просто создавать собственный класс для него или создавать интерфейс для таких вещей, как Consumable, Equipable и т. Д.?
Ну, я прошу совета по проектированию инвентаря. И думать о хранении немного рано (я использую hibernate btw), если у меня нет и как будет выглядеть Item.Кроме того, ваш пример работает только для «фиксированных элементов», таких как Equips, но что у них есть в стеке (хотя я могу видеть, как я буду делать это с этим JSON)? Я не приму твое последнее предложение, с чем я не усложню себя? Если вы говорите о разных Запасах: я не вижу, как это будет большой проблемой, просто вопрос, как правильно их сделать, - вопрос. – EsoMoa
правильно зависит от того, что вы хотите для своей игры, или как вы хотите, чтобы игрок использовал инвентарь, если объект ориентирован, то каждый объект может иметь разные свойства: имя, количество, описание, атрибут, тип, если вы используете спящий режим, тогда я предположим, что вы используете патчи DAO, и я предлагаю добавить функции, чтобы знать количество и тип элемента, я могу думать, что ваша проблема более ориентирована на базу данных, чем игра –