Как играть в tower defense

Баланс в играх жанра Tower Defense (часть 1)

В данной статье речь пойдет о принципах вычисления баланса в нашей игре жанра Tower Defense (TD), которую мы выпустили летом 2012г. для платформ iOS и Android. Мы расскажем, c какими сложностями и ограничениями пришлось столкнуться, каков был ход мыслей геймдизайнера при выборе того или иного решения, и как был получен конечный результат.

Достижения игры
1. побывала в топ6 и топ7 в категориях US Appstore;
2. занимала топ1 категорий и топ7 overall в RU Appstore;
3. «письмо счастья» от Apple;
4. 425 000 закачек;
5. 5 звезд (средняя оценка для всех магазинов);
6. множество положительных комментариев;
7. обзоры на ведущих мировых мобильных порталах.

Как играть в tower defense. 6ea6244c60b9e3a7fadace5b84e7eb8c. Как играть в tower defense фото. Как играть в tower defense-6ea6244c60b9e3a7fadace5b84e7eb8c. картинка Как играть в tower defense. картинка 6ea6244c60b9e3a7fadace5b84e7eb8c

Термины
1. Кубок (база) – защищаемый объект, до которого нельзя допустить противников.
2. Крип – противник, цель которого: дойти до базы. В большинстве случаев не может атаковать башни.
3. Башня – устанавливаемый игроком неподвижный юнит, как правило, дистанционно воздействующий на противников.
4. Волна – несколько противников, движущихся с небольшими промежутками. Обычно между волнами есть достаточно большая пауза, в течение которой игрок строит/улучшает башни и оценивает стратегическую ситуацию на поле.
5. Тайл – ячейка поля. В данном случае – гекс (был выбран в виде ячейки поля в основном из-за красивой визуальной составляющей карты, созданной на их основе).
6. HP(ХП) – очки здоровья крипов. То, что отнимается при атаке башнями.

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

Рассмотрим граничные условия:
1. Игра проходима, как минимум, при одной последовательности действий игрока.
2. Игрок должен что-то делать, чтобы выиграть. Это «что-то» как раз и определяет сложность игры: сколько раз за игру и в какие этапы игрок должен принять верное решение (иногда ничего не делать – тоже верное решение).

С другой стороны, баланс – это, прежде всего, полезность всех применяемых в игре башен. Если для победы на любом уровне можно использовать лишь 1-2 вида башен из 10 имеющихся, логично, что такой баланс оставляет желать лучшего.
Также, тактика должна зависеть от карты уровня и типов врагов на нем, исходя из которых игрок может сам построить стратегию прохождения.

В нашей игре мы столкнулись со следующим ограничением: гексагональное поле размером 14×7 тайлов, без скролла.

Как играть в tower defense. e9d90defcc0285ec95e81377bb9c88e4. Как играть в tower defense фото. Как играть в tower defense-e9d90defcc0285ec95e81377bb9c88e4. картинка Как играть в tower defense. картинка e9d90defcc0285ec95e81377bb9c88e4

Такие размеры поля накладывают свои ограничения, как минимум, в пределе застройки. Фокус игры смещается с «застрой всю карту» на «грамотно поставь N башен». Если проводить аналогию по динамике, то вместо постройки крепости у нас в игре расстановка игроков перед матчем.

Базовый крип и базовая башня
На начальной стадии игры при малозаполненном поле длина пути крипа от точки появления до кубка в среднем должна быть порядка 20 тайлов.
Примем скорость крипа =0.8 тайлов в секунду (на такой скорости он визуально хорошо смотрится).

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

Крип, идущий по прямой, попадает в сектор обстрела башни на 3-3.5 тайлах своего пути. Тогда, приняв урон базовым снарядом за 10, мы можем узнать HP юнита, которые будут удовлетворять условию.

Как играть в tower defense. 9bfab1ca9c38a6c244181a6c17fadbab. Как играть в tower defense фото. Как играть в tower defense-9bfab1ca9c38a6c244181a6c17fadbab. картинка Как играть в tower defense. картинка 9bfab1ca9c38a6c244181a6c17fadbab

Получаем 3.25 тайла/0.8 тайла в секунду =4с, за это время башня сделает 8 выстрелов, нанеся 80 ХП урона.
Итого, крип должен иметь не более 80ХП, сейчас стоит ХП=75 (это в любом случае 8 выстрелов, но игроку будет обидно видеть еле-еле живого крипа с 5ХП, который отнимает жизни у базы). Тогда крипы при разности появления в 4с могут быть уничтожены 1 башней.

