Опыт создания первой игры под Android на Unity

Опыт создания первой игры под Android на Unity Unity, Игры на Android, Gamedev, Длиннопост, Аркадные игры, Юмор

Доброго времени суток, дорогие пикабушники. Множество раз я читал истории успеха (и не очень) от разработчиков (и не очень) игр - и вот настала моя очередь рассказать, что да как. Что сделал, что не сделал, что получилось легко и быстро, а где затупил.

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

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

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

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

О знакомстве с Unity

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

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

Какое ПО выбрать?

Мой выбор пал на вариант: "сделай все сам и бесплатно". Для создания графики использую Blender (3D), Inkscape (векторная графика) и Gimp (растровая графика). Даже папку с рабочими файлами этих программ назвал аббревиатурой - BIG.

Unity использую в связке с Visual Studio 2015 (если в команде менее 5 разработчиков, то VS также бесплатна, насколько я понял из лицензионного договора). Ну и для обработки звуков полезен Audacity. Музыку на нем, вроде как, не напишешь, но в текущем проекте пока и не надо было.

Опыт создания первой игры под Android на Unity Unity, Игры на Android, Gamedev, Длиннопост, Аркадные игры, Юмор

Начало пути и выбор идеи

Чтобы вообще понять, чего ждать от Unity я нашел первый же урок из разряда "игра на Unity за час" и склепал свою первую поделку, в которой что-то падало сверху, нужно было уворачиваться, не получилось - проиграл. Установил на телефон, запустил, сыграл - блаженству не было предела: теперь ты знаешь, как можно сделать игру! Оставалось лишь сделать свою, и чтобы она была интересной...


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

Ключевым на этом этапе становится поиск действительно интересной идеи (чтобы не тратить время и силы на создание клона и так много раз клонированной какой-нибудь игры), и создание контента для игры с выбранной идеей. Под контентом я здесь подразумеваю модели, звуки, текстуры, алгоритмы и вообще все, что наполняет игру, делает из "игра про космические путешествия с управлением собственной командой" реальный игровой опыт путешествий в просторах космоса и налаживания взаимоотношений в коллективе NPC, которые никак не могут ужиться друг с другом.

Из полученного опыта: не стоит недооценивать затраты времени.

При создании первого проекта, когда еще нет опыта и многому приходится учиться, очень сложно оценить, как быстро получится сделать рабочий вариант игры. Я для себя вывел такие правила: если создаешь версию игры "для себя", чтобы понять понравится ли она хотя бы тебе, то время, за которое ожидаешь это сделать, можно домножать на 1,5 - 2. В мечтах все просто: добавим здесь кнопку, здесь противник будет двигаться обратно пропорционально квадрату синуса расстояния до игрока, здесь сделаем бонус, который добавляет +100 к скорости, но отнимает 100 от удачи - и игра станет бомбой. Но на практике обязательно вылезут какие-нибудь ошибки. Алгоритм поведения противников будет тупить, переменным будут присваиваться неожиданные значения, один и тот же кусок кода будет вести себя по-разному в зависимости от фазы луны. Для исправления всего этого неизбежного потребуется время, полученное после домножения на 1,5 - 2.

Если же создавать версию игры "для релиза", то рабочий процесс во многом упирается в работу с графикой и анимацией (модели должны уже быть полноценными, а не примитивами из версии "для себя") и зачастую сводится к: сделать -> проверить -> переделать -> проверить -> повторить. С ростом навыка повторять нужно будет реже. Ну и еще много времени уйдет на тестирование, оптимизацию и разного рода мелкие корректировки. В моем случае, реальные затраты времени превышали оценки раза в 3 или чуть больше.

Опыт создания первой игры под Android на Unity Unity, Игры на Android, Gamedev, Длиннопост, Аркадные игры, Юмор

После некоторых колебаний с выбором идеи, я остановился на следующей комбинации предварительных условий:

1) незамысловатый сюжет и мир игры

2) игра с управлением в одно касание - проста в реализации, хоть и ограничена в возможностях

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

4) желательно бесконечный игровой процесс, но с возможностью использовать результаты потраченного времени

3) юмор и приколы

Обо всем по порядку

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

