Кто на новенького? Мой первый опыт в разработке игры – от идеи до публикации

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». Читал во многих статьях, что это весьма эффективный метод. Сейчас составляю список и пишу авторам каналов для ознакомления с условиями сотрудничества.

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

Итоги


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

Разработка игры – дело не легкое, но весьма интересное. Так что, если есть желание – дерзайте! Всем огромное спасибо за внимание! Буду рад Вашим комментариям!
Поделиться публикацией
Комментарии 62
    +1
    Дорогу осилит идущий. Молодец! Успехов вам!
    +2
    и тут выяснил, что есть такая замечательная «штука», как «Unity3d»

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

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

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

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

      Спасибо за советы и информацию! Буду осваиваться потихоньку. )
        +1
        Как раз недавно интересная статья на хабре была про Корону:
        habr.com/post/349432
        «Как примерить корону»
          –1
          Ох…
          Кто-то не поленился, в профиль зашёл и в и так нулевую карму минусанул даже :(
          За коммент с линком? Ну что за люди…
          Теперь ни статью написать, ни комментарий оставить.
            0
            Не боись, все под контролем :). Возможно кто-то сделал это из-за навязывания короны вместо Unity.

            Вообще Unity хорош тем, что если автор задумает создать 3д проект в будущем, то это будет уже гораздо легче, чем потом пытаться с короны спрыгнуть на другой движок.
              +1
              Мерсибо!
              Да я ж никому не навязываю, я ж для расширения общего кругозора :)
              (ну и PapaBubaDiop тоже отличную статью написал по этому поводу)
                0
                да не расстраивайся — у меня часто так… вроде ни чего крамольного не сказал, а заминусовали… ты привыкнешь :)
        0
        Есть еще Defold, который так же ориентирован на 2D. Если не ошибаюсь, есть возможность сборки под все платформы. Плюс разобраться в Lua должно быть не сложно, останется только покопаться в API
        0
        НапишИте пожалуйста поподробнее о процессе разработки, с чем пришлось столкнуться, как решали, например, таскание фигурок? Возможно у вас есть код игры на гитхабе?
        (Я недавно начал кодить на C# и был бы оч признателен за примеры)
          +1
          Код игры я выкладывать не готов. Думаю, он у меня далек от «правильного».

          Таскание фигурок решил через интерфейсы IPointerDownHandler, IDragHandler, IPointerUpHandler, конкретно само перемещение через Сamera.main.ScreenToWorldPoint(eventData.position). Но там нюансы всякие.
          Я, честно говоря, боюсь даже что-то объяснять, так как не уверен в правильности используемой мною терминологии.
            0
            Думаю, он у меня далек от «правильного»
            Если это действительно единственное, что вас останавливает, то выкладывайте)
            В худшем случае Вы получите несколько негативно-насмешливых комментариев; с другой стороны, могут попасться действительно полезные советы.
              0
              Вот как раз в ньюансах-то «дьявол и кроется»! :)))
              Будет очень классно, если вы всётаки решитесь хотя бы часть кода показать, быть может в даже в отдельной статье — я тоже начинающий с C# и Юнити :)
                +1

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

            +1
            Я тут случайно чей-то комментарий по неопытности отклонил. Прошу, прощения, там про App Store вопрос был.
            Я туда тоже хочу попасть, конечно, но там дорого и модерацию сложнее пройти. Так что, пока на реакцию скачавших посмотрю, а там видно будет.
              +1
              Да ничего страшного, бывает =) Дорого да, но модерации не стоит боятся, она не такая страшная — как о ней говорят. Тем более, если в начале не пройдете — Apple дает развернутый ответ почему.
                +1
                Да, думаю, в ближайшее время изучу этот вопрос. Спасибо!
                0
                100$ в год, можно отнять от бюджета на рекламу. Хотя в App Store ещё сложнее набрать установки. В Google Play с этим делом все обстоят куда лучше, да и реклама на ресурсах с уклоном на iOS гораздо дороже, чем в Android, вот такая вот беда.

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

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

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

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

                        0
                        Можно запустить эксперименты с иконкой еще. В текущей очень много всего, возможно сделать фоновые клетки более приглушенными или еще как-то сделать ее понятнее.
                          0
                          Да, над иконкой надо поработать. Проблема в том, что мои умения в этом весьма скудны. Спасибо за совет.
                        0
                        Блога по разработке нет? ИНтересно следить за прогрессом.
                        По поводу AppStore были примеры когда за счет фичера игры достигали отличных результатов по скачкам и доходам.
                          0
                          Нет, еще и блог вести времени не хватит. Может, в будущем.
                          А такие блоги обычно размещают?
                            0
                            А пускай блог тут на хабре будет :)
                            (Даже если расширятся за пределы РФ — тут на хабре ж модную новую фичу с переводами сделали!)
                            0
                            Фичеринг эпл да, это здорово, главное умудриться его словить :)
                    0

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

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

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

                          0
                          И Вам спасибо )
                      0
                      Игра прикольная, понятная) Я так понимаю она весит довольно много из-за большого количества уровней и отчасти из-за юнити?
                        0
                        Я думаю, это частично из-за Unity и то, что apk я сделал FAT (ARMv7 + x86).
                        Пытался выяснить, как загружать на «Google Play» два apk к одному приложению, но так и не смог этого сделать.
                        Да и сами «гугловцы» в своей рекомендации пишут, что apk весом до 100 mb лучше делать в FAT.
                        Уровни там особо не увеличивают вес.
                          0
                          Спасибо. Желаю удачи в продвижении)
                            +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
                              Спасибо за подсказку. Посмотрел, у меня там особо сжимать нечего…
                              Помню, что размер apk сильно увеличился после внедрения SDK от Appodeal, где-то на 8 — 10 mb.
                                0
                                А Вы ETC или ETC2 использовали? У меня на ETC текстуры изменяются…
                                После сжатия спрайтов через Crunched ETC2 размер установленного приложения уменьшился где-то на 4 mb ) Не много, но все же.
                                  0
                                  Когда как, в основном использую 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).

                                  Глянуть какие форматы поддерживают те или иные устройства можно здесь.
                                    0
                                    Спасибо за информацию!
                                    Проверил игру на android 4.1 — работает нормально, хоть он вроде и не поддерживает OpenGL ES 3.0 и ETC2. Видимо, текстур в игре не много, поэтому формат сжатия не влияет на производительность.
                          0
                          А есть статистика, стоит ли тратить время и выкладывать игру в остальные anroid-сторы(яндекс, xiaomi и т.п.), отличные от google play? Тоже планирую в скором времени релизить игру, хочется собрать больше информации.
                            –1
                            Я помимо «Google Play» пока опубликовал в Яндекс.store, Slideme и GetJar. Скачиваний там нет и сами по себе они вряд ли появятся. Но лучше пусть там тоже будет, мало ли что )
                              0
                              на счет яндекс.стора можно не парится — он мертв, трафика там практически нет
                                0
                                Одно из самых популярных моих приложений (в гуглоплее 500к+ установок) набирает 1-2 установки в я.сторе
                                  0
                                  Понятно, а на GetJar и SlideMe размещали?
                                    0
                                    нет, не размещал — скажу даже больше… ни разу не слышал о каком-либо хоть сколько положительном эффекте от размещения на них, но, может быть, это я такой темный :)
                                      0
                                      для пробы закинул по одному приложению в каждый
                                0
                                Особенно стоит отметить иконку.

                                Думаю в ней основная проблема — слишком много мелких деталей (тонкие линии и т.п.), которые в размере 1х1см будут совершенно не различимы.
                                  0
                                  С иконками помогут только А/Б тесты, настроить их можно в консоле разработчика. В моем прошлом приложении менял три иконки, всегда находился кто-то, кто скажет, что вся проблема в иконке. В результате из трех иконок вторая была самой лучшей по результатам А/Б теста.
                                    0
                                    Есть вкусовщина, а есть объективные вещи. Тем более тут сам автор попросил: «У кого из читателей «глаз на это дело наметан», подскажите, пожалуйста, если что-то не так.»
                                    А убедиться в том что я сказал достаточно просто — попробуйте уменьшить иконку в 3-4 раза:
                                      0
                                      Спасибо за комментарии.
                                      С иконкой нужно экспериментировать, тут спору нет. Еще бы иметь представление о том, что привлечет людей. Я, когда эту делал, ориентировался на иконки популярных игр-головоломок, где тоже есть фигуры. В основном они все схожи.
                                      Менять фигуры на иконке на более «простые» не очень хочется — тогда они будут отличны от тех, что в игре. Только если в целом пересмотреть содержимое иконки — но пока нет толковых идей в этом направлении.
                                        0
                                        Может просто вынести на первый план элементы из самой игры, и сделать фон монотонным:

                                        (^ это просто скриншот вашего скриншота :)
                                          0
                                          Спасибо за идею, попробую ее развить.
                                  0
                                  Нравится ваш подход к разработке, и энтузиазм, успехов!
                                    0
                                    Спасибо! Без энтузиазма тут никак, только на нем пока все и держится )
                                      0
                                      энтузиазизм — это хорошо, но почему-то, время от времени хочется кушать
                                    0
                                    Самая интересная (мне) тема вывода и отмывания легализации доходов к сожалению не раскрыта :(
                                      0
                                      Эта тема на данном этапе и не могла быть раскрыта.
                                      0
                                      О чем статья? – Вы потрудились нечто ценное сообщить огромной аудитории?
                                      Хабросообщество в целом смотрит добродушно и снисходительно на посты новичков, отважившихся на некие начинания, и даже великодушно находит для них слова поощрения.
                                      Однако, в данном случае, самое большое, что я могу сделать для Вас, это не минусовать пост и карму.
                                      Статьи игроделов вполне уместны на этом ресурсе, и я их сам читаю с большим любопытством и даже удовольствием, но это в том случае, если люди пишут что-то дельное, полезное из своего опыта, делятся идеями, рассказывают о неординарных решениях – пусть даже частных проблем–, об остроумных подходах в решении возникающих задач, о примерах своей или подмеченной у кого-то изобретательности при разработке…
                                      Что я могу почерпнуть из того, что отказались принять в школьную стенгазету?
                                      У меня осталось ощущение, что я вдохнул некое «амбре» с сомнительным душком саморекламы, рассчитывающей на «хаброэффект», и ощущение тревоги, что привлеченные Вашим примером завтра сюда хлынут еще некоторые количества воодушевленных свободой расслабленного самопиара «творцов».
                                      Я желаю Вам успеха в монетизации игры, и полагаю, что эта часть Вашей истории станет действительно интересной.
                                        0
                                        самое большое, что я могу сделать для Вас, это не минусовать пост и карму.

                                        Самое большое, что Вы могли сделать для меня — это вообще не заметить мою статью… )

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

                                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                        Самое читаемое