Баланс волн и экономики игры
1. Доход от предыдущей волны должен позволить достроить башни (или улучшить их) в таком количестве, что сможет отбить следующую волну.
2. Игрок должен строить новые башни через каждые 1-2 волны. Если игрок не строит башни в течение 3-4 волн – баланс плохой.
3. Сложность должна нарастать от начала уровня к концу, т. е. избытка ресурсов к концу уровня не должно наблюдаться.
4. Сложность выбора вариантов действий (куда ставить башню? апгрейдить старую башню или ставить новую?) также должна возрастать ближе к концу уровня.
5. На каждом уровне настает момент, когда строить (или апгрейдить) дальше уже некуда, и это, фактически, максимальный предел уровня, до которого он должен быть закончен. На практике, уровень должен быть пройден когда застроено не более 60-70% мест, открытых для застройки.

Варианты «вырождения» ситуации
1. Игроку некуда поставить башню. Это может быть, если башни стоят слишком дешево, или же – игровое поле слишком мало. Так как по условиям задачи игровое поле в игре имеет размеры 14×7 тайлов, то на этот пункт надо обратить особо внимание.
2. Из пункта выше следует частный случай: следующее действие игрока становится предсказуемым за N шагов до него. Обычно это бывает в играх, где есть свободная застройка в открытом поле, и враги идут из 1 точки. В таком случае наиболее выигрышной стратегией оказывается постройка башен «змейкой». Однако, в большинстве случаев этот пункт зависит от дизайна отдельных уровней, а не от базового баланса.
3. Неравномерность заработка денег. Возможна ситуация, когда, достигая определенного числа башен, они уничтожат любое число крипов, и с одной уничтоженной волны противников игрок зарабатывает столько денег, что их хватит на все последующие волны. Почему это возможно и как с этим бороться – мы расскажем ниже.

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

Базовые постулаты
Берем базового крипа (фитнессист) и базовую башню (подающего). С данным радиусом атаки башни данного крипа могут одновременно атаковать 3-3.25 башни.

Скорость атаки башни – 2 выстрела в секунду, урон – 10 на выстрел, ХП крипа – 75, т. е. он выдерживает 8 попаданий. Скорость крипа – 0.8 тайла в секунду.

Так как крипы движутся волной, которая имеет определенную длину, одновременно возможна атака большим количеством башен. Насколько больше – зависит от длины волны. Удлинение волны на один тайл добавляет 1 башню к числу одновременно атакующих.
Длину «змейки» волны можно вычислить как N*dt*v, где N – число крипов, dt – задержка перед появлением следующего, v – скорость крипа.

Примем dt=0.5c (это минимально возможный промежуток между появлениями крипов, так как, в противном случае, в волне становится сложно различить отдельных юнитов), v=0.8т/с.

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

Составим неравенство, где
• h – прочность юнита, в ударах для данной башни.
• K – число выстрелов башней в секунду
• L – длина пути юнитов под атакой,
• v и N – скорость и число крипов соответственно.

Для базовой башни и базового юнита получим:

K= 2; v= 0.8; dt= 0.5; h= 8;

Получаем промежуточный результат:

Примем dt=0.5, а 7.5 округлим до 8, т. к. башни могут пробивать чуть больше, чем 3 тайла дорожки.

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

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

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

Прикинем, сколько вообще башен сможет построить игрок на обычном поле без скрола. Размер поля у нас 14 тайлов в длину и 6-7 в ширину. Итого, получаем: 14*6.5=91 тайл.

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

Если взять вариант «дорожка», какую строит игрок, чтобы удлинить путь юнитов врага (чтобы они дольше были под атакой), то ее длина будет порядка 40-45 тайлов.Чтобы заставить врагов двигаться по такой «змейке», игрок должен построить минимум 30 башен, всего же игрок сможет построить еще дополнительно 18 башен (при 43 тайлах пути).

Как играть в tower defense. 08b1e01d28ce4da384c01fd21ddef41e. Как играть в tower defense фото. Как играть в tower defense-08b1e01d28ce4da384c01fd21ddef41e. картинка Как играть в tower defense. картинка 08b1e01d28ce4da384c01fd21ddef41e

При длине пути 43 и скорость 0.8 тайлов в секунду путь одного крипа займет порядка 55с, путь волны – порядка минуты. Учитывая, что средняя волна будет занимать 30-40с, то найдем время игровой сессии: при 20 волнах оно будет порядка 10-15 минут (без ускорения) на сложных уровнях. Однако, как показала практика, создать насыщенный и драматический уровень можно и меньшим числом волн – порядка 10.

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

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

Вернемся к предыдущей формуле:

