Пользователь
0,0
рейтинг
17 февраля 2015 в 17:37

Разработка → Средства, которые позволили нам ускорить разработку игры из песочницы

Вид на Котиков из редактора Unity

Раньше я работал над созданием мобильных игр как гейм-дизайнер или продюсер, но сам еще никогда профессионально не писал код. Несколько месяцев назад мне захотелось это исправить и сделать игру своими руками. Так, спустя два месяца работы, силами трех человек в App Store и Google Play появились «Котики». В своей истории я хочу поделиться приобретенным опытом и рассказать о средствах разработки, которые позволили нам быстро сделать эту игру.

Пару слов о подготовительном этапе работы. Прежде чем начинать разработку любого проекта нужно определиться с идеей и командой. Я решил не рисковать и сделал ставку на простой геймплей и популярный сеттинг. В результате недолгих размышлений коты стали центральными персонажами игры, а в качестве механики была выбрана несколько переработанная идея Bejeweled Blitz. Попутно вспомнилась забавная кошачья привычка залезать в пустые коробки — и вся концепция окончательно сложилась. Затем я нашел единомышленников и команда пополнилась талантливым художником и серверным программистом.

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

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

Первый набросок котиков


Игровой движок — основа всего


Сейчас средств разработки игр предостаточно, я же не пожалел, что выбрал Unity:
  • Бесплатного функционала движка хватает для разработки игры вроде нашей;
  • Большое интернет-сообщество, можно найти много видео-уроков, почти все нужные плагины уже готовы;
  • Один код — несколько платформ. Мы делали ставку на Web, iOS и Android;
  • Основной язык разработки — C#, остаточные знания которого у меня сохранились с университетских времен.

С движком я учился работать по видео-урокам. Различных курсов довольно много на Youtube, а больше всего мне понравились вот эти. Ну и обязательно посмотрите стандартные уроки от разработчиков Unity.

Встречают по интерфейсу


Обычно функционал создания интерфейса входит в игровой движок, но у Unity исторически это было слабой стороной. Почти все использовали для этого плагин NGUI. Я его тоже изучал, но мне повезло — к моменту старта разработки игры Unity выпустила обновление 4.6, где реализована новая система создания интерфейсов — очень рекомендую использовать именно ее. Она простая, функциональная и бесплатная. Именно благодаря правильному использованию таких технологий удается делать интерфейсы, отображение которых не зависит от размеров и пропорций экрана, что очень важно для работы над мобильной игрой.

Кроме построения самого интерфейса важно было сделать его отзывчивым, «живым». Даже такие, казалось бы, мелочи, как реакция кнопки на касание или красивый спецэффект при активации супер способности кота, улучшили впечатление от игры. Для этого кроме стандартных средств я использовал бесплатный плагин iTween, позволяющий просто и быстро создавать плавные анимации. А около половины спецэффектов приобрел в виде готовых паков, например, таких как FX Mega Pack.

FX Mega Pack


Звуки и музыка тоже неотъемлемая часть интерфейса. Здесь мы смогли обойтись уже готовыми произведениями, приобретя их за относительно невысокую цену. Рекомендую для поиска Premiumbeat и стандартный Unity Asset Store.

Социализация игроков


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

Наилучший способ регистрации игрока — использовать готовые сервисы, такие как Apple Game Center, Google Play Games и Facebook. Самостоятельно управлять этим процессом, требовать от игрока ввести почту и запомнить пароль — мера, к которой стоит прибегать только в самом крайнем случае. Мы выбрали Facebook, руководствуясь тем, что:
  • Он работает на всех интересующих нас платформах и популярен в большинстве стран мира;
  • В Facebook обычно находятся все друзья игрока; чем лучше будет реализовано взаимодействие с ними, тем сильнее будет эффект «сарафанного радио», т.е. больше людей узнают о вашей игре. В «Котиках» мы реализовали возможность делиться достижениями и соревноваться с друзьями;
  • Для работы с соцсетью написан хороший Unity-плагин, и все это дружит с Parse, подробнее о котором расскажу ниже.

Соревнование друзей в Котиках


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

Серверная поддержка


Если вам не требуется сложная серверная логика, а нужен лишь функционал базы данных для хранения игрового прогресса пользователя и настроек, воспользуйтесь готовой Backend as a Service платформой. Так поступили мы. Мы выбрали и остались довольны облачным сервисом Parse. По сути для нас это база данных с удобной админкой и множеством дополнительных функций, вроде упрощенной идентификации через Facebook и push-уведомлений. Бесплатный лимит у Parse довольно большой и есть хороший Unity-плагин. Для старта нам этих функций хватало. Лишь потом, когда потребовалась дополнительная логика для обслуживания турнира и чемпионата, мы развернули собственный сервер, но от Parse пока не планируем отказываться.

В итоге архитектура игровой системы сейчас упрощенно выглядит так:

Архитектура Котиков


Монетизация


Мы сразу решили пойти по пути free-to-play. Игру по этой модели проще продвинуть на мобильном рынке, особенно начинающему разработчику. Но даже если вы сделаете игру платной, советую вам познакомиться с удивительным миром встроенных покупок. В Google Play продать платный продукт нереально из-за пиратства, а защитить покупку внутри игры гораздо проще.

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

Магазин в Котиках


Для реализации функции продажи рекомендую плагины от Prime31, они платные, но зато просты в интеграции и работают.

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

Защищаемся от взлома


Игроки бывают разные, и непорядочность одних может помешать наслаждаться игрой всем остальным. В наших силах попытаться защитить:
  • локальные данные игрока (сохраненный прогресс);
  • переменные в памяти (например, количество набранных очков в процессе игры);
  • механизм встроенных покупок.

Anti-Cheat Toolkit позволил быстро реализовать шифрование, что решило первые две задачи. Защиту покупок лучше сделать на стороне сервера, особенно если он и так уже есть. Однако проверку подлинности можно сделать и на стороне игры. В случае с App Store нужно обратиться к их серверу, в случае Google Play это делается прямо на клиенте. Кстати, недавно здесь была статья, о том как сделать защиту своими руками.

Не забываем про локализацию


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

Анализируем результаты


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

Статистика Котиков в GameAnalytics


Я рекомендую использовать две системы аналитики в проекте. Это поможет вовремя обнаружить ошибку подключения одной из них, т.к. вы быстро заметите, если данные будут расходиться. В качестве второй аналитики мы используем Google Analytics, у нее большой бесплатный лимит. Она предоставляет более подробные данные, например, можно видеть, откуда игроки пришли в вашу игру. Опять же, для Unity уже есть хороший плагин.

Кроме внутренней аналитики вам потребуется отслеживать статистику продаж. После того, как приложение будет выпущено и пойдут первые покупки, пригодится сервис AppAnnie, позволяющий агрегировать данные из всех магазинов и рекламных сетей. Это действительно удобно — вся статистика в одном месте, не говоря уже о возможности отслеживать места в различных топах.

Сервера и промо-сайт


Если у вас есть серверное приложение, то его где-то нужно запустить. Лучше бесплатно. Лучше на хорошем железе. Все и сразу, конечно, не бывает, но я нашел лазейку в виде программы поддержки стартапов от Microsoft. Если вы только начинаете свое дело, то они предоставляют вам серверные мощности Azure на $9000 в год. На практике вы получите 5 приличных серверов бесплатно на 3 года. На мой взгляд это отличное предложение.

В том числе на Azure можно захостить промо-сайт игры. Он пригодиться, если кто-то захочет погуглить (например, журналисты), ну и для разных других нужд. Например, мы используем его как лендинг для Share-постов, которые игроки делают в Facebook. Сайт Котиков мы сделали тоже бесплатно на базе WordPress.

Затраты


Для того, чтобы выпустить первую версию игры, мы втроем потратили 2 месяца личного времени и порядка $270 на покупку музыки и Unity-плагинов. Я считаю эти затраты более чем приемлемыми. Покупка каждого плагина или готового контента оправдала себя, ведь это сэкономленные месяцы разработки.

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

Буду рад ответить на вопросы в комментариях.

Update: В комментариях коллеги предложили еще несколько полезных плагинов. Я их не пробовал, но судя по описанию, они стоят упоминания:
  • DOTween — более шустрый аналог iTween
  • TextMeshPro — если возможностей стандартных текстов uGUI будет недостаточно
  • I2 Localization — чтобы не писать свою систему локализации
Сергей Копов @beststream
карма
5,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

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

  • 0
    Тексты из таблицы в формате csv подгружаются в игру автоматически. Если будет интересно, расскажу в комментариях подробно, как это работает.

    Интересно. Поподробнее, пожалуйста.
    • 0
      Посмотрите I2localization, очень удобный инструмент. Платный, но много чего умеет.
      • 0
        До того как изобретать велосипед искал, конечно, что-то подходящее, но не нашел. Первое время использовал Google Sheets For Unity, но потом оказалось, что плагин не работает на Webplayer. У I2localization в описании упоминаются Spreadsheets — это Google Spreadsheets?
        • 0
          Да. Она поддерживает вкладки в таблицах, например. Ручной/автоматический импорт локализации (автоматический — когда игра уже в продакшне)
          • 0
            Звучит интересно. Если б не было своего решения, попробовал бы
    • 0
      Написали небольшой скрипт, который автоматически редактор Unity запускает при сборке. Он подгружает актуальную версию таблицы. Потом она уже в коде парсится и внутри игры хранится обычными массивами ключ+язык+значение. Кроме прямого обращения из кода, я еще написал компонент, который работает в паре с стандартным компонентом Text, и когда он становится активен (видим), туда подставляется локализованный текст. Кроме прочего, это позволяет переключать язык в игре налету
      • 0
        Мы сделали несколько иначе — написали скрипт для GoogleDocs, который отдаёт данные в нужном формате. В редкторе же просто в меню дополнительный пункт — «Download Languages». Ну а сейчас ещё с десоток пунктов — скачать разные настройки — параметры юнитов, ассортимент магазина, всякие настройки — в общем всё что вынесено в гугл доки.
        • 0
          Как вариант, да. На счет настроек, я было тоже сначала хотел вынести их в гугло таблицы, но потом понял, что это не удобно в случае, если геймдизайнер (или кто то другой, кто их часто меняет) имеет доступ к редактору Unity. Если же программисты не дают доступ, то да, это очень удобно
          • 0
            В нашем случае просто куча настроек, которые лучше видеть в виде таблицы — то есть к примеру куча юнитов, у каждого разные виды атак, защит и т.п. В редакторе это в виде таблицы посмотреть невозможно, поэтому вынесли в гуглдоки. А вообще, конечно, всё зависит от проекта и предпочтений разработчиков.

            Ещё можно из инструментов упомянуть TextMeshPro — любой шрифт любого размера, бес пикселизации, с разными эффектами.
            • 0
              Хотел его посмотреть, а то меня сильно не устраивает отсутствие нормального аутлайна у текcтов uGUI
  • 0
    Стоп а юнити что бесплатная для мобильных устройств? на сколько я помню 500 баксов было же
    • +2
      Бесплатная, с ограниченным набором фич.
  • +1
    А в двух словах — как прошло сражение с uGUI, ведь она еще достаточно сырая, и по набору функционала до NGUI ей далеко. Были вещи коорых вам не хватало и приходилось реализовывать вручную? Были неприятности которые приходилось затыкать/обходить?
    • +1
      Сражения не было, сразу случилась любовь. То что есть, там работает хорошо. Якоря сделаны сильно проще и гибче. Не хватает двух вещей
      1) Если хочешь аутлайн на текст, то можно сделать только в 1 пиксель, если больше, то получается не красиво
      2) Нельзя задать фиксированный размер текста так, чтобы при его выходе за пределы заданной области эта область сама бы расширялась вместе с родительской картинкой. Так было бы удобно делать на кнопках
  • 0
    Не используйте iTween, тут на хабре была уже статья. Он страшно томозной. Мы в одном проекте использовали, сильно пожалели. Лучше HOTween или другой твинер.

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

    В остальном подписываюсь под рекомендациями, многое делаем так же (Parse, локализацию через Google Docs — только скачиваем в своём формате, плюс сча кучу разных таблиц с настройками из Гуглдоков прямо в игру импортим, для сетки можно рекомендовать Photon).
    • 0
      У меня с iTween проблем не было. Дайте пожалуйста ссылку на упомянутую статью. HOTween посмотрю, спасибо

      Prime31 — на счет дорого я бы не сказал, большая часть плагинов стоит в районе $20. Я видел в сторе бесплатные, несколько даже пробовал, но они у меня не заработали. Были большие надежды на OpenIAB, но как то он не завелся. Скорее всего я где то затупил

      Photon мне тоже очень нравится. Правда я с ним только прототипы делал, не знаю как он под нагрузкой живет
      • 0
        habrahabr.ru/post/220837/ — там в комментах почитай, плюс автор там видео выложил с тестами.

        Prime видимо сча снизил цены, я покупал по 40-70 пару лет назад.
        • 0
          В общем посмотрел, почитал — да, все рекомендуют DOTween. Надо будет попробовать обязательно. Спасибо
  • +1
    Premiumbeat. Знакомая, до боли, заглавная тема.
  • 0
    Дайте уже ссылку на поиграть!)
    • 0
      Я на хабре первый раз и насколько знаю, ссылки нельзя давать пока не попросят. Вот вы попросили — даю :) Это котики на Google Play, а вот это котики в Apple App Store
      • 0
        Оценивали возможность судебного иска от хозяйки grumpy cat?
        • 0
          Оценивали, да, поэтому и не стали его использовать. А если вам кажется, что один из наших котиков на него похож, то это вам только кажется ;)
  • +1
    Если посчитать, то на игру потрачено около 14000$
    • 0
      Если пересчитать затраты времени, то да, даже больше
    • 0
      А как Вы считали?
      • 0
        Ну как, если бы команда работала не над своим проектом, то заработала бы N денег. Можно считать, что эти N денег мы вложили в разработку
  • 0
    Спасибо за упоминание моего плагина (Anti-Cheat Toolkit)!
    • +1
      Вам спасибо! Хорошая штука, стоит своих денег

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