Search
Write a publication
Pull to refresh

Много слов о простой игре

В этой статье я хотел бы поделиться процессом создания первой игры.

Что на старте?


Я имел неглубокий опыт в программировании, немного писал на php, javascript, vba. Также по предыдущим профессиям у меня был опыт работы с Adobe Photoshop. На основании этого я сделал вывод, что смогу своими силами написать небольшую мобильную игру.

Александр Сергеевич для привлечения внимания:

image

Если интересно, что из этого вышло, прошу под кат…

Инструменты


Выбор фреймворка был недолог. Мне не хотелось глубоко погружаться в нэйтивную разработку и хотелось найти фреймворк, который бы позволили разрабатывать без хардкорного кода. После небольшого гугления выбор пал на Unity. Основным фактором было то, что в нём можно было много сделать методом «drag’n’drop», также радовала кроссплатформенность.

Выбор платформы


Первоначально я планировал делать игру для андройда, так как отдавать 100 $ за лицензию разработчика яблочников желания не было. Поэтому я решил отделаться малой кровью – разработкой под андройд. Тем более для тестирования игр на эппл нужно было сразу покупать лицензию, а для андройда – только при публикации.

В процессе изучения темы я понял, что прибыль от игрушек на эппл в 6 раз больше. Указать сейчас источник данной информации я не смогу. Поэтому впоследствии перешёл всё-таки на разработку на яблочные девайсы (Unity позволяет достаточно безболезненно сменить платформы). Погуглив расклад сил между платформами на текщий момент, я увидел, что android и ios почти сравнялись по прибылям (ссылка).

Изучение


Первой игрой я, начитавшись Хабра и пораскинув мозгами, решил сделать что-то несложное, например, викторину. Открыв Unity и поковыряв его немного, я понял, что как сделать викторину я не знаю, и начал искать онлайн-уроки.

Мне попался замечательный сайт: ссылка. Здесь пошагово было расписано как создать первую простую игру-леталку. Начав изучение, я всё больше углублялся. И примерно через месяц я смог сделать пару уровней с самолетом, парочкой простых врагов и несколькими объектами. Как делать викторину после данного обучения, я так и не понял. Поэтому я решил сделать недлинную леталку. Я приступил к изучению Unity в начале апреля, а на тот момент был уже июнь. И как обычно, чем дальше в лес, тем больше дров. Игра разрасталась, появлялись новые хотелки и публикация, намеченная на июль, всё сдвигалась.

Что можно сделать после обучения:

image

Идея


Однажды, летним днём, мне попался сайт с предложением проверить свои литературные знания. Там был тест из 7 вопросов, с предложением угадать автора по цитате из книги. Я прошёл, потом прошёл ещё раз, потом скинул ссылку девушке. Вечером она рассказала, как они на работе соревновались кто больше отгадает. Это натолкнуло меня на идею о небольшой игре-викторине. Я провел поиск по апстору и с ходу не смог найти похожего приложения. Позже, я, всё-таки, нашёл несколько похожих викторин, но в одной нужно было угадывать по портрету, а во второй угадывать нужно было без учёта времени.

Концепт


Тогда я решил, что раз чего то нет, то нужно восполнять пробел. План таков: сделать простое, пробное, первое приложение за неделю. Мои навыки работы с Unity уже позволяли это сделать. План, как обычно, был сверхоптимистичен – я справился за две недели.
В приложении доступно два типа игры: «На время» и «Бесконечная». С первым всё понятно: за 2 минуты отгадать как можно больше авторов. Второй, я первоначально не планировал, но наткнулся на приложение, где нужно отгадать станцию метро по фотографии. Викторина абсолютна простая, сделана на очень скорую руку, но по фантастическому стечению обстоятельств (как мне кажется) попала в топ одной из категории игр. Если учесть, что станций метро в Питере только 67, рекорд по количеству в GameCenter составляет 587, и он(рекорд) там такой не один. Значит, если люди готовы играть бесконечно, нужно непременно предоставить им такую возможность.
В принципе, это всё. Я решил сделать 2 режима игры и таблицу рекордов. Для первого приложения достаточно.

Данные


Найти цитаты с автором, как мне казалось, будет быстро и просто. Но жизнь внесла свои коррективы. В удобоваримом виде такого не нашлось. Поэтому пришлось собирать вручную нетленным методом «ctrl+c/ctrl+v». Я собрал 500 цитат. И сразу разделил их по 4 категориям сложности (сложность я выбирал достаточно субъективно), хотя я и не планировал вводить в первой версии разные уровни, я сделал задел на будущее.

Авторы брались из курса школьной программы, произведения — наиболее массовые, плюс добавил горячо мною любимых братьев Стругацких. Возможно, кто-то скажет, что это достаточно специфичные авторы и массовому читателю не известны, но так как приложение — моё, я решил делать так как нравится мне.

Как хранить данные в Unity? Массив данных получился небольшой, и я решил не тратить время на поиск решений с базами данных, а просто создать текстовый массив с цитатами, авторами, названиями произведений и уровнем сложности.
Если кто-то подскажет более изящное решение – буду очень рад.

Изящное решение:

image

Дизайн


Про дизайн говорить особо нечего: фон в виде состаренного бумажного листа, шрифты и кнопки стандартные. По дизайну у меня даже не было сомнений – ничего другого и не надо. Единственный вопрос был – это иконка. Как заглушку я использовал портрет Александра Сергеевича, посмотрев на него в виде иконки, я решил его оставить. Так как тематике он соответствует, авторских претензий на него, надеюсь, уже не будет.

Алгоритм