При длине пути равном 40, HP крипов, чтобы их гарантированно не убивали вышки при любом числе врагов в волне, должны быть не менее 40*10=400 (это в 5 раз больше базового крипа, то есть крип должен выдерживать 40 ударов базовой башни):

320>= 10* N, N = 8* N
32>4N, N

Источник

Лучшие игры в жанре Tower Defense с кооперативом

Жанр «Защита башней» уже давно популярен среди игроков и разработчики часто разбавляют его какими-то необычными механиками. Именно за счет этого в подобной игре можно провести сотни часов.
Как играть в tower defense. placehold. Как играть в tower defense фото. Как играть в tower defense-placehold. картинка Как играть в tower defense. картинка placehold
Самыми затягивающими среди них являются те, что сделаны с кооперативным режимом, потому что более реиграбельны и в них на ходу генерируется масса забавных ситуаций. Мы решили сделать подборку лучших Tower Defense игр, в которые можно играть с друзьями.

Sanctum 2

Как играть в tower defense. placehold. Как играть в tower defense фото. Как играть в tower defense-placehold. картинка Как играть в tower defense. картинка placehold

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

Dungeon Defenders

Как играть в tower defense. placehold. Как играть в tower defense фото. Как играть в tower defense-placehold. картинка Как играть в tower defense. картинка placehold

Особенностью Dungeon Defenders можно назвать успешное сочетание жанров Tower Defense и ролевой игры. Вам с компанией других игроков придется не просто строить башни и укрепления, расставляя разнообразные ловушки, но еще и управлять необычными героями, которые могут спокойно надавать по шапке несущейся по карте толпе врагов. К тому же, участвуя в схватках с противниками, вы прокачиваете своего героя и выбиваете новые шмотки для него.

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

Мы однозначно рекомендуем к прохождению с друзьями первую часть. Можно попробовать поиграть и в Dungeon Defenders под номером два, она распространяется абсолютно бесплатно, но многие жалуются на бесконечный фарм и донат.

Также в раннем доступе сейчас находится самая новая Dungeon Defenders с подзаголовком Awakened, которая вот-вот выйдет в релиз. Посмотрим, быть может, на релизе это будет крутая игра, но пока сыровато. А еще, к сожалению, разработчики так и не удосужились перевести хоть какую-то свою игру на русский.

Orcs Must Die! 2

Как играть в tower defense. placehold. Как играть в tower defense фото. Как играть в tower defense-placehold. картинка Как играть в tower defense. картинка placehold

В игре присутствует интересный и местами забавный сюжет, а также несколько режимов. После того как пройдете кампанию в одиночку и поймете, что из себя представляет Orcs Must Die! 2, можно еще на десятки часов потратить в кооператив. К тому же можно настроить сложность под себя, что позволяет остаться в ней еще на какое-то время.

К слову, в 2017 году разработчики пытались сделать условно бесплатную версию под названием Orcs Must Die! Unchained, но что-то в их финансовой модели не срослось, поэтому проект закрыли. Говорят, в 2020 году выйдет 3 часть, что ж, будем ждать. Но пока можно смело играть во вторую, там еще есть жизнь.

Sol Survivor

Как играть в tower defense. placehold. Как играть в tower defense фото. Как играть в tower defense-placehold. картинка Как играть в tower defense. картинка placehold

Это уже полноценная стратегия без всяких примесей. Геймплей Sol Survivor сосредоточен исключительно на грамотном строительстве башен. Тут есть 1 универсальная, 3 специальные и куча дополнительных, которые усиливают характеристики основных сооружений. При этом в вашем арсенале огромное количество различных построек, но по ходу игры дадут выбрать только половину. Точно также и с разновидностями поддержки с воздуха, которых здесь довольно много, но использовать получится от силы 50%.

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

Warstone TD

Как играть в tower defense. placehold. Как играть в tower defense фото. Как играть в tower defense-placehold. картинка Как играть в tower defense. картинка placehold

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

Стоит отметить, что вместе с выбором класса вы получите еще и набор уникальных навыков. Зарабатывая опыт во время прохождения уровней, можно прокачиваться, причем в разные ветки. Помимо одиночной кампании, в игре есть кооперативные задания (4 карты с 3 режимами) и необычный вариант PvP сражений.

CastleStorm

Как играть в tower defense. placehold. Как играть в tower defense фото. Как играть в tower defense-placehold. картинка Как играть в tower defense. картинка placehold

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

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

Mindustry

Как играть в tower defense. placehold. Как играть в tower defense фото. Как играть в tower defense-placehold. картинка Как играть в tower defense. картинка placehold

