Серия «Как я создал и опубликовал свою первую игру»

Как я создал и опубликовал свою первую игру

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

Как я создал и опубликовал свою первую игру Unity, Gamedev, Indiedev, Инди, Разработка, Гифка, Длиннопост

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

Шло время, а пакет с пакетами санкций увеличивался. Так сначала я обзавелся целым рядом банков, потом узнал что такое крипта, но клиентам при таком санкционном бэкграунде становилось все более некомфортно и боязней. Все как у всех в общем. И тут-то я подумал, если я участвовал в разработке небольших, но коммерческих проектов — почему бы не попробовать свои силы на этом поприще. Нужно уточнить — программирование это не мое, от слова «совсем». Я конечно делал мини игры в детстве на бейсике, что ж греха таить (zx spectrum ван лов), но технологии шагнули несколько вперед, если сравнить с серединой девяностых. Итак, что имеем: неплохое понимание движка Unity, настройки спрайтов, анимацией штатными средствами. Ну и конечно же, добротный опыт в сфере создания графики и анимации. Можно сказать половина успеха, да? А вот нет.

Для реализации был выбран веселый, в меру дурацкий файтинг, с максимально упрощенным управлением, горизонтальное передвижение персонажа не предусмотрено. Враги бесконечно приближаются слева и справа в центр экрана, к игроку. Удары и серии ударов наносятся нажатием клавиши/тапом в сторону врага. Также предусмотрены «сильные» удары» – апперкот (удар из положения сидя) и удар из воздуха, с прыжка вниз. При нанесении сильного удара повышается шанс выбить из рук врага оружие, с последующей возможностью его использования.

Как я создал и опубликовал свою первую игру Unity, Gamedev, Indiedev, Инди, Разработка, Гифка, Длиннопост

Скетчи игровых персонажей

Набросаны первые идеи, скетчи персонажей, продумана механика. Главными игровыми персонажами стали Кот и Бабушка. Враги – крысы и голуби (терпеть не могу голубей).

Как я создал и опубликовал свою первую игру Unity, Gamedev, Indiedev, Инди, Разработка, Гифка, Длиннопост

Ну вы поняли

Идея была в том, чтобы не задирать возрастные рамки и попытаться попасть в 12+, собственно стиль графики был выбран по этой же причине.

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

Как я создал и опубликовал свою первую игру Unity, Gamedev, Indiedev, Инди, Разработка, Гифка, Длиннопост

Чистовой вариант отрисовки персонажей

Пора приступать к поиску программиста!

Так как движок Unity мне знаком и понятен, программист очевидно должен владеть c# и понимать архитектуру проектов Unity, а также иметь опыт в WebGL. Да, все верно, речь в данный момент пойдет о Яндекс играх. Думаю часть читающих сразу представила тысячный скибиди туалетик и решила не читать дальше.  Но я выбрал другой путь, только кастомная графика, кастомный код, только хардкор. Так вот, а где же этого самого программиста взять-то? Конечно на отечественных фриланс платформах, подумал я. В годы своей бурной активности как фрилансера, я считал, что удовлетворенность клиента результатом - прочный фундамент долгосрочных отношений, а дедлайн непоколебимой датой - хоть камни с неба. Ну и вообще - кто платит тот и заказывает музыку, правильно? И похоже снова нет. В реальности все оказалось чуть по другому.

Как я создал и опубликовал свою первую игру Unity, Gamedev, Indiedev, Инди, Разработка, Гифка, Длиннопост

Вид игровой сцены

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

Для работы была выбрана фриланс площадка, не буду упоминать ее плюсы, минусы, да и вообще писать о ней что-либо, потому что речь тут совсем о другом. Единственное скажу - площадка нехитрый гибрид upwork и fiverr, кто знает о чем речь, тот поймет. Был изучен рынок, предложения исполнителей, выведен средний бюджет для моего проекта и создано первое «объявление» с предложением поучаствовать в моем небольшом, но гордом проекте. Пошли первые отклики. В первую очередь были отфильтрованы фрилансеры, пытавшиеся демпинговать цену. Как правило, это пустые аккаунты без отзывов, пытающиеся таким образом получить свой первый заказ, мне это не подходило, я хотел быть уверен в компетенции специалиста.

