image

Всем привет! Меня зовут Алексей, я из Санкт-Петербурга. В этой статье расскажу про свой первый опыт разработки мобильной игры под Android на Unity3d.

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

Также интересно мнение опытных и успешных инди-разработчиков!

Итак, вот моя история.

Яйцо или курица?


Что появилось раньше – идея для игры или желание проникнуть в новую для меня сферу разработки мобильных приложений – сказать сложно. Скорее, все взаимосвязано и одно вытекает из другого.

К конкретным действиям я приступил где-то в конце ноября 2017 года. Сначала немного изучил рынок мобильных игр на предмет наличия чего-то подобного моей предполагаемой игре. Подобного оказалось много, даже очень много, но вот конкретно такой игры не нашел. В итоге, принял решение — игру нужно сделать!

Немного о самой игре


Не буду лукавить, идея приложения для android у меня появилась благодаря одной настольной игре. Может быть, кто-то из читателей в нее даже играл. Принцип в игре остался тот же, но значительно изменилась механика, а затем и сложность уровней.

image

Цель игры: поместить все фигуры на игровое поле. Отличие от подобных ей головоломок, представленных на «Google Play»: фигуры и игровое поле на всех уровнях одни и те же, а вот располагать их на игровом поле нужно в каждом уровне по-новому, в соответствии с цветными метками. Вариантов для прохождения уровня может быть несколько, но чаще всего один.

Поиски инструментов


Опыта в программировании у меня практически не было (да и сейчас его не то, чтобы много). Сначала я решил, что для разработки приложений на android нужно изучать язык Java. Скачал много книг и видеокурсов… начал читать, просматривать, выполнять задания и упражнения… и тут выяснил, что есть такая замечательная «штука», как «Unity3d», и что для работы с ней лучше изучать язык C#… Пришлось снова перелопатить интернет в поиске нужного материала для изучения.

Надо сказать, что толковых курсов по данной тематике на русском языке очень мало. Основы C# и Unity я изучал по видеокурсам на ресурсе «ITVDN» и в «YouTube». Многому научился, но это были общие знания, а мне нужна была конкретика. Пришлось вспоминать школьную программу английского языка и обращаться к зарубежным источникам. Нужные мне основы для конкретно моего приложения почерпнул из видеокурсов от автора: “Wilmer Lin”.

В итоге, потратив на обучение около трех месяцев, в середине февраля 2018 года приступил к написанию первого кода для своей будущей игры.

Тернистый путь новичка


Разработка игры шла с переменным успехом, временами грозя зайти в тупик. Первой «неразрешимой», как мне тогда казалось, проблемой стала реализация движения фигур. Вроде все просто, тыкаешь в фигурку пальцем и перетаскиваешь, куда нужно. Но на практике я потратил кучу времени, чтобы выяснить, как это можно реализовать в коде.

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

Потом началась «головная боль» с разворотом фигур и их зеркальным отображением, проверкой игрового поля на «полное и правильное заполнение» и другие нюансы.

Дизайн


Дизайн игры тоже дался не легко. Навыков в этом деле у меня немного, поэтому пришлось делать, переделывать и снова делать-переделывать…

Конечно, можно было заказать дизайн у профессионалов, но… money, money, money…
Надеюсь, при разработке следующих приложений у меня уже будут свободные средства для оплаты дизайнера.

image

Особенно стоит отметить иконку. Делал ее долго и упорно, и, в итоге, получилась такая:

image

Посмотрю, как она себя проявит. У кого из читателей «глаз на это дело наметан», подскажите, пожалуйста, если что-то не так.

Звуки


Поиск подходящих для игры звуков – это долгий процесс. И он очень долгий, если Вы ищите бесплатный контент. Как Вы понимаете, я именно этим и занимался. В итоге, нужные мне звуки я нашел на сайте “Freesound”, а фоновую музыку скачал с “Asset Store” на Unity. По условиям лицензии, пришлось разместить информацию об авторах в игре. Сделал для этого отдельное всплывающее окошко в меню настроек. Думаю, это допустимая плата за халявный контент…

