Skip to content

Latest commit

 

History

History
90 lines (61 loc) · 8.02 KB

README.md

File metadata and controls

90 lines (61 loc) · 8.02 KB

Буквопад: собери слово

Описание

"Буквопад: собери слово" — это браузерная игра, сочетающая элементы классических игр "Тетрис" и "Филворды". Игроку предстоит составлять слова из падающих букв, не допуская заполнения экрана, соревнуясь за место в глобальной таблице лидеров.

Основные особенности:

  • Бесконечный режим игры с прогрессивным увеличением сложности.
  • Возможность составления слов из более чем 70 000 комбинаций.
  • Нелинейная система начисления очков: множители зависят от длины слов, а ценность букв варьируется в зависимости от их редкости.
  • Усилители для помощи в сложных ситуациях, в том числе подсказка для автоматического сотставления слов, которые могут быть неизвестны игроку.

Игра разработана для пользователей всех возрастов и адаптирована для работы на платформе WebGL, обеспечивая доступ через любой современный браузер.

Публикация: Игра прошла модерацию сайта, максимально набрав рейтинг платформы 57 и оценку игроков 4.1, но в данный момент снята с пубкации в связи с низким онлайном игроков.


Геймплей

Посмотрите геймплей игры на YouTube:
Геймплей на YouTube


Техническая часть

Технологии

  • Unity: Движок для разработки игры с использованием 2D-компонентов.
  • C#: Основной язык программирования для разработки логики игры.
  • WebGL: Платформа для публикации игры в веб-браузере.
  • PluginYG: Интеграция с платформой Яндекс Игры для адаптации управления, работы таблицы лидеров, рекламы и других возможностей платформы.

Архитектура проекта

Игра собрана на единственной сцене.

Класс GameField выполняет следующие ключевые функции:

  • Управляет состоянием игрового поля, отслеживая количество объектов и букв на линиях.
  • Контролирует процесс игры, включая проверку переполнения поля и определение конца игры.
  • Определяет уровни опасности на поле в зависимости от количества объектов на линии.
  • При поражении очищает поле и отображает экран с результатами.

Класс LetterBoxSpawner отвечает за спаун объектов (букв) на игровом поле:

  • Спаунит объекты (буквы) на заранее определённых точках с заданной задержкой между появлением букв.
  • Использует Coroutine для последовательного появления объектов с задержкой между точками и между объектами на одной линии.
  • Контролирует процесс спауна, для равномерного распределения букв по полю.

Класс Trie реализует структуру данных префиксного дерева (Trie) для хранения и поиска слов в пространстве имен Dictionary.

Класс WordLine управляет сбором и обработкой букв, образующих слово на игровом поле.

Класс ScoreLine управляет подсчетом очков игрока, основываясь на собранных словах.

  • Каждой букве присваиваются очки, и их сумма умножается на множитель в зависимости от длины слова.
  • После вычисления очков обновляется текущий счет и максимальные очки, если они были побиты.
  • Также реализована плавная анимация изменения счета и интеграция с системами сохранения и лидерборда.

Класс LetterRandomizer отвечает за случайный выбор буквы с учетом заданных вероятностей для каждой буквы (с учетом ее редкости).

Класс SaveLevelScript Отвечает за сохранение и загрузку состояния уровня игры.

Класс LetterBox Отвечает за логику работы с объектами, представляющими буквы на игровом поле:

  • Обрабатывает создание и отображение случайных букв.
  • Управляет выбором буквы пользователем, изменяя её внешний вид при выборе и добавляя её в слово.

Класс DifficultManager Управляет сложностью игры, регулируя количество новых объектов на поле на основе текущего состояния игры.

Класс BonusLogic Механика усилителей и подсказок:

  • Замена части букв на игровом поле: Позволяет обновить определённое количество букв на поле, предоставляя новые варианты для составления слов.
  • Уничтожение букв на верхней половине поля: Удаляет буквы в верхней части игрового поля, предотвращая его переполнение и проигрыш.
  • Автоматический поиск наиболее длинного слова: Находит и выделяет самое длинное слово, доступное на текущем игровом поле, что помогает в сложных ситуациях или для максимизации очков.

Класс AdsManager управляет рекламой, используя события.

Класс ControllerUI управляет пользовательским интерфейсом игры и меню.

И другие классы предназначеные для анимации, звукового сопровождения и т.п.


Используемые ассеты

В проекте были использованы следующие ассеты из Unity Asset Store:

  1. Game Interface Sound Pack 2.0
    Набор звуковых эффектов для интерфейса.

  2. Casual Game Music Loops Vol. 2
    Коллекция музыкальных лупов для фона.

  3. RainbowArt 5000 Flat Buttons Pack
    Набор кнопок с плоским дизайном, использованных для создания интерфейса игры.