Как работает приложение изнутри? Кода здесь немного, но, чувствуется, что я выбрал не самый оптимальную реализацию задуманного.

  1. Цитата случайным образом выбирается из массива, и по умолчанию записывается в первую кнопку ответа (в первую ячейку массива ответов (надо же её куда записать)), потом также случайным образом добавляются авторы во вторую и третью.
  2. После этого кнопки перемешиваются, чтобы правильный ответ не был первым в списке.
  3. После нажатия кнопки ответа, в случае правильности подсвечивается зелёным, если нет – то красным.
  4. И ещё один спорный момент: если пользователь дал неправильный ответ, то я опять проверяю все ответы на правильность, и подсвечиваю правильный.

Таким образом получается, что я сначала записываю номер правильного ответа, потом прячу его, потом снова ищу. В части алгоритма тут явно большая ошибка. Если кто знает, как сделать оптимальней, буду рад узнать.

Код


Здесь особо интересного написать нечего, так как задачи в части программирования были достаточно тривиальные, а сложность с алгоритмом описал в предыдущем пункте (уже слышу, как в меня летят тухлые помидоры с криками: «Как ты смеешь публиковать на Хабре статью без единой строчки кода!»)

Монетизация


Хорошо, когда хобби помимо удовольствия и занятного времяпрепровождения, является ещё и способом получения денежных знаков. За что и как мне будут платить пользователи? Платного контента у меня нет, хотя в будущем можно будет впилить какие-нибудь платные подсказки или что-нибудь в таком духе, но сейчас — это только реклама. Рекламу я планирую показывать после прохождению 2ух минутной игры, в режиме «Бесконечной игры» — прерывая после 2ух минут, а также при возврате в главное меню. Также хотелось во время игры показывать баннер внизу экрана.

Реклама в Unity


На Хабре много рассказано про рекламные сети, я же добавлю своё видение в части интеграции рекламных сетей с движком Unity.
Я рассматривал несколько рекламных сетей: ChartBoost (на Хабре его хорошо рекомендуют ), AdMoob, UnityAds, Appodeal.

ChartBoost – очень легко интегрировался с Unity, доходность обещает быть выше конкурентов, есть видео и полноэкранка, но единственный минус – нет баннеров внизу и наверху экрана.

AdMoob –я хотел его использовать только для тех самих баннеров внизу экрана, но у меня не получилось сделать интеграцию. Официального плагина в UnityStore нет, есть какая-то версия на гитхабе, но она устарела. Есть ещё несколько сборок, но у меня не получилось их подключить. К моему сожалению, я отказался от данного поставщика.

UnityAds – подключение достаточно простое, есть в UnityStore, но баннеров внизу экрана они также не предоставляют.

Appodeal – интересное на первый взгляд решение: есть несколько сетей, объявление автоматом подставляется самое высокооплачиваемое, лёгкая интеграция со всевозможными фреймворками и системами. Данное решение я решил использовать для баннеров внизу экрана (друзья, как называется «баннер внизу экрана»? У него есть научный термин? Замучился столько раз писать). Но в процессе работы возникло слишком большое количество минусов:

  • Самый главный минус, состоит в том, что объявления, которые показывает данный агрегатор, возможно, самые высокооплачиваемые, но никак не самые интересные для пользователи. Примерно 50 % времени на тесте у меня показывалось объявление «Посетите Австрию». Кто ж на него кликать то будет?
  • Следующий пункт, который меня насторожил (может напрасно?), что мне нужно добавить порядка 15-20 фреймворков в XCode. В данной ситуации меня волнует вопрос, если выйдет новая версия iOS, какова вероятность, что один из этих фреймворков не вылетит с ошибкой? А постоянно обновлять данный набор желания нет.
  • А дальше по мелочам: при запуске приложения у пользователя запрашивается разрешение на геолокацию, при этом в коде прописано, чтобы геолокция не спрашивалась, настроить это так и не удалось.
  • Видео реклама отображается в моём портретном приложении в ландшафтном виде. Настройки ориентации экрана на сайте Appodeal не помогли. Поддержка тоже не помогла.
  • Поддержка есть. В скайпе отвечает, но по факту на мои вопросы ответов не было.

В итоге я остановил свой выбор на ChartBoost. В дальнейшем решил попробовать UnityAds.

Все остальное


Музыку за отсутствием времени решил не ставить, а сделать в следующем обновлении. Пуш-сообщения также оставил для обновления. Тестировал на двух девайсах: IPhone5 и IPad mini, на каких-то высокоразрешающих экранах не смотрел, надеюсь, что будет всё ок. Скрины на экраны сделал с помощью сайта , но скрины почему то только для IPhone, на IPad пришлось делать самому.

Аналитику интегрировать от Flurry у меня не получилось, хочу попробовать Google Analitycs. Бесплатного плагина Flurry для Unity я не нашёл. В Unity 5.2 появилась встроенная аналитика от Unity, но платная.

Продвижение


Я выбрал два пути продвижения: тематические группы Вконтакте и бесплатные посты на форумах. Готов потратить максимум 5000 руб. на первом этапе. Средняя стоимость размещения в тематических группах с 1 млн чел. – 800 руб. на день. Это довольно дёшево, как мне кажется, но причина в том, что тема групп – литература, поэзия и пр.

Итог


В итоге я считаю, что для инди-разработчика правильней делать игры максимум за месяц и надеяться, что они прорвутся в топ. Если делать первую игру около года, то высока вероятность глубокого разочарования. Меня очень вдохновляли статьи PapaBubaDiop, спасибо ему за них.

Спасибо, что дочитали до этого места, я старался, чтобы ваше время было потрачено с пользой!
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.