Разработка Tower Defence на Unity — часть 1
Дисклеймер
Доброго времени суток, ребята. Это моя первая статья вообще и первая в цикле статей о том, как я решил создать игру в жанре Tower Defence. Данный текст я пишу как человек неопытный и только исследующий сферу, так что он может показаться вам интересным, если вы уже давно профессионал в сфере и хотите узнать, с чем сталкиваются новички сейчас, а так же если вы только начинаете свой путь и хотите пройти его, учась на чужих ошибках.
Теперь, когда с дисклеймером покончено, давайте перейдём к теме.
О чём статья?
Tower Defence не самый популярный игровой жанр на данный момент, но вряд-ли у кого-то повернётся язык назвать его малоизвестным. Базовые механики строительства и улучшения башен, крипы, которых нельзя допускать к выходу с уровня — всё это наверняка вызывает в вашей голове образы старых игр, будь то «Защита Асгарда» или, прости Господи, карты для Warcraft’а третьего. Даже те, кто не знают о жанре Tower Defence наверняка играли в такие игры, просто не зная этого.
Отчасти, известность жанра связана с простотой механик, что является плюсом и для казуальных игроков, и для разработчиков. Как правило, игры жанра всегда довольно просты и не требуют от игрока значительной концентрации внимания — игру всегда можно поставить на паузу и подумать о дальнейших действиях.
Тем не менее — не стоит думать, что TD не могут ничем удивить. У некоторых представителей встречаются довольно интересные механики: несколько путей следования для противников, возможность изменения ландшафта, система приоритетности противников для башен. И это не говоря о том, что можно придумать относительно эффектов для самих башен, будь то банальные заморозки и отравления или что поинтереснее. В общем, в действительности здесь есть где разгуляться, и если вы хоть на секунду задумались, когда читали перечисления механик — значит я прав.
В настоящем цикле статей мы рассмотрим разработку Tower Defence под названием Defence the Kernel, поговорим о видении игры, геймплее, инструментах разработчика, процессе создания игры на разных этапах и о релизе. В этой же статье мы рассмотрим концепцию игры и выберем программные средства.
Концепция игры
Рендер небольшой локации, с лазерной башней на переднем плане.
Если с жанром игры всё понятно, то сеттинг остаётся под вопросом. Наиболее частым выбором среди TD является фентезийный сеттинг, чуть реже встречается научная фантастика. Яркими примерами являются Element TD 2 и Axon TD: Uprising, разработанный одной командой Element Studios. В качестве сеттинга для нашей игры были выбраны научная фантастика и постапокалипсис. Предыстория вкратце довольно классическая и вы уже могли догадаться: искусственный интеллект (научная фантастика) восстал и уничтожил большую часть населения земли (постапокалипсис). Простая сюжетная завязка, какая и нужна подобным играм, не так ли? Всё немного сложнее — игроку придётся примерить на себя роль оборонительной вычислительной единицы комплекса машин, защищающего Главное Ядро от остатков человечества. Да, верно, в этой игре мы выступаем на стороне злодея, пытающегося окончательно утвердить свою власть. Более подробно с предысторией можно ознакомиться в группе нашего проекта: Defence the Kernel: TD (vk.com). Теперь давайте обсудим схему и элементы геймплея будущей игры.
Главное Ядро — наш босс, которого мы должны защищать.
Геймплей
В связи с наличием у игры сюжетной завязки и, как следствие, сюжета, игра нуждается в системе сохранений, которая позволит сохранять прогресс в отдельных сохранениях с возможностью загружать их, тем самым менять актуальное состояние игры. Чаще всего в Tower Defence либо нет сюжета, либо он является линейным, что исключает потребность в подобной системе сохранений — весь прогресс сохраняется автоматически, а игра не может быть сброшена или начата с нуля. Это не наш случай, так как мы планируем реализовать нелинейный сюжет. Продвижение же по сюжету будет происходить посредством диалогов, происходящих в начале уровня и в конце.
Так же мы планируем реализовать в игре режим бесконечной игры, в рамках которого игроку придётся продержаться как можно дольше против непрекращающихся волн противников, и онлайн режим, где два игрока будут выстраивать оборону совместно, в общем пространстве.
Рассмотрим механики игры: помимо очевидного строительства, улучшений и т.д. мы подумали, что было бы интересно добавить следующие механики:
Технологии — дерево технологий, где каждая технология открывает новые возможности и башни, а изучается посредством траты специальных очков изучения. Открытие новой технологии напрямую связано с открытием предыдущих и не может быть произведено раньше. Состояние дерева технологий является индивидуальным для каждого прохождения — технологии, изученный в прошлом прохождении не переходят в новое.
Общие технологии — та же механика технологий, но действует глобально, а не в рамках отдельных прохождений. В ней сохраняются все когда либо изученные технологии и применяются для режимов бесконечной игры и онлайн игры.
Система приоритетов для башен — возможность для каждой башни указать приоритет от 1 до 9 для каждого противника на уровне, что в свою очередь будет влиять на то, какой противник будет выбран башней для ведения огня.
Типы урона — разделение башен на несколько классов приводит к идее о разделении урона на разные типы. Например: термальный, кинетический и электромагнитный. Эти типы урона могут по разному влиять на разны противников, что сподвигнет игрока подбирать башни грамотнее, исходя из того, какие противники преобладают на уровне.
Вкладка технологий в разделе сюжетной кампании.
Вкладка карты в разделе сюжетной кампании.
Концепт уровня.
Таково наше видение игры на данный момент.
Программные средства
Первое, что нужно выбрать для разработки — это движок. В связи с опытом разработки на Unity был выбран именно он, так как переучиваться — дело не быстрое, а проект не требует ничего сверхъестественного, что нельзя реализовать в Unity. В данном случае это простое решение.
Для создания саундтреков к игре была выбрана FL Studio, как довольно популярная и хорошо зарекомендовавшая себя программа.
Создание 3D моделей мы осуществляем в такой программе, как Blender 3D. Она удовлетворяет всем требованиям проекта на данный момент и у нас есть опыт работы с ней.
Итого
К чему мы пришли в этой статье? Мы успели рассмотреть концепцию игры, сюжетную завязку, сформировали список механик для дальнейшей реализации и определились с программными средствами для реализации вышеописанного. Неплохое начало — теперь можно приступать к реализации, но возникает вопрос — что должно быть следующим шагом? После составления такого грубого наброска игры нам следует определиться с примерной архитектурой, вместо того чтобы бросаться с места в карьер и начинать писать код. В следующей статье именно этим мы и займёмся — сформируем несколько схем взаимодействия базовых элементов игры, и рассмотрим следующие части: сцены, переходы, система сохранений, настройки и т.д. В общем, займёмся поверхностным проектированием.