Пожалуй, единственный проект из подборки, который может понравиться тем, кто ранее не очень любил жанр Tower Defense. Игра меняет классическую концепцию жанра, и за счет этого геймплей Mindustry может увлечь на десятки часов. Суть в том, что вам нужно построить целое производство для добычи ресурсов. Как только цель будет достигнута, начнется этап защиты своих владений от врагов.

Игра привлекает внимание наличием нескольких режимов. Тут есть и одиночная кампания, и кооператив, и PvP, и даже подобие классической песочницы, в которой можно делать все что угодно.

Legion TD 2

Как играть в tower defense. placehold. Как играть в tower defense фото. Как играть в tower defense-placehold. картинка Как играть в tower defense. картинка placehold

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

Также стоит отметить, что в Legion TD 2 выигрывает тот, кто дольше остальных продержится. При этом в игровой сессии участвует 2 команды, в каждой из них может быть до 4-х игроков. Кооперативный режим здесь очень масштабный, можно весело зарубиться огромной компанией и показать, кто тут главный.

На этом подборка самых увлекательных проектов в жанре Tower Defense с кооперативным режимом подошла к концу. Если вы знаете еще какие-то стоящие проекты, в которое можно поиграть с друзьями, то обязательно напишите про них в комментариях.

Источник

В кастомке Доты можно растить овощи, пока отбиваешься от крипов. Tower Defence про ферму

Рубрика «Аркадная Дота».

Один из важнейших жанров кастомных карт в Варкрафте – Tower Defence, суть которого сводится к отстройке башен и зачистке волн крипов. В Варкрафте были десятки представителей жанра, и как минимум 6-7 из них пользовались большой популярностью.

Сегодня мы рассмотрим одну из таких карт, Random Farm TD. Российский модер ExcaliburS (вы можете знать его по Youtube-каналу, где раньше выходили нарезки лучших моментов со стримов Solo и Дреда), перенес во вторую Доту.

Правила игры

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

• У игрока есть два основных ресурса – золото и мана. Золото тратится на башни, мана – на растения.

• Сначала разберемся с башнями. В игре есть пять тиров башен по семь видов строений в каждом и шестой, самый высокий тир, с 15 разными башнями. Строитель может купить случайную башню 1-2 тира за 170 золота или башню 3-4 тира за 1550. Две одинаковые башни можно объединить в случайную башню следующего тира.

• За деньги можно передвигать башни, менять их расположение на карте (в TD грамотно поставленная башня увеличивает свою эффективность в несколько раз) и даже менять башню на другую из этого же тира.

Как играть в tower defense. cybere3d9eb9f960. Как играть в tower defense фото. Как играть в tower defense-cybere3d9eb9f960. картинка Как играть в tower defense. картинка cybere3d9eb9f960

• Кроме того, разные башни наносят разный тип урона. В магазине можно повышать урон одного типа урона.

Теперь – к фермерству.

• Строителю доступны три типа растений – арбузы, тыквы и капуста. Посадка каждого растения стоит 100 маны, за раунд дают 200. Каждое растение дает по одному плоду в течение двух раундов. Плоды нужно продавать за золото. Каждый раунд цена на плоды меняется в пределах заданного значения, так что опустошать склады сразу после сбора урожая – не лучшая идея.

• Кроме того, игрок получает уровни мастерства за каждые 15 посаженных растения одного типа. Каждый уровень повысит прибыль за плод на 10 золота.

• И да, в этой TD есть рыбалка. За раунды дают наживку, ее можно потратить на мини-игру. Игрок закидывает в речку крючок и должен успеть вытащить клев за несколько секунд. «Вытаскивание» производится быстрым последовательным нажатием клавиш Q и W.

• В игре есть квесты на сбор в инвентаре Х рыб или плодов. В награду дают ману.

Как играется?

Видно, что автор много играл в Tower Defence, за счет чего он смог замаскировать несколько слабых мест жанра.

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

Как играть в tower defense. cybere00b97569da. Как играть в tower defense фото. Как играть в tower defense-cybere00b97569da. картинка Как играть в tower defense. картинка cybere00b97569da

Во-вторых, в игре есть совершенно великая и необходимая опция для всех карт жанра: настройка приоритетных целей для башен. На выбор: три паттерна поведения башен:

1. Атаковать цели с наименьшим здоровьем.

2. Атаковать цели, наиболее близкие к концу уровня.

3. Атаковать ближайшие к башне цели.

Эти опции позволяют вручную управлять уроном и эффективнее проходить уровни.

Как играть в tower defense. cyberebe60a6eb27. Как играть в tower defense фото. Как играть в tower defense-cyberebe60a6eb27. картинка Как играть в tower defense. картинка cyberebe60a6eb27

