Привет, Хабрасообщество! В этой статье я хотел бы рассказать о своем (не первом) опыте разработки игр для мобильных платформ, истории создания одной игры и полученных результатах.
Как понятно из названия статьи, этот опыт можно считать неудачным, но о чем пойдет речь ниже, вы можете увидеть.
Фон
Некоторое время назад, в течение двух лет, я разрабатывал игры для Windows Phone. За это время было выпущено 6 игр, из них только 2 были платными + триал и принесли всего несколько долларов, остальные были бесплатными без рекламы.Я разрабатывал игры для этой платформы, потому что на ней было XNA + C#, мне очень нравилось это сочетание, но потом пошли слухи, а потом реальность, что поддержка XNA прекращается.
Начался поиск других движков, среди которых мне больше всего понравился Unity. Скажу сразу, о целесообразности его использования для небольших игр спорить не хочу, меня здесь все устраивает, даже если в других движках есть редактор, C#, кроссплатформенность и т.д. поддержки Windows Phone в Unity еще не было, но это меня не смущало, потому что.
я больше не хотел разрабатывать под эту платформу, по крайней мере пока (как сказал один друг, зачем ездить на дохлой лошади).
Честно говоря, мои игры были слабыми, но выбор был сделан.
Подписка разработчика Windows Phone была закрыта, и начался новый период обучения, прохождения обучающих программ и, собственно, разработки игр.
Выбор игры, старт
Как известно, нельзя начинать с чего-то сложного.По этой причине для тестовой игры была выбрана идея, которую я уже начал реализовывать на Windows Phone, а именно головоломка в стиле Братьев Пилотов (скриншот), но с немного другой механикой.
В моей игре при нажатии на объект состояние переключается не для всей строки и всего столбца, а только для выбранного объекта и соседних объектов (сверху, снизу, слева, справа).
Для наглядности эффекта переключения было решено использовать прямое переключение или зажигание, но что может сгореть? Звезды! Поэтому название «Сияющие звезды» было выбрано довольно быстро.
Разработка началась.
Стоит сказать, что бюджета совершенно не было.
Поэтому все предполагалось делать самостоятельно — программирование, графику, продвижение и т. д.
Разработка
Здесь проблем практически не было.Функционал и механика довольно простые, поэтому базу я сделал очень быстро и легко.
Мне пришлось только мучиться с различными эффектами в виде вращения, масштабирования, скольжения и т.д. Вращение.
В Unity есть методы для вращения объектов.
Но если честно, у меня они иногда странно работают, потому что отчасти я просто тыкал наугад и искал вариант, который бы меня устроил.
На экране выбора уровня реализовано скольжение.
На экране отображалась только часть иконок с уровнями (размер части зависит от размера экрана), остальные отображаются при переключении кнопками «влево» и «вправо».
Масштабирование также оказалось довольно простым, как только я освоился.
Основная идея заключается в том, что игра должна хорошо выглядеть на экранах всех размеров.
В Интернете не так много уроков по этой теме; В основном мне приходилось изучать форумы.
Кстати, сразу хочу посоветовать начинающим пользователям Unity зайти на их английский форум, там очень оживленно, люди всегда стараются помочь, в отличие от большинства русскоязычных форумов на разные темы.
В итоге я пришел к варианту, при котором за основу выбирается определенный размер экрана, затем рассчитывается коэффициент относительно реального размера экрана телефона или планшета.
Все игровые объекты меняют масштаб и положение в зависимости от этого коэффициента.
Лично у меня коэффициент был не один, потому что.
разные типы игровых объектов приходилось масштабировать по-разному из-за того, что на разных экранах они воспринимались по-разному.
Некоторые объекты на маленьких экранах можно было оставить стандартного размера, другие нужно было немного увеличить относительно первых.
Уровни
В самой-самой первой версии игры я хотел сделать 20 уровней.Хм, это была бы интересная игра.
По мудрому совету это число было увеличено до ~100 (в планах).
Конечно, мне не хотелось самому придумывать уровни и проверять, решаемы ли они.
Я программист, так зачем издеваться над собой! Через некоторое время был готов генератор, который выдавал все возможные комбинации уровней заданного размера, затем проверял разрешимость уровня и выводил в текстовый файл.
Это была моя самая большая проблема в этой игре.
Если при размере игрового поля 4*4 количество уровней измерялось десятками тысяч, то для поля 5*5 их было уже миллионы, для поля 6*6. Ну вы поняли.
Да, я программист, я могу написать генератор, могу научить его решать уровни, но не могу научить его выбирать, какой уровень красивый и будет включен в игру, а какой будет исключен.
Поэтому все эти миллионы уровней приходилось просматривать и выбирать вручную.
Я даже попробовал сначала, но потом понял масштаб действия (а мне хотелось сделать игровое поле размером 10*10) и меня затошнило.
Как ни крути, мне пришлось вернуться к ручному рисованию различных узоров.
Эти закономерности были введены в игру и решены мной лично на телефоне (заодно проверка разрешимости + эстетическое удовольствие от решения уровня).
Неразрешимые уровни были улучшены, неинтересные выброшены.
И через некоторое время у меня было готово 120 уровней, расположенных в порядке возрастания их размера и сложности внутри размера.
Пример создания уровня Вот так выглядит процесс создания уровня.
Все поле отмечено сеткой, желтыми клетками там, где есть звездочки, белыми клетками там, где их нет. В левом верхнем углу находится код уровня, в котором они хранятся и обрабатываются в игре.
В правом верхнем углу цифра светло-зеленого цвета означает, что уровень был пройден мной за определенное количество шагов (также есть красные квадраты для нерешенных уровней), а восклицательный знак означает, что уровень выбран для включения в игра.
Число 120 было выбрано не случайно.
На телефонах разных размеров экран выбора уровня может содержать разное количество значков для этих уровней.
Благодаря числу 120 мне удалось разделить значки на группы с одинаковым количеством значков в каждой, что немаловажно.
Я не хотел, чтобы на первых страницах было 12 иконок, а на последней только, например, 10.
Графика
Графика в моей игре, на мой взгляд, претерпела целую эволюцию! Изначально я хотел сделать игру очень быстро и выпустить «то, что есть» с этими 20 уровнями.И это «то» мне сначала показалось очень хорошим, но получив пару советов от других людей, я хорошенько подумал и начал все перерисовывать.
За основу были взяты различные известные игры, например, Angry Birds, из которой я взял идею внешнего вида пользовательского интерфейса, расположения иконок уровней при их выборе.
Старая версия графики Главное меню с двумя опциями кнопок.
Конечно, после первого второй показался чудесным! Пока не был сделан последний фариант.
Окно информации об игре
Окно выбора уровня
Чтобы игра не казалась мертвой, возникла идея сделать в ней что-то, что имело бы противоположный эффект. Эта идея стала живым фоном игры - если присмотреться, звездное небо на заднем плане - это не просто картинка, на нем мигают другие цветные звезды (синие, желтые и бледно-желтые), причем время от времени даже падающая звезда пролетает! Да, этот эффект не является оригинальным или новым, но я считаю, что он хорошо получился и помог создать нужную атмосферу в игре.
Окончательная графика Главное меню с расширенными кнопками настроек (чтобы не загромождать экран, они изначально свернуты и открываются по клику на кнопку настроек)
Окно информации об игре
Окно выбора уровня
Окно с уровнем во время игры (один из вариантов фона, всего их 3, выбираются случайным образом)
Внимание было уделено абсолютно всему.
Игровые объекты были улучшены и стали красивыми.
Объекты пользовательского интерфейса (кнопки, значки уровней) были улучшены и стали красивыми и интуитивно понятными уже по изображению.
Даже для иконки было разработано несколько вариантов, из которых сложно было выбрать окончательный, и впоследствии он был заменен другим, который мне показался более подходящим.
А сколько раз я перерисовывал все тексты! Иконки Начальные варианты на выбор
Окончательный вариант
Программа мне очень помогла в верстке графики.
Текстурпакер Я очень рекомендую ее! Его бесплатных возможностей вполне достаточно для наших целей, а атласы он собирает очень хорошо.
Я подготовил несколько атласов - один для кнопок и два набора игровых объектов (с локализацией на русский и английский языки).
Правда, в старой версии Unity мне приходилось вырезать нужные куски по uv-координатам, что несколько неудобно.
В новой версии Unity все можно сделать гораздо проще с помощью спрайтов.
Звуки и музыка
Здесь нет никаких проблем.Существует множество ресурсов, на которых можно купить звуки или получить их бесплатно.
бюджета не было, я выбрал несколько подходящих звуков и мелодий, которые эти ресурсы позволяют скачать бесплатно, т. е.
все абсолютно легально и без воровства (да, для меня это важно).
Основная идея заключалась в том, чтобы создать спокойную среду, в которой игрок мог бы думать, под тихую музыку на заднем плане.
Но первое же обновление игры изменило ситуацию - была добавлена более ритмичная музыка с возможностью выбора в настройках желаемой мелодии (спокойной или быстрой).
Выпуск, продвижение, результаты
Замечу, что я собирался выпускать игру только для Android, потому что.у меня есть соответствующий телефон, но нет iOS-устройств, на которых я мог бы протестировать игру, и я не хочу выпускать ее без реальной тест. Еще одна причина заключалась в том, что регистрация в Google Play — это единоразовый платеж в размере 25 долларов, тогда как в Apple нужно платить 99 долларов каждый год. Возможно, я выпущу игру для iOS, но чуть позже.
Сразу после релиза я написал об игре на ряде Android-форумов и начал следить за результатами, которые вскоре появились, но на этом дело практически остановилось.
Потом я выпустил два обновления, о каждом из которых сообщил на форумах (хоть какое-то, но шишка).
Также существовала опция перекрестного рейтинга (вы даете чужой игре высокий рейтинг и просите его оценить вашу игру).
Но это означает установку на телефон целой кучи чужих (не всегда хоть каких-нибудь хороших) игр, возможный обман со стороны окружающих (ведь не факт, что они оценят вашу игру в ответ), поэтому я быстро отказался от этого варианта.
На данный момент количество загрузок очень мало.
Я догадывался, что будет какой-то сбой, но настолько.
Отчасти это связано с тем, что я разместил на форумах не только ссылку на Google Play, но и сам apk-файл, причем судя по статистике , его скачивания превышают скачивания игры с маркета.
Игра бесплатна.
В качестве монетизации был выбран показ рекламы.
В процессе разработки я хотел подключить несколько модулей - если один не отобразился, показать второй и т.д. Первым подключился всем известный Chartboost, затем попробовал подключить RevMob и PlayHaven, но были некоторые заминки с их (честно говоря, в игре они не работали, причину я так и не узнал), поэтому остался только один модуль, от которого должен был идти весь доход. Но если принять во внимание вышесказанное (количество загрузок и желание пользователей кликать по рекламе или устанавливать рекламируемые игры), то понимаешь, что никакого дохода нет.
выводы
Как говорится, плохой результат – это тоже результат. С момента начала разработки на Unity (время на Windows Phone не считаю) до релиза прошло около 14-15 месяцев.По-хорошему, такая игра пишется за месяц подработки, да и то с запасом.
Причиной была нехватка времени.
Нет, времени было достаточно — пары часов по вечерам, нескольких часов в выходные хватило, чтобы продолжить делать игру без долгих пауз.
Но мне не хватало морального благополучия.
В этот период было много личных проблем, хотя было желание сделать игру, были идеи, но я сел за компьютер, тупо посмотрел в монитор, потом понял, что у меня нет вдохновения, что я могу не реализовал абсолютно ничего и отключил это.
Вот так пролетел этот год. Начнем с отрицательных моментов.
Я действительно потратил много времени на игру, но есть обстоятельства, от меня не зависящие.
Игра оказалась полным провалом; никакого дохода мне это не принесло (ну несколько долларов не в счет).
И с этой точки зрения это полный провал.
Но, наверное, есть и более положительные стороны.
Прежде всего, это опыт! С помощью этой игры я изучил основные возможности Unity с одной оговоркой — игра разрабатывалась на старой версии, в которой еще не было 2D. Теперь 2D-игры можно разрабатывать с использованием этой новой технологии, поэтому большая часть моих разработок в игре может больше не понадобиться.
Эта игра заставила меня осознать, что графика действительно важна! Не забывайте об этом, никогда! Если бы я выпустил игру с первыми вариантами дизайна, мне было бы за него стыдно.
Теперь я выпустил прекрасную игру.
Да, она провалилась, но я до сих пор ею горжусь! Если у вас есть бюджет, вы можете нанять хорошего дизайнера.
Если нет, то перерисовывайте все снова и снова, пока результат не станет действительно стоящим.
Думаю, единственной серьезной ошибкой, которую я здесь допустил, был выбор жанра игры.
Наверное, большинство игроков любят экшены, аркады, может быть, что-то еще, но головоломки такого типа не очень любят. Люди видят мою игру, кому-то может не понравиться графика, а кто-то откажется из-за жанра.
А если говорить о следующей игре, которую я бы разработал, то я бы поменял только жанр, всё остальное было бы то же самое! Теги: #разработка игр #unity3d #Android #разработка игр
-
Антивоенный Открытый Исходный Код
19 Oct, 24 -
Тест Бюджетного Навигатора Lexand Si-365
19 Oct, 24 -
Женат На Программисте
19 Oct, 24