Skip to content

Valyutik/Tetris-Inventory

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

359 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Tetris Inventory – командный учебный проект

🇬🇧 English Version

Описание проекта

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);
  • базовое аудио-сопровождение действий интерфейса.

Обзор архитектуры

Проект разделён на несколько крупных слоёв:

  1. Core
    Базовые контракты, entry-point и хранение моделей.

  2. Inventory Domain
    Логика инвентаря: модель предмета, сетка, ячейки, генерация, поворот, drag-and-drop, хранилище.

  3. UI Layer (UI Toolkit)
    UXML/USS-документы и визуальные компоненты для экранов, кнопок, попапов и вспомогательных элементов.

  4. Systems/Services
    Сервисы верхнего уровня (например, аудио), контент-менеджмент и связующая логика.

Почему это важно

  • Логику легче тестировать и расширять отдельно от визуальной части.
  • Новые фичи можно внедрять модульно, без переписывания всего проекта.
  • Команде проще параллельно работать над разными подсистемами.

Команда и рабочий процесс

Проект выполнялся командой из трёх человек как первый общий опыт разработки в группе.

Как организовывали работу

  • формировали backlog и разбивали задачи на небольшие шаги;
  • вели задачи на доске Trello;
  • работали в ветках Git (feature/fix/chore), чтобы не ломать основную ветку;
  • интегрировали изменения через Pull Request;
  • обсуждали спорные решения перед слиянием.

Git Flow (упрощённо для учебного проекта)

  • master — стабильная версия;
  • feature-ветки под отдельные задачи;
  • PR + ревью + merge в основную ветку;
  • короткие итерации с частой синхронизацией в команде.

Демонстрация

Ниже представлена демонстрация работы системы инвентаря:

Видео геймплея

GIF демонстрирует:

  • Перетаскивание предметов- Поворот на 90°
  • Проверку валидности размещения
  • Обработку пересечений

Возможные улучшения

  • расширить правила размещения предметов (сложные формы, исключения, ограничения);
  • добавить сохранение/загрузку состояния инвентаря;
  • улучшить UX (анимации, подсветки конфликтов, превью позиции);
  • усилить обработку ошибок и пользовательские подсказки;
  • добавить автоматические тесты ключевой логики;
  • улучшить производительность и устойчивость при большом количестве предметов.

About

Tetris-style inventory system inspired by Resident Evil, built in Unity with drag & drop and smart grid validation

Topics

Resources

Stars

Watchers

Forks

Contributors

Languages