В-третьих, в игру можно играть одному – идеальный вариант для тех, кто устал от тиммейтов в Доте и хочет отдохнуть между рейтинговыми играми.

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

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

В игре есть донат, напрямую влияющий на игру

За 250 рублей можно купить модельку игрока, и это еще ничего. Дальше – жестче:

1. 460 рублей – +10 жизней (без доната их всего 20), мешок с предметами и всегда удачная рыбалка (обычно раз в несколько попыток игрок получает нулевой клев).

3. 2650 рублей – помимо бонусов выше, еще один мешок с предметами, улучшенная бесплатная башня на старте и 350 золота.

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

Впечатления от карты

• Приятный и непривычный для жанра активный геймплей.

• Разобраться в правилах можно за одну игру. А вот изучать лучшие башни в каждом тире можно десятками часов.

• Из-за большого онлайна игроки собираются очень быстро.

Вы – фанат жанра Tower Defence? Эта игра точно понравится вам. Но даже если вы никогда не зачищали волны башнями, Random Farm TD – отличный выбор для знакомства с жанром.

Источник

Создание игры Tower Defense в Unity — Часть 1

Как играть в tower defense. image loader. Как играть в tower defense фото. Как играть в tower defense-image loader. картинка Как играть в tower defense. картинка image loader

Игры жанра tower defense приобретают всё большую популярность, и это неудивительно — немногое может сравниться с удовольствием от наблюдения за собственными линиями защиты, уничтожающими злых врагов! В этом туториале из двух частей мы создадим игру tower defense на движке Unity!

Вы узнаете, как сделать следующее:

Примечание: вам необходимы начальные знания Unity (например, вы должны знать, как добавляются ассеты и компоненты, что такое префабы) и основы языка C#. Для изучения всего этого я рекомендую вам пройти туториалы по Unity Шона Даффи или серию Beginning C# with Unity Брайана Мокли.

Я буду работать в версии Unity для OS X, но этот туториал подойдёт и для Windows.

Сквозь окна башни из слоновой кости

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

Вот скриншот готовой игры:

Как играть в tower defense. image loader. Как играть в tower defense фото. Как играть в tower defense-image loader. картинка Как играть в tower defense. картинка image loader

Монстры, объединяйтесь! Защищайте печеньку!

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

Скачайте эту заготовку проекта, распакуйте её и откройте проект TowerDefense-Part1-Starter в Unity.

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

В проекте также содержатся префабы, которые мы позже дополним, чтобы создать персонажей. Наконец, в проекте есть сцена с фоном и настроенным интерфейсом пользователя.

Откройте GameScene, находящуюся в папке Scenes и задайте для режима Game соотношение сторон 4:3, чтобы все метки правильно совпадали с фоном. В режиме Game вы увидите следующее:

Как играть в tower defense. image loader. Как играть в tower defense фото. Как играть в tower defense-image loader. картинка Как играть в tower defense. картинка image loader

Место помечено крестом: расположение монстров

Монстров можно ставить только на точки, помеченные знаком x.

Чтобы добавить их в сцену, перетащите Images\Objects\Openspot из Project Browser в окно Scene. Пока позиция для нас не важна.

Выбрав в иерархии Openspot, нажмите на Add Component в Inspector и выберите Box Collider 2D. В окне Scene Unity покажет прямоугольный коллайдер с зелёной линией. Мы будем использовать этот коллайдер для распознавания нажатий мыши на этом месте.

Как играть в tower defense. image loader. Как играть в tower defense фото. Как играть в tower defense-image loader. картинка Как играть в tower defense. картинка image loader

Аналогичным образом добавьте к Openspot компонент Audio\Audio Source. Выберите для параметра AudioClip компонента Audio Source файл tower_place, который находится в папке Audio, и отключите Play On Awake.

Нам нужно создать ещё 11 точек. Хотя существует искушение повторить все эти действия, в Unity есть решение получше: Prefab!

Перетащите Openspot из Hierarchy в папку Prefabs внутри Project Browser. Его название станет в Hierarchy синим, это означает, что он присоединён к префабу. Примерно так:

Как играть в tower defense. image loader. Как играть в tower defense фото. Как играть в tower defense-image loader. картинка Как играть в tower defense. картинка image loader

Теперь, когда у нас есть заготовка-префаб, мы можем создать сколько угодно копий. Просто перетащите Openspot из папки Prefabs внутри Project Browser в окно Scene. Повторите это 11 раз, и у нас появится в сцене 12 объектов Openspot.

Теперь воспользуемся Inspector, чтобы задать этим 12 объектам Openspot следующие координаты:

Как играть в tower defense. image loader. Как играть в tower defense фото. Как играть в tower defense-image loader. картинка Как играть в tower defense. картинка image loader

Размещаем монстров

Чтобы упростить размещение, в папке Prefab проекта есть префаб Monster.

Как играть в tower defense. image loader. Как играть в tower defense фото. Как играть в tower defense-image loader. картинка Как играть в tower defense. картинка image loader

Префаб Monster готов к использованию

На данный момент он состоит из пустого игрового объекта с тремя разными спрайтами и анимациями стрельбы в качестве дочерних элементов.

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

Теперь мы создадим скрипт, который будет располагать Monster на Openspot.

В Project Browser выберите в папке Prefabs объект Openspot. В Inspector нажмите на Add Component, а затем выберите New Script и назовите скрипт PlaceMonster. Выберите в качестве языка C Sharp и нажмите на Create and Add. Так как мы добавили скрипт к префабу Openspot, то у всех объектов Openspot в сцене теперь будет этот скрипт. Отлично!

Дважды нажмите на скрипт, чтобы открыть его в IDE. Затем добавьте две переменные:

По одному монстру на точку

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

Теперь добавим следующий код, чтобы размещать монстра, когда игрок нажимает на этот GameObject:

Этот код располагает монстра при нажатии мыши или касании экрана. Как он работает?

Использование подходящего префаба

Сохраните файл и вернитесь в Unity.

Чтобы задать переменную monsterPrefab, сначала выберите в браузере проекта объект Openspot из папки Prefabs.

В Inspector нажмите на кружок справа от поля Monster Prefab компонента PlaceMonster (Script) и выберите в появившемся диалоговом окне Monster.

Как играть в tower defense. image loader. Как играть в tower defense фото. Как играть в tower defense-image loader. картинка Как играть в tower defense. картинка image loader

Вот и всё. Запустите сцену и создавайте монстров на разных местах нажатием мыши или касанием экрана.

Как играть в tower defense. image loader. Как играть в tower defense фото. Как играть в tower defense-image loader. картинка Как играть в tower defense. картинка image loader

Отлично! Теперь мы можем создавать монстров. Однако они выглядят как странная каша, потому что отрисовываются все дочерние спрайты монстра. Сейчас мы это исправим.

Повышаем уровень монстров

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

Как играть в tower defense. image loader. Как играть в tower defense фото. Как играть в tower defense-image loader. картинка Как играть в tower defense. картинка image loader

Какой милаха! Но если вы попробуете украсть его печенье, этот монстр превратится в убийцу.

Скрипт используется в качестве основы для реализации системы уровней монстров. Он отслеживает силу монстра на каждом уровне и, разумеется, текущий уровень монстра.

Добавим этот скрипт.

Задание уровней монстров

Как играть в tower defense. aae85f7854f44c8f418c5fde22153a53. Как играть в tower defense фото. Как играть в tower defense-aae85f7854f44c8f418c5fde22153a53. картинка Как играть в tower defense. картинка aae85f7854f44c8f418c5fde22153a53

Изобретать велосипед заново — обычно плохая идея.

В верхней части MonsterData.cs добавим следующую конструкцию using :

Примечание: обобщения — это мощная концепция C#. Они позволяют задавать типобезопасные структуры данных, не придерживаясь типа. Это удобно для таких классов-контейнеров, как списки и множества. Чтобы подробнее узнать про обобщённые структуры, прочитайте книгу Introduction to C# Generics.

Теперь добавим следующую переменную в MonsterData для хранения списка MonsterLevel :

Сохраните файл и переключитесь в Unity, чтобы настроить каждый уровень.

Выберите Prefabs/Monster в Project Browser. В Inspector теперь отображается поле Levels компонента MonsterData (Script). Задайте для параметра size значение 3.

Как играть в tower defense. image loader. Как играть в tower defense фото. Как играть в tower defense-image loader. картинка Как играть в tower defense. картинка image loader

Далее зададим стоимость для каждого уровня:

Развернём Prefabs/Monster в Project browser, чтобы видеть его дочерние элементы. Перетащите дочерний Monster0 в поле visualization Element 0.

Далее назначим Element 1 значение Monster1, а Element 2 значение Monster2. В GIF показан этот процесс:

Как играть в tower defense. image loader. Как играть в tower defense фото. Как играть в tower defense-image loader. картинка Как играть в tower defense. картинка image loader

Когда вы выбираете Prefabs/Monster, префаб должен выглядеть так:

Как играть в tower defense. image loader. Как играть в tower defense фото. Как играть в tower defense-image loader. картинка Как играть в tower defense. картинка image loader

