Из этой статьи ты узнаешь, какие ошибки я совершил при разработке и публикации игры Повелитель Рыцарей на платформе Яндекс.Игры.
Повелитель Рыцарей - аркада с элементами стратегии. Цель игры - победить скелетов и очистить от них игровое поле. Игрок может нанимать за золотые монеты четыре вида рыцарей, отличающихся мощью и дальностью атаки, количеством жизней и стоимостью. В игре 30 уровней различной сложности.
... а теперь перейдем к ошибкам ...
Скучная заставка... или нет?
Заставка у игры отличается статичностью и отсутствием графических эффектов. Она проста, лаконична и без излишеств/украшательств. Кому-то такое нравится (например, мне). А кому-то нет.
Напишите в комментариях, как вам заставка игры?
Фундаментальная ОШИБИЩЕ
По-скольку это моя первая игра, в самом начале её разработки я допустил фундаментальную ошибку, которая затем потянула за собой очень большой пласт сопутствующих проблем. Мне пришлось многие механики реализовывать не парой блоков кода, а танцами с бубном и программными костылями-ухищрениями.
Разработка игра стала бы намного проще и быстрее, не соверши я эту ошибку.
В чём её суть? Игровое поле перемещается пальцем или указателем мыши влево/вправо. В движке Construct 3, на котором написана игра, есть функция слежения за объектом, при использовании которой само игровое поле и все его элементы как бы не двигаются, а перемещается камера вслед за определенным объектом. В моем случае нужно перемещать какой-нибудь невидимый спрайт в соответствии с движениями пальца, а камеру привязать к этому спрайту.
Я же к движению пальца камеру не привязал, камера всегда стоит на месте. Я двигаю на каждый тик все элементы: интерфейс, юнитов игрока, монстров-скелетов и даже... это ужасно произносить... но я двигаю стрелы, копья и магические снаряды... Вместо того, чтобы использовать поведение "Bullet", я перемещаю каждый тик снаряды... эта ошибка до сих пор вызывает во мне неприятное чувство стыда)
Как уже говорил выше, этот досадный промах тянет за собой множество других проблем. К примеру, в Construct 3 есть генератор частиц. При помощи этого генератора можно сделать очень реалистично выглядящую пыль из под ног юнитов. Хоть это и достаточно затратно по ресурсам, зато красиво. Так вот, если использовать генератор, то частицы пыли при прокрутке экрана не перемещаются логически верно относительно юнита. Они остаются в том месте экрана, где и возникли. Одним словом, пыль ведет себя не как пыль, а как непонятно что.
Самое интересное, что я конечно же знал о поведении "Следить за объектом" и даже использовал в опытах, но... почему-то подумал, что с его помощью данную игру сделать не выйдет. И только спустя пару недель разработки понял, что можно было это поведение использовать, а я просто ошибся, подумав иначе.
Как думаете, стоило ли прервать процесс разработки и переписать код без этой ошибки?
В игре мало сочных анимаций
Что я имею в виду? Графика в игре хорошая, объективно. Использованные графические ассеты очень крутые, хоть и бесплатные. НО! Не хватает сочных анимаций взрывов на весь экран, пёстрых анимаций появления и гибели юнитов, каких-нибудь аномалий, разбросанных по полю, разнообразных заклинаний и т.д.
Ошибки, о которых я узнал от модераторов Яндекс.Игры
Хотя у меня и была фокус группа с различными устройствами, это не защитило меня от досадных багов, связанных с различными расширениями игровых девайсов. На части устройств кнопка на начальном экране выходила за пределы экрана. Самое обидное, что этот баг решается в пару кликов мышкой, однако... баг есть баг, и он послужил одной из причин отклонения модерации игры.
Неправильное оформление описания игры на странице Яндекс.Игр. Я придумал короткое описание игры и написал его в текстовом блоке для описания игры. А затем скопипастил его безо всяких изменений в блок описания для SEO... Оказалось, что так делать нельзя, оба текста должны быть уникальными, отличными друг от друга.
Проблемы с обложками игры на различных языках. На обложках для российской локализации должны использоваться буквы русского алфавита и русские слова. На обложках для английской локализации всё должно быть только на английском. Я же в фото и видео промо материалах случайно пропустил слово "Уровень" на русском языке для всех локализаций.
Черные полосы по краям промо-видео и фото. Тут всё очевидно. Все промо материалы должны быть соответствующих размеров. Если указано 16:9, значит 16:9, не больше и не меньше.
Цветная подложка. Нельзя делать видео переходы через черный или белый экран. Либо таких переходов нужно избегать, либо делать цветную подложку.
Во время рекламы игровая музыка должна полностью отключаться. Я же это в первый раз не учел.
Для Яндекса желательно в консоль разработчика выводить "Yandex SDK initialized" в случае, если SDK действительно успешно инициализирован. Просто чтобы модератор видел данную строку.
В первой версии игры раздел благодарностей был реализован из рук вон плохо из-за моей лени. Я просто сделал шрифт помельче и впихнул все благодарности кое-как. Пришлось переделывать, чтобы всё было хорошо видно и не выбивалось стилистически из остальной игры.
Вы должны учитывать, что пользователь может перевернуть экран, и после этого переворота игра должна полностью сохранять свой внешний вид. Текстуры не должны разъезжаться и деформироваться. Я вроде бы это знал, но всё-равно на некоторых устройствах такая проблема возникала. Пришлось переделывать.
Реклама должна показываться в игровых паузах, к примеру, между уровнями. Я же в первом уровне сделал рекламу во время обучения. Как итог - отклонение модерации.
Музыка в определенные моменты должна играть только та, которая задумана, всё лишнее должно отключаться. Во время модерации этих проблем у меня уже не было, но во время разработки пришлось долго попотеть.
Кнопки в игре должны работать ровно тогда, когда это необходимо. К примеру, во время паузы кнопка стрельбы не должна быть доступна. Во время модерации этой проблемы тоже не было, но я потратил много усилий, чтобы сделать, чтобы всё корректно работало.
В комментариях под статьёй напишите, интересны ли вам подобные инкрементальные игры?
И вторая тема, которую я предлагаю обсудить - с какими багами и досадными ошибками сталкивались вы в своей деятельности? Не обязательно связанной с программированием и играми
Спасибо, что дочитали эту статью до конца!