Как я создал и опубликовал свою первую игру Unity, Gamedev, Indiedev, Инди, Разработка, Гифка, Длиннопост

Анимация одного из игровых персонажей в After Effects. Да, я не ищу легких путей (наверное зря)

Работа кипела

Для реализации анимации боя, как ни странно, был выбран After Effects. Таким образом я планировал уменьшить нагрузку на телефон в веб приложении, убрав понятие костей и их постоянного просчета. Мне показалось что спрайтшиты для такого проекта — это лучшая опция. Тут пригодился мой опыт создания анимированных стикеров для Телеграмм. И все было бы хорошо, если в какой-то момент у меня не появилась идея разнообразить игру скинами персонажа. Десяток шейпов, сотня точек – это, пожалуй, не лучший вариант для этой идеи. Ведь каждый скин пришлось бы анимировать по-новой. Поэтому создав десяток анимаций, потратив на это изрядно времени, я переключился на штатную 2D анимацию прямо в Unity.

Как я создал и опубликовал свою первую игру Unity, Gamedev, Indiedev, Инди, Разработка, Гифка, Длиннопост

А вот так выглядело тестовое комбо, реализованное покадровой анимацией

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

Из забавного на тот момент: один исполнитель с хорошими отзывами и, как мне показалось, с достаточным опытом, после долгого обсуждения проекта, всех деталей, когда речь зашла о NDA, попросил время подумать. Вернулся с отрицательным решением. На мой вопрос, почему так, ответил, что ему нет 18-ти. Тогда я подумал: а может стоит удовлетворить просьбу моего 9-ти летнего сына и помочь ему начать свой путь в программировании?

Как я создал и опубликовал свою первую игру Unity, Gamedev, Indiedev, Инди, Разработка, Гифка, Длиннопост

Со второй попытки мне повезло больше, не смотря на сильно затянутые сроки, игра была реализована на 90%. Игровой персонаж ожил, все созданные мной анимации бодро превращались в веселые комбо ударов, уже в игровом процессе. Оживало UI, уже можно было выбрать игрового персонажа, поменять игровую валюту на новый скин.

Я был доволен и, по большому счету, даже перестал переживать о сроках, которые на тот момент перевалили за 3 недели, вместо обещанных исполнителем 5-7 дней. Первый проект, что поделаешь. Оставались сущие пустяки, до-настроить показы рекламы в SDK, сделать локализацию на инглиш, сделать лидерборд. Чтобы не портить рейт исполнителя (опять же сроки задачи давно вышли), принимаю решение закрыть проект на бирже, выплатив весь гонорар. Проходит неделя и фрилансер ложится в больницу (Никита, желаю тебе скорейшего выздоровления!).

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

Допиливаю то, что могу сделать самостоятельно и высылаю на первую модерацию, как есть

Как я создал и опубликовал свою первую игру Unity, Gamedev, Indiedev, Инди, Разработка, Гифка, Длиннопост

Ранняя версия экрана выбора скина и режима игры

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

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

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

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

Как я создал и опубликовал свою первую игру Unity, Gamedev, Indiedev, Инди, Разработка, Гифка, Длиннопост

Текущая версия главного экрана после первых правок

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

Для перевода игры была подготовлена таблица, которую я передал исполнителю. В ходе тестирования я периодически натыкался на не переведенные куски текста, в основном это были ачивки. Впоследствии оказалось что фрилансер решил моей таблицей не пользоваться или пользоваться в удобные для него моменты. Так уже после завершения всех работ обнаружились интересные переводы все тех же ачивок, например Rat Lover (хотя у меня было Rat fun), Granny вместо Babushka. Вроде и мелочи, а вроде и нет.

Игра была принята и опубликована аж на четвертый раз – основные причины пофиксили после первой модерации, дальше были несколько мелочей, включая перевод. Кстати, а вот и сама игра https://yandex.ru/games/app/311619?utm_source=app_page

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

Показать полностью 9
Отличная работа, все прочитано!