Задание текущего уровня

Вернитесь к MonsterData.cs в IDE и добавьте к MonsterData ещё одну переменную.

В частной переменной currentLevel мы будем хранить текущий уровень монстра.

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

Довольно большой кусок кода на C#, правда? Давайте разберём его по порядку:

OnEnable будет вызван сразу же при создании префаба (если префаб был сохранён в состоянии enabled), но OnStart не вызывается, пока объект не начинает выполняться как часть сцены.

Сохраните файл и вернитесь в Unity. Запустите проект и расположите монстров; теперь у них отображаются правильные спрайты самого нижнего уровня.

Как играть в tower defense. image loader. Как играть в tower defense фото. Как играть в tower defense-image loader. картинка Как играть в tower defense. картинка image loader

Апгрейд монстров

Вернитесь в IDE и добавьте в MonsterData следующий метод:

Можно использовать этот метод, чтобы узнать, возможен ли апгрейд монстра.

Для повышения уровня монстра добавьте следующий метод:

Проверяем функционал апгрейдов

Сохраните файл и вернитесь к PlaceMonster.cs в IDE. Добавьте новый метод:

Реализуем улучшения за золото

Чтобы включить опцию апгрейда, добавим к OnMouseUp ветвь else if :

Сохраните файл и вернитесь в Unity. Запустите игру разместите и улучшите любое количество монстров (но это пока).

Как играть в tower defense. image loader. Как играть в tower defense фото. Как играть в tower defense-image loader. картинка Как играть в tower defense. картинка image loader

Платим золотом — Game Manager

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

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

На рисунке ниже показаны все объекты, которые должны принимать в этом участие.

Как играть в tower defense. image loader. Как играть в tower defense фото. Как играть в tower defense-image loader. картинка Как играть в tower defense. картинка image loader

Все выделенные игровые объекты должны знать, сколько золота есть у игрока.

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

Нажмите правой клавишей на Hierarchy и выберите Create Empty. Назовите новый объект GameManager.

Добавьте к GameManager новый скрипт C# с названием GameManagerBehavior, а затем откройте его в IDE. Мы будем отображать общее количество золота игрока в метке, поэтому в верхней части файла добавьте следующую строку:

Теперь, когда GameManager знает о метке, как нам синхронизировать количество хранящегося в переменной золота и отображаемой в метке величины? Мы создадим свойство.

Добавьте в GameManagerBehavior следующий код:

Насколько щедрыми мы будем? Добавьте в Start() следующую строку, чтобы дать игроку 1000 золота, или меньше, если вам жалко денег:

Назначение объекта метки скрипту

Сохраните файл и вернитесь в Unity. В Hierarchy выберите GameManager. В Inspector нажмите на круг справа от Gold Label. В диалоговом окне Select Text выберите вкладку Scene и выберите GoldLabel.

Как играть в tower defense. image loader. Как играть в tower defense фото. Как играть в tower defense-image loader. картинка Как играть в tower defense. картинка image loader

Запустите сцену и в метке отобразится Gold: 1000.

Как играть в tower defense. image loader. Как играть в tower defense фото. Как играть в tower defense-image loader. картинка Как играть в tower defense. картинка image loader

Проверяем «кошелёк» игрока

Откройте в IDE скрипт PlaceMonster.cs и добавьте следующую переменную экземпляра:

Мы воспользуемся gameManager для получения доступа к компоненту GameManagerBehavior объекта GameManager сцены. Чтобы задать её, добавьте в Start() следующее:

Возьми мои деньги!

Мы пока не вычитаем золото, поэтому дважды добавим внутрь OnMouseUp() эту строку, заменив каждый из комментариев // TODO: вычитать золото :

Сохраните файл и вернитесь в Unity, улучшите несколько монстров и посмотрите на обновление значения Gold. Теперь мы вычитаем золото, но игроки могут строить монстров, пока им хватает места; они просто берут деньги в долг.

Как играть в tower defense. image loader. Как играть в tower defense фото. Как играть в tower defense-image loader. картинка Как играть в tower defense. картинка image loader

Бесконечный кредит? Отлично! Но мы не можем этого позволить. Игрок должен иметь возможность ставить монстров, пока у него достаточно золота.

Проверка золота для монстров

Переключитесь в IDE на PlaceMonster.cs и замените содержимое CanPlaceMonster() следующим:

Задание для вас: самостоятельно добавьте в CanUpgradeMonster() проверку, достаточно ли у игрока золота.

Она будет проверять, больше ли у игрока Gold, чем цена апгрейда.

