Загадки — мобильная игра своими руками
История создания мобильной игры от идеи до релиза одним человеком. Кровь, пот и пиксели из первых рук. Как сказала Ивлеева Дудю: «Погнали!»
Вдохновение
Всю сознательную жизнь я играл в интеллектуальные игры и как-то раз попалась в мой телефон игра Little Riddles от американской студии Juxta Labs.
Игра состоит из авторских загадок, которые отличаются юмором и заставляют пораскинуть мозгами, но английский язык мешает в полной мере насладиться процессом отгадывания. В российских сторах аналогов не нашёл и решил повторить игру на великом и могучем.
На чём пишите?
В качестве движка выбрал Unity, у него удобная модель мира, магазин ассетов, большое сообщество и возможность делать сборки под Android и iOS. Mono показалось сухой, вместо неё использовал Rider. Еще помогали Photoshop, SourceTree и Google-документы.
Медленное прототипирование
Прототип создавался гомеопатическими дозами, по 1-2 часа в день, да и то не каждый день. Первая играбельная версия появилась через 6 месяцев, в ней была основная логика по работе с буквами, все виды подсказок и первые три десятка загадок.
Это мой первый проект на Unity, я решил, раз игра почти текстовая, то для реализации хватит UI-части движка. Когда начал писать код, для меня естественным было всё делать за компьютером — и программировать, и тестировать игру. Здесь скрывались первые грабли...
В результате, только спустя полгода разработки, когда был готов базовый движок игры и анимации, я первый раз установил приложение на реальный телефон.
Каково же было моё удивление, когда игра, которая так классно работала на компьютере — ужасно тормозил на телефоне. Наверно, похоже чувствовали себя разработчики Batman Arkham Knight после релиза на ПК.
Сначала я подумал, что я — человек-снежинка, но форумы сообщили, что UI движка не оптимизирован для мобильных устройств. Вот так просто и так грустно : )
¯\_(ツ)_/¯
Пришлось визуальную часть, а это большая часть кода, переписать с нуля на NGUI, это плагин к Unity для создания интерфейсов. Он менее удобен, чем UI движка, но зато основан на физике и, главное, быстро работает на мобилах. Наученный горьким опытом, работу плагина я протестировал на айфоне до начала разработки — NGUI «летал».
Совет
Делайте синтетический тест до начала разработки.
Вы заранее знаете, как будет выглядеть ваша игра, можете прикинуть, сколько и каких объектов будет на экране одновременно. Из глины и палок можно собрать синтетический прототип, в котором не будет настоящей логики или арта, но будет сцена с числом объектов, близких к максимально возможному в игре.
Таким образом, вы сразу увидете возможности движка на реальном устройстве, определите предел, что можно позволить себе в плане графики, текстур, моделей, насколько загруженной может быть сцена и т.д. и т.п. И если что-то пойдет не так, можно сразу расстелить коврик и помедитировать, за какой дверью искать выход из ситуации.
Совет
Выберите самое «слабое» устройство на котором должна комфортно работать игра и в течении всей разработки проверяйте производительность игры на этом устройстве.
В качестве такого эталонного телефона выбрал iPhone 5s.
Дизайн
Сначала дизайна в игре не было вообще, это ок. Потом я сделал его сам и он мне долгое время нравился.
Пока за пару месяцев до релиза я не понял, что он устарел. В результате нанял дизайнера, которая сделала всё стильно модно современно. Но релиз это отодвинуло еще на месяц-два. Что тут можно сказать...
Совет
Знаете, как улучшить игру — улучшайте, но в разумных пределах.
Игры, как и другие объекты авторской мысли, такие как книги или кино, должны в идеале сами поддерживать интерес человека к себе. Поэтому если можно сделать игру лучше и для игрока будет больше кайфа, то надо делать.
Главное здесь — не впадать в крайность и не затягивать процесс выпуска игры. Где проходит эта грань — каждый решает сам: Nintendo, например, может годами делать очередной мега-хит, сдвигать сроки релиза или вообще их не сообщать; Эрик Барон, автор Stardew Valley, в течении 4 лет делал и переделывал игру, пока не получилась версия, которая его устраивала; у автор платформера Owlboy ушло на разработку 8 лет.
Шрифты
Почти сразу решил, в Загадках все будет честно и лицензию на шрифты я либо куплю, либо стану использовать бесплатные. К слову сказать, всю дорогу я использовал пару начертаний Helvetica, а дизайнер добавила Avenir на главную.
Проверка показала, оба этих шрифта — платные, а лицензия для мобильных устройств стоит в 10 раз дороже, чем для компьютера. Порядок цен такой: одно начертание одного шрифта для ПК стоит $89, а для мобилок — $890.
Окей, пошёл в Google Fonts, долго искал замену, которая бы понравилась и буквами и цифрами, затем кропотливо переделывал все шрифты в игре на понравившийся бесплатный Montserrat. Изменения экранов, верстка текста и тестирование заняли у меня еще недели две-три.
Совет
Со шрифтами лучше определиться на берегу.
Смена шрифтов на переправе ведет к тому, что придется менять верстку всех экранов, подбирать наилучшее начертание для смартфонов и т.п.
Анимации
В первых версиях игры анимации были только у букв, они летали в ответ и обратно, но в ходе разработке стала понятна простая вещь...
Совет
Любые объекты должны появляется на экране плавно, так приятнее.
В реальном мире ничто не может появится перед нашими глазами внезапно, также как и не может внезапно исчезнуть. Молния не в счет : ) Если что-то резко появляется, например, сообщение об ошибке, это сильно «бьет по мозгам». Поэтому лучше везде делать плавные анимации, если сил совсем нет, то хотя бы обойтись изменением альфа-канала.
Звук
Если сами не пишете музыку, то звуки для игры лучше покупать или скачивать наборами. Звуки из набора будут звучать друг с другом цельно и гармонично. Я в итоге купил один набор звуков и скачал несколько роялти-фри паков.
Еще из интересного — оказалось, что часть привычных нам звуков в приложениях — это звуки, издаваемые человеческим ртом. Различные смахивания, чпоки, вжухи, нажатия на кнопки и т.п.
Снова
Создание законченного продукта, даже для такой простой игры — дело непростое. Регулярно приходится преодолевать себя. Например, требуется делать рутинные, но нужные задачи — интеграцию с платежными системами, добавление рекламы, сервисов аналитики и т.п. Даже самое приятное занятие — придумывание загадок, если его делать каждый день в течении нескольких месяцев, рискует превратится в рутину.
Для игры я написал примерно 350 загадок, на это ушло полгода. Сначала загадки придумывал спонтанно, из головы, переводил что-то с английского и хаотично искал их в интернете. Этого было мало, нужен был системный подход. В моем случае подход оказался таким: составить список различных тем и методично прорабатывать тему за темой. Примеры тем: интересные факты о животных, омонимы, интернет-тренды и т.п.
Капитанский совет такой:
Совет
Составьте план, что нужно для выпуска игры. Снова и снова возвращайтесь к работе над игрой и двигайтесь по плану.
Самое сложное скрывается за словом снова. Всегда трудно что-то делать, а делать постоянно, в течении длительного период времени, ещё трудней. Для любителей рефлексии: не нужно себя ни в чем винить, например, сегодня я сделал мало или вместо работы над игрой весь вечер просидел за Dark Souls. Это ок, главное снова возвращаться к работе, снова и снова ) В качестве награды вас ждет кайф, когда вы будете отмечать очередной пункт плана, как выполненный, а потом и релиз.
Созревание
Базовая механика игры — это как зерно, которое даёт росток, из ростка вырастает дерево и, в идеале, дерево начинает плодоносить.
Игра будет крутой и богатой, если игровые механики гармонично связаны с друг другом и хорошо развиты.
Мысль простая, но почему бы и простую мысль не озвучить : )
Рост идей на примере «Загадок»:
- написать игру, в которой можно отгадывать современные веселые загадки
- сделать, чтобы буквы в ответ летели, а не просто там появлялись
- летающие буквы похожи на карточки, под карточками можно что-то спрятать, чтобы игрок это находил
- находка должна быть приятной, пусть под карточками лежат монетки
- хочется добавить еще фана в находках, помимо монеток можно находить стишки-порошки, и звучит смешно: «Вы нашли пирожок!» — и сам пирожок читать весело.
- раз у нас есть буквы в ответе, иногда можно их спрятать, получится загадка повышенной сложности, т.е. загадка-босс!
Дерево идей на самом деле больше, но не станем утомлять читателя : )
В целом интересно наблюдать за развитием игры во время разработки, это как из ничего (ну ладно, из космической пыли) появляется новая галактика. Бдыщь-Вжух-Ололо.
Релиз
К релизу пришел так:
- изначально у меня был просто список задач, что нужно сделать
- потом задачи в списке упорядочились по приоритету
- далее список разделился на 3 списка: сделать к релизу, доработать в обновлениях и штуки на будущее.
Сделать к релизу — это минимальный функционал, включающий все основные фишки, без которых не хотелось выпускать игру. Сюда же входит проверка игры на устройствах, полное прохождение в разных режимах, тестирование и исправление ошибок.
Доработать в обновлениях — это список фич, без которых можно жить и выпускаться, а сами фичи запилить в обновлениях. Штуки на будущее — это беклог – длинный список больших и маленьких улучшений, которые можно спокойно запилить позже.
Если вы дочитали до этого места и вам интересно, что получилось, вот ссылки на игру:
Что теперь
Вот правдивая иллюстрация, как меняется уровень счастья разработчика на разных этапах запуска игры:
С одной стороны ты счастлив — довёл дело до конца, сделал продукт, открыл его в сторах, красавчик, что сказать : ) С другой стороны, через 3 дня после выпуска цифра установок так и остается «1+». Просто открытие игры в сторе не дает почти никакого трафика, это и есть, согласно картинке, Пропасть Печали. Ты понимаешь, что да, ежедневно в App Store выходит примерно 1500 приложений, а в Google Play еще больше, на этом фоне быть замеченным непросто. Это данность.
Возникает насущный вопрос, откуда взять игроков? Здесь начинается второй большой этап в жизни мобильной игры — софт-лонч и продвижение.
Как продвинуть игру без денег или почти без денег, расскажу в следующей статье. Если будет позитивный опыт о котором можно рассказать, конечно : )
Всем отличной недели!