Серия «Создаем Tower Defense!»

2

Моя разработка игры Tower Defense. Часть третья

Для ЛЛ: с прошлого поста появился UI, навигация у противников и её отображение, новая моделька, новые эффекты (буря, выстрел, вражеская кровь, кислота, ядовитый дым).

С чего нужно начать?

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

Реализация просчета выстрела навесом, эффекты, новые текстуры.

Эффект стрельбы сделал с помощью двух плейнов и конуса сделанных в блендере и VFX в самом Unity. Стрельба навесом изначально рассматривалась как просто синусоида или кривая Безье. Однако оба варианта выглядели в игре довольно смешно и неестественно. Тогда на помощь пришла баллистическая формула. После применения её игра заметно оживилась.

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

Механика создания стен и создание UI.

Ещё год назад, когда я впервые сел за разработку, я видел комментарий о том что Tower Defense'ы друга на друга похожи и что им не хватает каких-то интересных механик. Одна из таких была механика создания стен. На этом видео я просто тестировал скрипт. Все работало как нужно, однако теперь встаёт вопрос о балансе. Противники не могут пройти сквозь стены, а значит четыре таких стены и путь к главной базе (которую демоны должны атаковать) закрыт. Есть мысли по поводу создания летающих существ и демонов которые могут ломать стены, однако пока что всё в планах. Если есть идеи - обязательно пишите. Будем думать - будем решать.

Ох сколько жопной боли мне доставила новая система ввода в Unity. Я не выпускник института и уж точно не профессиональный разработчик и переход со старой системы на новую просто все разрушил. Около недели я боролся с переписыванием кода и настройкой рэйкастов чтобы они не проходили сквозь UI кнопки. Однако это всё позади. Теперь я могу позволить себе одновременную разработку и на Windows и на Android.

Навигация противников и её отображение.

Моя разработка игры Tower Defense. Часть третья Gamedev, Unity, Инди, Разработка, Инди игра, Tower Defense, Видео, Без звука, Длиннопост

Шейдер отображения стрелочек пути.

Здесь всё было не так сложно. Устанавливаем в менеджере пакетов AI Navigation. Кидаем NavMeshAgent на противника. На площадку где он должен идти кидаем NavMeshSurface, а на препятствия NavMeshObstacle. Маленько колдуем с настройкой, запекаем и всё. Показ маршрута сделан с помощью LineRenderer. У NavMeshAgent'а есть массив path который содержит точки в которые будет следовать противник. Присваивание этого массива к массиву точек LineRenderer позволяет получить такой эффект.


Эффекты мои эффекты 😁

Моя разработка игры Tower Defense. Часть третья Gamedev, Unity, Инди, Разработка, Инди игра, Tower Defense, Видео, Без звука, Длиннопост

Настройка VFX для эффекта бури.

Создание эффекта бури находится на стадии разработки, так как пожирает слишком много ресурсов. Сделано на: Unity VFX с использованием бесплатных флипбуков.

Моя разработка игры Tower Defense. Часть третья Gamedev, Unity, Инди, Разработка, Инди игра, Tower Defense, Видео, Без звука, Длиннопост

Шейдер кислоты. При правильной настройке подходит под любую жидкость.

Моя разработка игры Tower Defense. Часть третья Gamedev, Unity, Инди, Разработка, Инди игра, Tower Defense, Видео, Без звука, Длиннопост

VFX настройка для кислотного дыма.

Создание эффекта кислоты и ядовитого дыма. Жижа сделана на Shader graph, дым на VFX с помощью флипбуков.

А это на данный момент последняя новость из моей разработки. Создание эффекта крови от выстрелов. На данный момент тестирую появление пятен крови после выстрела, но показать пока нечего.

Мысли, планы, рассуждения