Переделки


Отдельно стоит затронуть тему планирования. Оно необходимо, и даже очень, но почему-то все сразу не продумывается. Я пытался поступить «по-умному»: сначала сделал несколько уровней, проверил, выверил, и все мне в них понравилось… пока я не доделал все оставшиеся уровни. И тут меня осенило… В итоге, пришлось вносить изменения вручную на каждом из 100 уровней, а потом еще раз, и еще раз, и еще… И когда уже все было готово, и игра прошла публикацию, появилась новая идея, как ее можно дополнить…

В общем, планирование дело нужное, но тоже требует большого опыта.

Монетизация


Игру сразу решил делать бесплатной, со встроенной рекламой и внутриигровыми покупками, а также вознаграждениями за просмотр рекламы. Покупки – это возможность отключить рекламу, а также приобретение бонусов, которые продлевают время, отведённое на прохождение уровня. Бонусы также можно получить за просмотр рекламы.

Рекламу встроил через SDK от «Appodeal». Надеюсь, что положительные отзывы о данной компании окажутся правдивыми, и мы будем с ними долго и плодотворно сотрудничать. Да, было бы еще кому эту рекламу смотреть…

Тестирование и публикация


Рабочая версия игры опубликована в «Google Play» утром 9 мая. Такая вот маленькая победа. Если не считать времени на обучение основам, то на разработку самой игры ушло около 3-х месяцев. Не знаю, много это или мало для игры такого класса, как у меня, но для себя понимаю, что теперь что-то подобное могу сделать уже за более короткие сроки.

Решил сразу опубликовать рабочую версию, так как понимал, что кроме друзей игру пока никто не увидит. Их советы и замечания помогли изменить игру в лучшую сторону. В частности, изменил кнопку зеркального отражения фигуры.

Было
image

Стало
image

Мне вот казалось, что и предыдущий вариант кнопки был понятен… Но со стороны виднее, и хорошо, что переделал.

Также добавил в игру перевод на русский язык. Изначально все писал на английском, так как посчитал, что слов в игре мало, и английского языка будет достаточно. Теперь же самому приятнее, что в игре отображается «Уровень пройден!», а не «Level completed!». Еще, по совету друзей, добавил в игру небольшое обучение. Надеюсь, что его будет достаточно, чтобы освоиться в игре тем, кто захочет в нее поиграть.

Продвижение


Думаю, что создание игры – это только половина дела. Вторая половина – это продвижение, которым я на данный момент еще не занимался. Честно говоря, сейчас есть определенные опасения, получится ли раскрутить игру и тому подобное… Но что делать, нужно и это в себе побороть и двигаться к успеху.

Помимо «Google Play», разместил игру еще на «Яндекс.Store», но что-то мне подсказывает, что он не особо активен.

Еще пытаюсь попасть в «GetJar», пока висит на модерации.

Планирую, в первую очередь, использовать для продвижения заказные обзоры на «YouTube». Читал во многих статьях, что это весьма эффективный метод. Сейчас составляю список и пишу авторам каналов для ознакомления с условиями сотрудничества.

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

Итоги


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

Разработка игры – дело не легкое, но весьма интересное. Так что, если есть желание – дерзайте! Всем огромное спасибо за внимание! Буду рад Вашим комментариям!