Спустя некоторое время идея была реализована: лягушка - куб, мухи - кубы, пчела - куб, язык - параллелепипед, длина которого меняется программно через transform.localScale. Благодаря первым двум пунктам предварительных условий получилось в короткие сроки создать каркас игры, которой при подключении фантазии уже позволяет увидеть, как будет ощущаться будущая игра.

Из полученного опыта: прототип игры - очень важен.

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

После создания годного прототипа во всю началась работа с графикой. Мой личный выбор пал на вариант 3D. Во-первых, еще в школе баловался с 3DSmax, во-вторых, созданную один раз модель можно потом крутить как угодно, подбирая нужный ракурс. Но, опять же, это выбор из личных предпочтений, с 2D графикой на должном уровне не работал. Blender оказался на удивление удобным инструментом (после нескольких десятков часов привыкания), шустрым в работе и с огромным количеством обучающих материалов. Быстро получилось создать статичные модели - камыши на пруду, кувшинки, камни, облака. Анимированные модели заняли на порядок больше времени. В целом, третий пункт из предварительных условий позволил не углубляться в создание максимально детализированной графики (а в будущем и меньше проблем с оптимизацией возникает), оставаясь при этом в соответствии с концепцией игры.

Опыт создания первой игры под Android на Unity Unity, Игры на Android, Gamedev, Длиннопост, Аркадные игры, Юмор

Из полученного опыта: не стоит бояться изучать и делать что-то новое. Как  минимум, нужно попробовать.

Помню, когда я создал статичную модель лягушки, точнее, две модели - с закрытым ртом и с открытым, когда она стреляет языком. Мне это казалось просто высшим достижением, хотя и в рамках игры выглядело, мягко говоря, колхозно. По внутренней оценке, я был способен создать анимацию 3D моделей только где-то через месяц - полтора. Однако, попробовав разобраться в скелетной анимации Blender и методами ее импортирования в Unity, я обнаружил, что создал анимированную версию лягушки уже через 3-4 дня.

Ну и заключительным этапом создания завершенной версии для релиза стало определение того варианта игры, которого будет достаточно. В процессе разработки легко увлечься, добавляя все новые и новые элементы, переключаясь с одного вида деятельности на другой, при этом дата выхода игры будет постоянно откладываться, но всегда будет "где-то через неделю". У меня это продолжалось несколько недель подряд. Чтобы завершить начатое, необходимо выполнить два условия: во-первых, решить что обязательно попадет в игру, а что обязательно останется на доработку и будет добавлено в обновлениях; и во-вторых, искоренить перфекционизм - определить необходимый уровень как будет реализовано то, что должно обязательно попасть в игру. Если пытаться сделать как можно лучше, то за это время придет видение того, как можно сделать еще лучше и так далее. В таком случае и Ахиллес не догонит черепаху.

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

Ну и последний в списке, но не последний для меня по важности пункт - юмор. Без него и сам процесс создания был бы более тяжким, и многое из того, что мне нравится в игре, не было бы сделано. Некоторые идеи приходили в голову во время работы, и затем были реализованы. Например, изначально я не планировал озвучивать лягушку как бы то ни было, но как-то раз мне вспомнилось видео с орущим сурком, которое я пересматривал десятками раз..)) (https://www.youtube.com/watch?v=Q_Qs-FRbTzY)

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

Итог.

Спасибо всем, кто дочитал этот пост до конца. Надеюсь, было интересно и полезно. Приведенные здесь выводы из полученного опыта я пытался выделить более ясно для того, чтобы вы могли вспомнить о них, если когда будете делать свою игру. Надеюсь, они помогут сократить время выпуска первой версии игры с неопределенного "когда-то потом, когда все будет как представляется в фантазиях" до вполне оцениваемого, чтобы получить обратную связь (на что и сам надеюсь) и двигаться дальше.

Опыт создания первой игры под Android на Unity Unity, Игры на Android, Gamedev, Длиннопост, Аркадные игры, Юмор

Лягуха смотрит на тебя с уважением

Страница игры в GooglePlay: https://play.google.com/store/apps/details?id=com.FrogAndBee...

Лига Разработчиков Видеоигр

6.5K постов22K подписчиков

Добавить пост

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

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

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"