Идея игры: Далекое, далекое будущее, планета Марс, демоны.. Стоп. Это же Дум? Ну да, я и не отрицаю. Вдохновляюсь стилистикой дума и планирую в таком сеттинге игру и создавать. Пока основные силы брошены на создание нужных механик, а далее буду думать про создание моделек. Сам я не особо умею, поэтому пока проект и выглядит так.
Музыка: Ну естественно метал! Сам немного умею играть на гитаре и записываться, поэтому в будущем займусь этим.
Ещё много чего хотелось бы рассказать, однако понимаю что не всё это появится в игре. Даже сейчас часть механик из предыдущего поста были убраны (мины). Однако если у вас есть что-то что вы бы хотели видеть в игре такого жанра - обязательно пишите. Я не считаю что этот проект станет моим опус магнумом, скорее это проект для набивки руки, поэтому было бы интересно реализовать смелые идеи.

Если есть вопросы или просто интересен проект и хочешь за ним следить, то есть телеграмм канал ТОЛЬКО по разработке игры: Hello Mars! Hello Hell!

До скорой встречи! Пока-пока!

Показать полностью 4 7
0

Моя разработка игры Tower Defense. Часть вторая ( и надеюсь не последняя)

ДЛЯ ЛЛ: Раньше разрабатывал Tower Defense, потом забросил ( ну, вы знаете как это бывает). Но я решил не сдаваться - дубль два!

Всем привет!

В настоящее время мы имеем все то же самое, с чего и начинали в прошлый раз. Сдвинулся ли я с этой точки? Да! Сейчас разработано два типа башен и два расходуемого предмета. Первый тип башен будет атаковать с большой скоростью и малой пробиваемой силой. Второй тип башен на данный момент бьет первого противника сильным выстрелом и передает импульс до трех раз. Первый расходуемый предмет - ледяная поверхность. Замедляет ход противника на небольшой период (более точное время получим во время балансировки). Второй расходуемый предмет - мина. Падает с небольшой задержкой и наносит урон противникам в радиусе взрыва.