Комментарии (58)


  1. Peregrinus
    22.05.2018 13:48
    -1

    Дорогу осилит идущий. Молодец! Успехов вам!


    1. AVKoGames Автор
      22.05.2018 13:56
      -1

      Спасибо!


      1. kartollika
        22.05.2018 16:22

        Можно ссылку на Google Play? Очень уж заинтересовало)


        1. AVKoGames Автор
          22.05.2018 16:23

          Можно, если модераторы не запретят:
          play.google.com/store/apps/details?id=com.AVKoGames.BlocksAndShapes.Colors


  1. Flakky
    22.05.2018 15:59
    +1

    и тут выяснил, что есть такая замечательная «штука», как «Unity3d»

    Поискали бы чуть получше и обнаружили, что есть такие замечательные вещи, как CoronaSDK, GameMaker или Construct хотя бы. В отличии от юнити, они для таких игр (2D то есть) и предназначены, да и легче.

    Unity3D все же больше на 3д, несмотря на то, что 2д тоже можно. Просто с тем же успехом могли взять Unreal Engine, на нем вообще язык учить не обязательно, там есть визуальное программирование, которое идеально для новичков. Но все же это не целесообразно брать такие движки для таких простых задач.

    А так поздравляю!)

    Кстати попробуйте ещё выложить на Amazon'овский магазин. Там активность достаточно хорошая. А про раскрутку, то, к сожалению, загрузки пропорциональны затратам. Так что это закупка трафика, покупка статей на 4pda, посты в соц. сетях и так далее. Ну и конечно релиз постепенный, не сразу на мир, а потихоньку, с переводом на нужные языки и докупкой рекламы с трафиком на конкретные регионы.


    1. AVKoGames Автор
      22.05.2018 16:21

      Я, честно говоря, рад, что немного в C# разобрался, хоть на это и ушло определенное время. И Unity мне тоже очень понравился. Теперь хоть есть от чего отталкиваться. Для 3D игры идея тоже есть, но это несколько позже…

      Спасибо за советы и информацию! Буду осваиваться потихоньку. )


      1. danzalux
        22.05.2018 16:44

        Как раз недавно интересная статья на хабре была про Корону:
        habr.com/post/349432
        «Как примерить корону»


        1. danzalux
          22.05.2018 18:18

          Ох…
          Кто-то не поленился, в профиль зашёл и в и так нулевую карму минусанул даже :(
          За коммент с линком? Ну что за люди…
          Теперь ни статью написать, ни комментарий оставить.


          1. Feelnside
            22.05.2018 20:57

            Не боись, все под контролем :). Возможно кто-то сделал это из-за навязывания короны вместо Unity.

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


            1. danzalux
              23.05.2018 19:37
              +1

              Мерсибо!
              Да я ж никому не навязываю, я ж для расширения общего кругозора :)
              (ну и PapaBubaDiop тоже отличную статью написал по этому поводу)


              1. demonit
                25.05.2018 08:02

                да не расстраивайся — у меня часто так… вроде ни чего крамольного не сказал, а заминусовали… ты привыкнешь :)


    1. MihaOo
      23.05.2018 10:58

      Есть еще Defold, который так же ориентирован на 2D. Если не ошибаюсь, есть возможность сборки под все платформы. Плюс разобраться в Lua должно быть не сложно, останется только покопаться в API


  1. danzalux
    22.05.2018 16:22

    НапишИте пожалуйста поподробнее о процессе разработки, с чем пришлось столкнуться, как решали, например, таскание фигурок? Возможно у вас есть код игры на гитхабе?
    (Я недавно начал кодить на C# и был бы оч признателен за примеры)


    1. AVKoGames Автор
      22.05.2018 16:54
      +1

      Код игры я выкладывать не готов. Думаю, он у меня далек от «правильного».

      Таскание фигурок решил через интерфейсы IPointerDownHandler, IDragHandler, IPointerUpHandler, конкретно само перемещение через Сamera.main.ScreenToWorldPoint(eventData.position). Но там нюансы всякие.
      Я, честно говоря, боюсь даже что-то объяснять, так как не уверен в правильности используемой мною терминологии.


      1. lostpassword
        22.05.2018 18:01

        Думаю, он у меня далек от «правильного»
        Если это действительно единственное, что вас останавливает, то выкладывайте)
        В худшем случае Вы получите несколько негативно-насмешливых комментариев; с другой стороны, могут попасться действительно полезные советы.


      1. danzalux
        22.05.2018 19:04

        Вот как раз в ньюансах-то «дьявол и кроется»! :)))
        Будет очень классно, если вы всётаки решитесь хотя бы часть кода показать, быть может в даже в отдельной статье — я тоже начинающий с C# и Юнити :)


        1. AVKoGames Автор
          22.05.2018 19:59
          +1

          Хорошо, я подумаю, что можно сделать в этом направлении.


  1. AVKoGames Автор
    22.05.2018 16:28

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


    1. RussianXIII
      22.05.2018 17:09
      +1

      Да ничего страшного, бывает =) Дорого да, но модерации не стоит боятся, она не такая страшная — как о ней говорят. Тем более, если в начале не пройдете — Apple дает развернутый ответ почему.


      1. AVKoGames Автор
        22.05.2018 17:17
        +1

        Да, думаю, в ближайшее время изучу этот вопрос. Спасибо!


    1. Feelnside
      22.05.2018 21:04

      100$ в год, можно отнять от бюджета на рекламу. Хотя в App Store ещё сложнее набрать установки. В Google Play с этим делом все обстоят куда лучше, да и реклама на ресурсах с уклоном на iOS гораздо дороже, чем в Android, вот такая вот беда.

      Другой момент, в iOS более платежеспособная аудитория, но её набрать конечно же гораздо сложнее.


      1. AVKoGames Автор
        22.05.2018 21:08

        Приятно Вас здесь «видеть». Читал Ваши статьи, и кое-что из описанного в них опыта взял на заметку.

        Спасибо за информацию по iOS.

        Как продвигается работа над новой игрой?


        1. Feelnside
          22.05.2018 21:28

          Хех, рад, что статьи принесли хоть какую-то пользу!
          P.S. — работа идет, думаю в сентябре-октябре сделаю новую статью по продвижению, с уже гораздо большим опытом. Так же думаю стоит как-нибудь уделить время да написать статью про монетизацию. Тоже очень важный момент. Можно хорошо раскрутить игру, но если монетизация плохая — хороших результатов вряд ли получится достичь.


          1. AVKoGames Автор
            22.05.2018 21:51
            +1

            Да, эта тема актуальна. Думаю, многим здесь будет интересен и полезен опыт тех, кто уже на себе проверил различные способы монетизации.
            Тут еще такой момент, что не в каждой игре большие возможности по ее внедрению.
            Я, например, у себя в игре вижу еще только один способ из не реализованных — это подсказки по прохождению уровня. Нужно как-то внедрить их будет.


            1. andrew911
              23.05.2018 13:12

              Можно запустить эксперименты с иконкой еще. В текущей очень много всего, возможно сделать фоновые клетки более приглушенными или еще как-то сделать ее понятнее.


              1. AVKoGames Автор
                23.05.2018 13:33

                Да, над иконкой надо поработать. Проблема в том, что мои умения в этом весьма скудны. Спасибо за совет.


          1. andrew911
            23.05.2018 13:10

            Блога по разработке нет? ИНтересно следить за прогрессом.
            По поводу AppStore были примеры когда за счет фичера игры достигали отличных результатов по скачкам и доходам.


            1. AVKoGames Автор
              23.05.2018 13:34

              Нет, еще и блог вести времени не хватит. Может, в будущем.
              А такие блоги обычно размещают?


              1. danzalux
                23.05.2018 19:41

                А пускай блог тут на хабре будет :)
                (Даже если расширятся за пределы РФ — тут на хабре ж модную новую фичу с переводами сделали!)


            1. Feelnside
              23.05.2018 13:38

              Фичеринг эпл да, это здорово, главное умудриться его словить :)


  1. Onym
    22.05.2018 18:19

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


    1. AVKoGames Автор
      22.05.2018 18:19

      Я так понимаю, это стандартный набор, если в приложение встроена реклама через сервис Appodeal


      1. Onym
        22.05.2018 19:19

        Спасибо.
        Успехов Вам. Скачиваний, покупок, положительных отзывов и дальнейшего роста.


        1. AVKoGames Автор
          22.05.2018 19:44

          И Вам спасибо )


  1. totorialman
    22.05.2018 19:43

    Игра прикольная, понятная) Я так понимаю она весит довольно много из-за большого количества уровней и отчасти из-за юнити?


    1. AVKoGames Автор
      22.05.2018 19:51

      Я думаю, это частично из-за Unity и то, что apk я сделал FAT (ARMv7 + x86).
      Пытался выяснить, как загружать на «Google Play» два apk к одному приложению, но так и не смог этого сделать.
      Да и сами «гугловцы» в своей рекомендации пишут, что apk весом до 100 mb лучше делать в FAT.
      Уровни там особо не увеличивают вес.


      1. totorialman
        22.05.2018 20:27

        Спасибо. Желаю удачи в продвижении)


      1. Feelnside
        22.05.2018 21:24
        +1

        С размером вы можете глянуть через консоль что и как занимает. Просто соберите билд, потом откройте табу Console, в правом верхнем углу над консолью будет маленькая кнопка для вывода контекстного меню. Кликните по ней и нажмите Open Editor Log. В нем можно будет отыскать что-то вроде подобной информации:

        Build Report
        Uncompressed usage by category:
        Textures 51.0 mb 15.3%
        Meshes 8.3 mb 2.5%
        Animations 96.7 mb 29.0%
        Sounds 16.9 mb 5.1%
        Shaders 5.8 mb 1.7%
        Other Assets 4.1 mb 1.2%
        Levels 13.2 mb 4.0%
        Scripts 2.2 mb 0.7%
        Included DLLs 11.1 mb 3.3%
        File headers 556.8 kb 0.2%
        Complete size 333.5 mb 100.0%

        По нему можно будет с большего понять, в каком направлении стоит поработать. Это конечно Uncompressed Size, но тем не менее.

        Например если много занимают текстуры, можно посмотреть, установлена ли компрессия для текстур. Я например использую Crunched ETC, иногда просто Compressed ETC (порой на некоторый текстурах Compressed ETC меньше жрет памяти, чем Crunched, хотя Crunched в 90% случаях лучше в плане размера.

        Звуки так же стоит пересматривать, порой без компрессии они очень даже много жрут памяти.

        В общем и целом, в Unity можно достаточно мощно сократить размер билда.


        1. AVKoGames Автор
          23.05.2018 09:53

          Спасибо за подсказку. Посмотрел, у меня там особо сжимать нечего…
          Помню, что размер apk сильно увеличился после внедрения SDK от Appodeal, где-то на 8 — 10 mb.


          1. AVKoGames Автор
            23.05.2018 13:32

            А Вы ETC или ETC2 использовали? У меня на ETC текстуры изменяются…
            После сжатия спрайтов через Crunched ETC2 размер установленного приложения уменьшился где-то на 4 mb ) Не много, но все же.


            1. Feelnside
              23.05.2018 14:05

              Когда как, в основном использую ETC, для текстур с альфа каналом беру ETC2.

              Если немного поговорить о формате:
              ETC это стандарт OpenGL ES 2.0, иными словами он поддерживается грубо говоря на всех андроид устройствах.

              ETC2 это обновленная версия, пришла вместе с OpenGL ES 3.0. Для обычного человека разница только в качестве текстуры, хотя в Unity используется ETC2 8bit, при сжатии в ETC2 вместе с качеством будет немного увеличиваться и размер текстуры по сравнению с ETC.

              К сожалению, не все Android устройства поддерживают OpenGL ES 3.0 (как и формат сжатия ETC2), как результат, если при запуске игры обнаружится, что устройство не поддерживает данный формат сжатия, то текстуры будут распакованы в RGBA32 в run time. Это приведет к тому, что будет занято больше оперативной памяти и снизится немного производительность, ибо на GPU придется отсылать текстуру, где каждый пиксель будет 32bit (вместо 4bit в ETC и 8bit в ETC2).

              Глянуть какие форматы поддерживают те или иные устройства можно здесь.


              1. AVKoGames Автор
                25.05.2018 15:31

                Спасибо за информацию!
                Проверил игру на android 4.1 — работает нормально, хоть он вроде и не поддерживает OpenGL ES 3.0 и ETC2. Видимо, текстур в игре не много, поэтому формат сжатия не влияет на производительность.


  1. kiloT
    23.05.2018 13:56

    А есть статистика, стоит ли тратить время и выкладывать игру в остальные anroid-сторы(яндекс, xiaomi и т.п.), отличные от google play? Тоже планирую в скором времени релизить игру, хочется собрать больше информации.


    1. AVKoGames Автор
      23.05.2018 14:30

      Я помимо «Google Play» пока опубликовал в Яндекс.store, Slideme и GetJar. Скачиваний там нет и сами по себе они вряд ли появятся. Но лучше пусть там тоже будет, мало ли что )


      1. demonit
        25.05.2018 08:27

        на счет яндекс.стора можно не парится — он мертв, трафика там практически нет


      1. demonit
        25.05.2018 08:33

        Одно из самых популярных моих приложений (в гуглоплее 500к+ установок) набирает 1-2 установки в я.сторе


        1. AVKoGames Автор
          25.05.2018 12:51

          Понятно, а на GetJar и SlideMe размещали?


          1. demonit
            25.05.2018 14:08

            нет, не размещал — скажу даже больше… ни разу не слышал о каком-либо хоть сколько положительном эффекте от размещения на них, но, может быть, это я такой темный :)


          1. demonit
            25.05.2018 14:16

            для пробы закинул по одному приложению в каждый


  1. YemSalat
    24.05.2018 06:22

    Особенно стоит отметить иконку.

    Думаю в ней основная проблема — слишком много мелких деталей (тонкие линии и т.п.), которые в размере 1х1см будут совершенно не различимы.


    1. Feelnside
      24.05.2018 07:19

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


      1. YemSalat
        24.05.2018 12:52

        Есть вкусовщина, а есть объективные вещи. Тем более тут сам автор попросил: «У кого из читателей «глаз на это дело наметан», подскажите, пожалуйста, если что-то не так.»
        А убедиться в том что я сказал достаточно просто — попробуйте уменьшить иконку в 3-4 раза:


        1. AVKoGames Автор
          24.05.2018 15:29

          Спасибо за комментарии.
          С иконкой нужно экспериментировать, тут спору нет. Еще бы иметь представление о том, что привлечет людей. Я, когда эту делал, ориентировался на иконки популярных игр-головоломок, где тоже есть фигуры. В основном они все схожи.
          Менять фигуры на иконке на более «простые» не очень хочется — тогда они будут отличны от тех, что в игре. Только если в целом пересмотреть содержимое иконки — но пока нет толковых идей в этом направлении.


          1. YemSalat
            25.05.2018 01:34

            Может просто вынести на первый план элементы из самой игры, и сделать фон монотонным:

            (^ это просто скриншот вашего скриншота :)


            1. AVKoGames Автор
              25.05.2018 12:50

              Спасибо за идею, попробую ее развить.


  1. tihomirovaaleksej
    25.05.2018 12:44

    Нравится ваш подход к разработке, и энтузиазм, успехов!


    1. AVKoGames Автор
      25.05.2018 12:46

      Спасибо! Без энтузиазма тут никак, только на нем пока все и держится )


      1. demonit
        25.05.2018 14:22

        энтузиазизм — это хорошо, но почему-то, время от времени хочется кушать