Как все это работает?
Весь игровой процесс происходит в 1 сцене, в независимости от режима и размера поля, мне показалось так будет проще чем делать 10 сцен с локациями под каждый режим и передавать данные между ними. Поле представлено матрицей размером 5*5, 7*7 или 9*9. Когда мы жмем на цифру то запоминаем ее значение и ставим ее как начальную точку отсчета последовательности, далее при свайпе (не отпуская палец от экрана) мы кидаем рейкаст каждый кадр по положению пальца на экране. Если под пальцем нужная цифра (ее тег больше на 1 чем первой выбранной цифры), то сохраняем ее в последовательность и продолжаем кидать рейкасты уже с ее позиции и сверяя с ее тегом.
Это повторяется пока мы не отпустим палец от экрана или не соберем всю последовательность 1-9, дальше начинается магия под названием "конец хода".
Конец хода запускает функции в таком порядке:
1. Подсчет очков и урона. Очки считаем по формуле количество собранных цифр * ширину игрового поля * и еще раз на ширину. Так получается, что собирать более длинные последовательности "выгоднее" по очкам, также как и играть на поле большего размера. Возможно эту формулу нужно будет балансить еще.
2. Проверка на конец уровня.
2. Включение анимаций удаления цифр.
3. Удаление собранных цифр с поля.
4. Заполнение пустых ячеек цифрами, которые были выше в этом столбце, как водопад.
5. Заполняем пустые ячейки новыми цифрами. Для этого проверяем поле на количество всех цифр, возвращаем массив с цифрами, которых согласно правил мало на поле. Из этого массива рандомно выбираем одну цифру и заполняем пустую ячейку. Повторяем проверку и заполнение пока поле не будет полным.
6. Сохраняем поле.
7. При новом тапе на экран проверяем есть ли возможные ходы, и если нет - конец игры. Ходов нет, когда на поле не осталось четных или нечетных цифр полностью, например, для поля 5*5 концом игры будет наличие на поле только цифр 1, 3, 5 или 2, 4.
Кому интересно, в комментариях могу рассказать подробнее про любую функцию.
А дальше?
Дабы разнообразить геймплей решил добавить игрового персонажа и соперников для него, и пусть они там на фоне дерутся. Также был добавлен режим игры с ограниченным временем, которое добавлялось за каждый ход.
Была придумана история, что наш персонаж - цифра ноль, и он будет драться с разными электрическими приборами (например, первый босс - калькулятор) чтобы спасти другие цифры из воображаемого плена. Всего в игре сейчас 10 локаций и 8 боссов.
Каждый раз в конце хода мы атакуем босса и наносим ему урон. У каждого босса свое количество здоровья, и когда оно закончится - будет смена уровня.
Что сейчас сделано в игре, и почему это Альфа версия?
Для начала пару скриншотов текущей версии игры для понимания написанного ниже:
Все в игре делаю сам, включая графику, анимации и планируемые звуки и музыку, мой опыт достаточно маленький. Первый мой опыт работы с Unity, а кодил на С# по минимуму пару лет, ничего сложнее пицца-калькулятора не делал. Опыта в рисовании векторной или пиксельной графики тоже минимум, остановился на пиксельной, казалось, что легче - я ошибался, уместить все детали в 32 или 64 пикселя достаточно сложно не имея опыта и главное практики. Ну и с музыкой вообще беда, не понимаю ничего, думаю меня хватит максимум на звуки. Ниже собрал чеклист что сделано / не сделано, для оценки текущего состояния проекта.
--- Общее.
Сделано:
1. Локализация на три языка, русский, английский, украинский, думаю к релизу будут основные европейские языки, текста в игре все равно мало.
2. Локальное сохранение прогресса для двух режимов одновременно, с кодированием данных от мамкиных хакеров.
3. Подключены Google Play сервисы, с достижениями, рейтингами игроков и облачным сохранением.
4. Самое любимое в сообществе - наличие рекламы. Да, она есть, но так как меня она тоже напрягает (особенно внезапный баннер), то ее здесь минимум, и она не мешает игровому процессу. Добавлен 1 баннер внизу экрана, только во время паузы, 1 видео реклама за обновление игрового поля (по желанию), видео реклама +3 к подсказкам, доступно неограниченное количество раз (по желанию).
Надо еще сделать:
1. Прописать больше достижений.
2. Возможно добавлю Аналитику и события, для сбора статистики.
--- Геймплей.
Сделано:
1. Два режима игры, обычный и с лимитом времени.
2. Три разных размера поля 5, 7 и 9 клеток.
3. Смена уровней, смена боссов и скина главного персонажа.
4. При смене уровня перемешивание текущего поля, не добавляя новые цифры.
5. Атаки и оружие персонажа и боссов.
6. Функция поиска хода, 3 попытки. Оказалась самым сложным решением в плане кода как для новичка. Этот метод ищет все возможные последовательности для каждой цифры на поле. Сначала в большую сторону от цифры, потом в меньшую. Образно для цифры 3 сначала находим 4 и 5, а потом 2 и 1. Все найденные последовательности сравниваются по длине и среди самых длинных рандомно выбирается одна, которая и будет показана игроку. Дополнительные попытки доступны за просмотр рекламы, +3 за просмотр.
7. Функция обновления игрового поля, когда закончились возможные ходы. Такой себе софт старт игры заново, но с сохранением всего прогресса. Доступно 1 раз за игру, и при желании только 1 раз за рекламу.
Надо еще сделать:
1. Обучение в начале новой игры.
2. Баланс сложности для полей размером 7 и 9, сейчас на них банально сложнее проиграть.
3. Баланс накопления времени в режиме игры "Лимит времени".
4. Возможно добавлю для режима "Лимит времени" кнопки +1 минута с кд 30 минут за просмотр видео рекламы.
Планы после релиза:1. Режим игры "Выживание", где атаки босса будут также снимать здоровье у персонажа, на поле будут "сердечки" при соединении которых будет восстанавливаться хп.
--- Графика и анимации.
Сделано:
1. Нарисован весь интерфейс, спрайты и анимации всех цифр, главного персонажа и всех боссов. Персонажа и боссов сначала делал в MagicaVoxel и потом готовые модели использовал как референс для спрайтов и анимаций.
2. Уровни нарисованы схематически, для понимания общей картины.
3. Нарисован собственный пиксельный шрифт для текста.
Надо еще сделать:
1. Полностью нарисовать уровни.
2. Добавить анимации некоторым предметам окружения.
3. Добавить освещение на уровни.
--- Музыка.
Сделано:
1. Сделан аудиоменеджер с возможностью регулировок громкости из меню настроек.
2. Добавлена тестовая фоновая мелодия, будет заменена к релизу.
Надо еще сделать:
1. Сделать и добавить звуки для атак, объединения цифр.
2. Добавить фоновую музыку, желательно мелодию для каждого уровня.
Сколько ушло времени и когда релиз?
От идеи и до текущего состояния прошел практически ровно год из которых на сам кодинг ушло порядка 4 месяцев в сумме, на графику и анимации я потратил еще полгода, остальное время это поиск идей и решений для возникших проблем, опыта то нет.
По моим подсчетам на оставшуюся работу по графике и анимациям уйдет еще месяца 4.
На звуки пол месяца, на музыку, если писать самому даже простые мелодии (а их надо 10) то это еще месяца 2-3, если найти и просто добавить то два дня максимум.
На балансные правки и проверку один месяц.
На исправление багов около месяца, половину уже поймал и исправил.
На подготовку к публикации еще 1-2 месяца, что включает все маркетинговые тексты, скриншоты, видео для маркета, и перевод всего этого минимум на 3 языка.
Итого имеем, что надо еще минимум 7,5 месяцев,а максимум 11 месяцев. Это если укладываться в прописанные сроки и не возникнет новых проблем.
Зачем я все это вам пишу?
Мне нужна обратная связь по игре, чтобы кто-то, кроме нескольких друзей, глянул на игру со своей стороны и подсказал что не так с игрой, мой глаз уже замылен, и я могу чего-то банального не замечать. Также все это нужно для тестирования игры на большем количестве разных устройств и для поиска возможных багов, с которыми я не сталкивался.
Для доступа к закрытому альфа тестированию нужно вступить в Google группу тестировщиков и подтвердить желание учувствовать в тестировании на этой странице, ну и собственно скачать саму игру в маркете на свой Android девайс.
Всем спасибо за внимание, и за то, что прочитали это полотно до конца. Буду рад вашим комментариям и фидбеку по игре. До встречи в рейтинге топ игроков.