MVP моей мобильной 2D игры RabbitLabirint
Это логическая 2D игра, в которой игрок управляет кроликом. Игра разрабатывалась для платформы Android с использованием движка Unity.
Видео с демонстрацией игры
Цели игры
Игрок управляет кроликом, который должен:
- добраться до финиша
- не сталкиваться с врагами на пути к финишу
- собрать всю морковь
- использовать щит, чтобы безопасно пройти сквозь врага
Управление
После загрузки уровня при нажатии в любом месте карты, кроме объектов пользовательского интерфейса, будут нарисованы возможные пути, по которым игрок может пройти за 1 ход. После повторного щелчка игрок переместится к ближайшей точке, которая принадлежит набору точек возможного пути и наиболее близка к щелчку.
Настройки игры
Игра позволяет:
- регулировать громкость (общая, музыка, эффекты)
- удалять процесс прохождения
Уровни
Игра разбита на уровни. Каждый последующий уровень доступен после прохождения текущего. За прохождение уровня начисляются звезды от 1 до 3. Уровни можно перепроходить. Сохраняется только лучшее прохождение уровня: если игрок получил сначала 2 звезды, а при повторном прохождении — 1 звезду, то в сохранении остаются результат с 2 звездами. Если после этого игрок прошел уровень на все 3 звезды, то результат прохождения будет переписан и сохранится результат с 3 звездами.
Другое
Вся графика была нарисована мной. Звуки взяты из бесплатных источников. Автор музыки указан на главном экране и экране About.
О реализации
Конечные автоматы используются для управления игрой и игроком. У конечных автоматов игры есть 3 состояния: загрузка, игра и игра окончена. Конечный автомат игрока имеет 7 состояний.
Game Manager
Диспетчер игр (Game manager) — это конечный автомат, который будет переключаться между состояниями в соответствии с текущим состоянием игры. Он имеет 3 состояния:
- Loadout state — при запуске игры. Откроется главное меню и настройки.
- Game state — при переходе в это состояние уровень загружается. Именно в этом состоянии происходит сам игровой процесс.
- Gameover state — переход в это состояние осуществляется при проигрыше игрока.
Level Manager
Игра проходит в пределах 1 сцены. Уровнями управляет менеджер уровней (Level manager). У каждого уровня есть свой префаб (prefab).
PlayerController
PlayerController — это конечный автомат. Он имеет 7 состояний:
- Empty (пустое) — начальное состояние, когда нам не нужно выводить игрока на сцену и управлять им. Спрайт игрока не отображается.
- Idle (в режиме ожидания) — отображается спрайт игрока. Ждем нажатия на экран, чтобы нарисовать возможные пути для игрока.
- Waiting (ожидание) — отображается спрайт игрока. Отрисовка возможных путей для игрока и ожидание касания, чтобы вычислить цель, к которой будет двигаться игрок.
- Moving (движение) — отображается спрайт игрока. Перемещение игрока к выбранной цели.
- Attacked (атакован) — отображается спрайт игрока. Игрок переходит в это состояние, когда на игрока напал враг.
- Finishing (завершение) — отображается спрайт игрока. Переход в это состояние после завершения движения (moving). Проверка финиша и количества оставшихся шагов.
- Finished (законченный) — отображается спрайт игрока. Состояние игрока после успешного прохождения уровня.

PlayerData
Ход прохождения и настройки сохраняется локально в бинарном файле (*.bin). Для этого используется класс PlayerData. Локальное хранилище используется только потому, что это MVP, а не полноценная игра. Для публикации (если это когда-нибудь произойдет с этой игрой) буду использовать другие типы хранилищ данных.
На данный момент сохранены следующие данные:
- версия (используется для управления чтением данных)
- громкость (общая, музыка, эффекты)
- пройденные уровни и их результаты
- текущий уровень
При добавлении новых полей для хранения важно будет соблюдать очередь, так как все поля записываются в строгом порядке. Они читаются из памяти в том же порядке.
Плитки для дорог, с использованием правил для отрисовки (Road rule tile)
Чтобы добавить дороги на уровень, были нарисованы спрайты, а затем они были добавлены в Road rule tile (плитка, которая отрисовывает спрайт в зависимости от заданных правил).

Скриншоты игры
Начальный экран Экран с настройками Список уровней с прогрессом Информацию об авторе и музыке Подтверждение удаления прогресса прохождения Отрисовка возможных путей для хода игрока Передвижение игрока Уровень с демонстрацией работы щита Пример уровня Экран паузы Результаты прохождения уровня Окончание игры