Исходный код скриптов выкладывать не буду. Так как, код не универсальный и не подойдет для встраивания в свою игру, однако если кто-то заинтересуется - милости прошу в тг {https://t.me/developmenttowerdefensee}

Всем спасибо! Увидимся в следующих постах!

Показать полностью
124

Моя разработка игры Tower Defense. Часть первая

ДЛЯ ЛЛ: Разработка игры от человека далекого от разработки игр. Захотел написать игру в стиле Tower Defense. Написал диздок. Разработал часть механик.

Всем привет!

С самого детства я мечтал разрабатывать игры, но возможность и уверенность появилась только сейчас. Этим постом я хочу открыть серию постов о разработке своей собственной игры (а может и не одной). А также это будет для меня маленьким дневником и порфтолио, с которым в будущем я планирую искать себе работу в игровой индустрии. С чего начинается разработка игры (по моему мнению)? Ну естественно с выбора движка. Мой выбор пал на Unity, потому что я имею какие-то базовые знания C#. В качестве жанра первой игры я выбрал Tower Defense, так как считаю что такой проект будет не сложным для начинающего разработчика. А в качестве платформы выбрал Android.

Примерный план разработки:

  1. Разработать идею и предварительный стиль игры.

    1. Рассмотреть игры конкурентов.

    2. Определиться с графикой.

    3. Определиться с музыкой и звуковыми эффектами.

  2. Разработка дизайн документа с описанием основных механик игры.

  3. Написание кода.

  4. Получение удовлетворения от разработки.

  5. Создание рабочего билда и тесты.

Если прочитали до этого момента - пожелайте мне удачи.

Итак... приступаем.

Поиграв в небольшое количество, скачанных с Play Market'а, игр, а также посмотрев обзоры на ютубе я пришел к выводу что правильным вектором в разработке такой игры будет грамотная экономическая система. Графика и саундтрек не так сильно важны, как действительно сложный, но честный геймплей. Карты не должны быть "читерскими" со стороны разработчика, но и не должны проходиться легко. Также должна быть изюминка, которая, выделит твою игру среди остальных.

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

Дизайн документ.

Базовый геймплей:

  • Покупка и продажа башен:

    • Быстрый выстрел по одной цели.

    • Медленный выстрел по одной цели с откидыванием.

    • Выстрел по области.

    • Выстрел по нескольким противникам одновременно.

  • Улучшение башен и ловушек:

    • Ледяная ветка (Уменьшение скорости противника).

    • Огненная ветка (Периодический урон).

    • Электрическая ветка (Урон по цепочке).

  • Постоянное улучшение:

    • Скорость атаки башни.

    • Урон башни.

    • Урон ловушек.

  • Покупка мин:

    • Мина.

    • Мина для отбрасывания (Не улучшается).

  • Противники:

    • Маленький противник:

      • Высокая скорость.

      • Маленькое количество HP.

      • Слабый урон.

    • Средний противник:

      • Средняя скорость.

      • Среднее количество HP.

      • Средний урон.

    • Большой противник:

      • Малая скорость.

      • Большое количество HP.

      • Большой урон.

  • Особенности противников:

    • Огненные противники:

      • Резист к огненной атаке.

      • Увеличен получаемый урон от ледяной атаки.

    • Ледяные противники:

      • Резист к ледяной атаке.

      • Увеличен получаемый урон от огненной атаки.

    • Каменные противники:

      • Резист ко всем видам атак (в том числе и обычных).

      • Увеличен получаемый урон от электрической атаки.

Приступаем к разработке.

Проект решил делать в 3D, а в качестве рендера решил использовать URP. Для себя первым шагом я решил сделать ИИ (искусственный интелект) противников. Переместив ассеты в проект я создал примерный макет карты:

Моя разработка игры Tower Defense. Часть первая Unity, Разработка, Gamedev, Стратегия, Tower Defense, Indiedev, Инди игра, Инди, Гифка, Длиннопост

Для начала создадим и настроим навигационную сетку для наших противников. При импорте не забудьте моделей включить Read/Write для создания навигации во время игры. Для объектов по которым можно ходить я добавил NavMeshModifier с модификатором Walkable, а также переместил их на слой Ground. Для тех моделей по которым ходить нельзя ставим соответственно Not Walkable. С помощью скрипта будем делать динамическую сетку. Создадим пустой объект, добавим на него NavMeshSurface (Предварительно установив пакет в Window -> Package Manager -> Packages: Unity Registry -> AI Navigation). Создадим скрипт с названием Navigation Baker и добавим на только что созданный объект. Пропишем чтобы сетка строилась когда запускается игра.

Моя разработка игры Tower Defense. Часть первая Unity, Разработка, Gamedev, Стратегия, Tower Defense, Indiedev, Инди игра, Инди, Гифка, Длиннопост

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

Моя разработка игры Tower Defense. Часть первая Unity, Разработка, Gamedev, Стратегия, Tower Defense, Indiedev, Инди игра, Инди, Гифка, Длиннопост

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

Моя разработка игры Tower Defense. Часть первая Unity, Разработка, Gamedev, Стратегия, Tower Defense, Indiedev, Инди игра, Инди, Гифка, Длиннопост

Теперь стоит приступить к нашим башням. Для этого соберем из моделек подходящую башню и поставим на свободную клетку. Теперь создадим новый скрипт. Скрипт выглядит вот так:

Моя разработка игры Tower Defense. Часть первая Unity, Разработка, Gamedev, Стратегия, Tower Defense, Indiedev, Инди игра, Инди, Гифка, Длиннопост

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

Моя разработка игры Tower Defense. Часть первая Unity, Разработка, Gamedev, Стратегия, Tower Defense, Indiedev, Инди игра, Инди, Гифка, Длиннопост

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

Всем спасибо! Увидимся в следующих постах!

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