2016-09-29 3 views
0

Я работаю над системой инвентаря для моей маленькой 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 ~

currently

That's, как я думал об этом, но это, кажется, дерьмо.

Как вы рекомендуете создавать такую ​​простую, но легко обновляемую и поддерживаемую систему? Лучше ли отличать Itemtypes (и с этим Inventories) за перечисление или даже просто создавать собственный класс для него или создавать интерфейс для таких вещей, как Consumable, Equipable и т. Д.?

ответ

0

это трудная тема, потому что это зависит от вашей игры или дизайна вашего инвентаря

Я могу предложить:

вы можете хранить все ваши детали как JSON в SQLite [{item1: {имя: х, атр: х, атк: 5, аги: -3, LBL: оборудование}, ... и т.д., и т.д. ...}]

с, что вы можете иметь более гибкую структуру для каждого элемента, даже если вы можете преобразовать каждый json-объект в определенный объект Java с помощью GSON, если вы не хотите усложнять это, тогда у вас есть ограниченное количество слотов или, может быть, одна большая инвентарная сетка, где вы можете разместить все разные предметы

+0

Ну, я прошу совета по проектированию инвентаря. И думать о хранении немного рано (я использую hibernate btw), если у меня нет и как будет выглядеть Item.Кроме того, ваш пример работает только для «фиксированных элементов», таких как Equips, но что у них есть в стеке (хотя я могу видеть, как я буду делать это с этим JSON)? Я не приму твое последнее предложение, с чем я не усложню себя? Если вы говорите о разных Запасах: я не вижу, как это будет большой проблемой, просто вопрос, как правильно их сделать, - вопрос. – EsoMoa

+0

правильно зависит от того, что вы хотите для своей игры, или как вы хотите, чтобы игрок использовал инвентарь, если объект ориентирован, то каждый объект может иметь разные свойства: имя, количество, описание, атрибут, тип, если вы используете спящий режим, тогда я предположим, что вы используете патчи DAO, и я предлагаю добавить функции, чтобы знать количество и тип элемента, я могу думать, что ваша проблема более ориентирована на базу данных, чем игра –

Смежные вопросы