Tetris Inventory – это прототип игровой системы инвентаря, где предметы занимают разное количество ячеек и могут иметь собственную форму/ориентацию.
Проект был выполнен в формате первой командной практики: мы одновременно осваивали техническую часть разработки, командное взаимодействие и инструменты совместной работы.
Цели проекта:
- реализовать рабочий и понятный UX инвентаря;
- научиться проектировать систему из нескольких модулей;
- отработать командные процессы (Git, Trello, распределение задач, code review).
- Unity
- C#
- UI Toolkit (UXML/USS)
- MVP-подход для UI и логики (Model / View / Presenter)
- Модульная структура runtime-части
- Конфигурируемые данные предметов через
ScriptableObject - Система drag-and-drop для взаимодействия с предметами
- Git + GitHub для контроля версий
- Trello для постановки и трекинга задач
- Pull Request-подход при интеграции изменений
На текущем этапе проект поддерживает:
- сеточный инвентарь с размещением предметов разных размеров;
- поворот предметов в инвентаре;
- перетаскивание предметов (drag-and-drop);
- удаление предметов через отдельную зону удаления;
- генерацию/создание предметов по заданным правилам;
- хранилище/дополнительную область (stash);
- отображение всплывающих окон и подсказок (popup/tooltip);
- базовое аудио-сопровождение действий интерфейса.
Проект разделён на несколько крупных слоёв:
-
Core
Базовые контракты, entry-point и хранение моделей. -
Inventory Domain
Логика инвентаря: модель предмета, сетка, ячейки, генерация, поворот, drag-and-drop, хранилище. -
UI Layer (UI Toolkit)
UXML/USS-документы и визуальные компоненты для экранов, кнопок, попапов и вспомогательных элементов. -
Systems/Services
Сервисы верхнего уровня (например, аудио), контент-менеджмент и связующая логика.
- Логику легче тестировать и расширять отдельно от визуальной части.
- Новые фичи можно внедрять модульно, без переписывания всего проекта.
- Команде проще параллельно работать над разными подсистемами.
Проект выполнялся командой из трёх человек как первый общий опыт разработки в группе.
- формировали backlog и разбивали задачи на небольшие шаги;
- вели задачи на доске Trello;
- работали в ветках Git (feature/fix/chore), чтобы не ломать основную ветку;
- интегрировали изменения через Pull Request;
- обсуждали спорные решения перед слиянием.
master— стабильная версия;- feature-ветки под отдельные задачи;
- PR + ревью + merge в основную ветку;
- короткие итерации с частой синхронизацией в команде.
Ниже представлена демонстрация работы системы инвентаря:
GIF демонстрирует:
- Перетаскивание предметов- Поворот на 90°
- Проверку валидности размещения
- Обработку пересечений
- расширить правила размещения предметов (сложные формы, исключения, ограничения);
- добавить сохранение/загрузку состояния инвентаря;
- улучшить UX (анимации, подсветки конфликтов, превью позиции);
- усилить обработку ошибок и пользовательские подсказки;
- добавить автоматические тесты ключевой логики;
- улучшить производительность и устойчивость при большом количестве предметов.