Сохраните и запустите сцену в Unity. Теперь попробуйте-те как неограниченно добавлять монстров!

Как играть в tower defense. image loader. Как играть в tower defense фото. Как играть в tower defense-image loader. картинка Как играть в tower defense. картинка image loader

Теперь мы можем строить только ограниченное количество монстров.

Башенная политика: враги, волны и точки маршрута

Настало время «проложить дорогу» нашим врагам. Враги появляются на первой точке маршрута, движутся к следующей и повторяют процесс, пока не дойдут до печенья.

Заставить врагов двигаться можно так:

Создание дороги из точек маршрута

Нажмите правой клавишей на Hierarchy и выберите Create Empty, чтобы создать новый пустой игровой объект. Назовите его Road и расположите в точке (0, 0, 0).

Теперь нажмите правой клавишей на Road в Hierarchy и создайте ещё один пустой игровой объект как дочерний элемент Road. Назовите его Waypoint0 и разместите в точке (-12, 2, 0) — отсюда враги будут начинать своё движение.

Как играть в tower defense. image loader. Как играть в tower defense фото. Как играть в tower defense-image loader. картинка Как играть в tower defense. картинка image loader

Аналогичным образом создайте ещё пять точек маршрута со следующими названиями и позициями:

Как играть в tower defense. image loader. Как играть в tower defense фото. Как играть в tower defense-image loader. картинка Как играть в tower defense. картинка image loader

Создание врагов

Теперь создадим несколько врагов, чтобы они могли двигаться по дороге. В папке Prefabs есть префаб Enemy. Его позиция равна (-20, 0, 0), поэтому новые экземпляры будут создаваться за пределами экрана.

Как играть в tower defense. image loader. Как играть в tower defense фото. Как играть в tower defense-image loader. картинка Как играть в tower defense. картинка image loader

Двигаем врагов по дороге

Добавьте новый скрипт C# с названием MoveEnemy к префабу Prefabs\Enemy. Откройте скрипт в IDE и добавьте следующие переменные:

В waypoints в массиве хранится копия точек маршрута, а строка [HideIninspector] над waypoints гарантирует, что мы не сможем случайно изменить это поле в Inspector, но по-прежнему будем иметь доступ к нему из других скриптов.

currentWaypoint отслеживает, из какой точки маршрута идёт враг в текущий момент времени, а в lastWaypointSwitchTime хранится время, когда враг прошёл по ней. Кроме того, мы храним скорость speed врага.

Добавим эту строку в Start() :

Так мы инициализируем lastWaypointSwitchTime со значением текущего времени.

Чтобы враг двигался вдоль маршрута, добавим в Update() следующий код:

Разберём код пошагово:

Сообщаем врагам направление движения

В своём текущем состоянии враги не знают порядка точек маршрута.

Выберите Road в Hierarchy и добавьте новый скрипт C# под названием SpawnEnemy. Откройте его в IDE и добавьте следующую переменную:

Мы будем использовать waypoints для хранения ссылок на точку маршрута в сцене в нужном порядке.

Сохраните файл и вернитесь в Unity. Выберите Road в Hierarchy и задайте Size массива Waypoints равным 6.

Перетащите каждый из дочерних элементов Road в поля, вставив Waypoint0 в Element 0, Waypoint1 в Element 1 и так далее.

Как играть в tower defense. image loader. Как играть в tower defense фото. Как играть в tower defense-image loader. картинка Как играть в tower defense. картинка image loader

Теперь у нас есть массив, содержащий точки маршрута в правильном порядке — заметьте, враги никогда не отступают, они упорно стремятся к сладкой награде.

Проверяем, как всё это работает

Откройте в IDE SpawnEnemy и добавьте следующую переменную:

Чтобы создать врага при запуске скрипта, добавим в Start() следующий код:

Сохраните файл и вернитесь в Unity. Выберите в Hierarchy объект Road и выберите для параметра Test Enemy префаб Enemy.

Запустите проект и посмотрите, как враг движется по дороге (в GIF для большей наглядности скорость увеличена в 20 раз).

Как играть в tower defense. image loader. Как играть в tower defense фото. Как играть в tower defense-image loader. картинка Как играть в tower defense. картинка image loader

Заметили, что он не всегда смотрит туда, куда идёт? Это забавно, но мы ведь пытаемся сделать профессиональную игру. Поэтому во второй части туториала мы научим врагов смотреть вперёд.

Куда двигаться дальше?

Мы уже сделали многое и быстро движемся к созданию собственной игры в жанре tower defense.

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

Скачайте готовый результат отсюда.

Во второй части мы рассмотрим создание огромных волн врагов и их уничтожение. До встречи!

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *