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

В игры играю только на телефоне, и, в основном, в таймкиллеры, когда образуется никуда не применимый отрезок времени. Основываясь на собственных предпочтениях, была определена платформа и жанр. Решено было сделать 2D стратегию в жанре «стенка на стенку» с достаточно короткими уровнями. В качестве сеттинга были выбраны славянские сказки, но больная фантазия внесла свои корректировки. Игру было решено делать на Unity, так как с C# я знаком достаточно хорошо.
На протяжении всей разработки самым тяжелым для меня оказалась визуальная часть. Рисовать я не умею и не люблю. Деньги на арт тратить не хотелось. В общем, решил я сделать игру из пластилина. В детстве много времени было отдано этому увлечению. А ещё мне всегда очень нравились советские пластилиновые мультики. Вдохновленный ими, я приступил к лепке.
Очень скоро выяснилось, что делать покадровую пластилиновую анимацию это просто “адский ад”. Фигурки сохраняют позу всего несколько секунд, потом поза начинает плыть. Я пробовал делать проволочный каркас, но и это не дало желаемого результата.

Проволока попадалась либо слишком жёсткая, либо слишком ломкая. Промучившись недели две и не получив приемлемого результата, я решил изменить подход. На этот раз я слепил части тела персонажей отдельно и санимировал средствами движка.
Получились вот такие ребята:
Для анимации изначально планировал использовать плагин для инверсной кинематики. Но, впоследствии пришлось от него отказаться, так как при анимировании большого количества юнитов, а на поздних уровнях их бывает до 500 одновременно, он оказывал существенное влияние на производительность. В итоге анимацию пришлось реализовать только средствами движка. Благо, что их оказалось более чем достаточно для моих нужд. Закончив с этим, я решил, что уже на финишной прямой. Ведь оставалась только балансировка. Как сильно я ошибался…
Закончив с анимацией я прикинул баланс на коленке и опубликовал закрытую альфу в Google Play, дав доступ друзьям и коллегам. Оказалось что баланса нет вообще. Алгоритм порождения противников оказался запредельно рандомным. То уровень было пройти просто нереально, то он проходился вообще без усилий. Тогда я решил избавиться от рандома, и сбалансировать каждый уровень вручную. Сделав таким образом первый несколько уровней я понял, что на эту работу уйдет слишком много времени, и подход надо менять. Потратив еще пару дней на разработку детерминированного алгоритма порождения противников я получил приемлемый результат. Осталось определить входные параметры для каждого из 99 уровней. Прежде чем мне удалось с этим закончить, я прошел свою игру еще раз 30, попутно корректируя цены прокачек, характеристики юнитов игрока, и юнитов противника. Очень сильно в тестировании мне помогли мои друзья и коллеги. Некоторые из них играли в игру на протяжении нескольких месяцев, и за это время дали мне огромное количество фидбэка.
На этом у меня все. Буду рад услышать критику. Конечно же, надеюсь на конструктив.

В игры играю только на телефоне, и, в основном, в таймкиллеры, когда образуется никуда не применимый отрезок времени. Основываясь на собственных предпочтениях, была определена платформа и жанр. Решено было сделать 2D стратегию в жанре «стенка на стенку» с достаточно короткими уровнями. В качестве сеттинга были выбраны славянские сказки, но больная фантазия внесла свои корректировки. Игру было решено делать на Unity, так как с C# я знаком достаточно хорошо.
На протяжении всей разработки самым тяжелым для меня оказалась визуальная часть. Рисовать я не умею и не люблю. Деньги на арт тратить не хотелось. В общем, решил я сделать игру из пластилина. В детстве много времени было отдано этому увлечению. А ещё мне всегда очень нравились советские пластилиновые мультики. Вдохновленный ими, я приступил к лепке.
Очень скоро выяснилось, что делать покадровую пластилиновую анимацию это просто “адский ад”. Фигурки сохраняют позу всего несколько секунд, потом поза начинает плыть. Я пробовал делать проволочный каркас, но и это не дало желаемого результата.

Проволока попадалась либо слишком жёсткая, либо слишком ломкая. Промучившись недели две и не получив приемлемого результата, я решил изменить подход. На этот раз я слепил части тела персонажей отдельно и санимировал средствами движка.
Получились вот такие ребята:
- Крестьянин
- Бомжеболотный огурец
- Переспелый змеербуз
- Хренорыцарь
Для анимации изначально планировал использовать плагин для инверсной кинематики. Но, впоследствии пришлось от него отказаться, так как при анимировании большого количества юнитов, а на поздних уровнях их бывает до 500 одновременно, он оказывал существенное влияние на производительность. В итоге анимацию пришлось реализовать только средствами движка. Благо, что их оказалось более чем достаточно для моих нужд. Закончив с этим, я решил, что уже на финишной прямой. Ведь оставалась только балансировка. Как сильно я ошибался…
Закончив с анимацией я прикинул баланс на коленке и опубликовал закрытую альфу в Google Play, дав доступ друзьям и коллегам. Оказалось что баланса нет вообще. Алгоритм порождения противников оказался запредельно рандомным. То уровень было пройти просто нереально, то он проходился вообще без усилий. Тогда я решил избавиться от рандома, и сбалансировать каждый уровень вручную. Сделав таким образом первый несколько уровней я понял, что на эту работу уйдет слишком много времени, и подход надо менять. Потратив еще пару дней на разработку детерминированного алгоритма порождения противников я получил приемлемый результат. Осталось определить входные параметры для каждого из 99 уровней. Прежде чем мне удалось с этим закончить, я прошел свою игру еще раз 30, попутно корректируя цены прокачек, характеристики юнитов игрока, и юнитов противника. Очень сильно в тестировании мне помогли мои друзья и коллеги. Некоторые из них играли в игру на протяжении нескольких месяцев, и за это время дали мне огромное количество фидбэка.
На этом у меня все. Буду рад услышать критику. Конечно же, надеюсь на конструктив.
Комментарии (12)
ameli_anna_kate
15.02.2018 14:33Фигурки сохраняют позу всего несколько секунд, потом поза начинает плыть
А подморозить это дело?aleha1010 Автор
15.02.2018 14:38Пробовал подморозить. Не на долго хватает. Сильно ухучшается пластичность. Знающие люди гвоврпя, что нужно было использовать скульптурный пластилин. В любом случае, тот подход, который в итоге я использовал, гораздо производительнее. К тому же для 2D его более чем достаточно.
MasMaX
Хм. А что критиковать? Нет ни примеров кода или архитектуры, ни демок.
Verovir
Кажется, эта вот игра. А так за ссылку его бы забанили, я думаю — в тегах есть название.