Rise of Magic

Игра с механикой Tower Defence и RPG составляющей, отвечающей за прокачку умений, улучшение башен и развитие деревни. Игра разрабатывается на движке Unity3D Полное описание»

avatar

Tower Defence своими руками - мысли вслух

опубликовал в Блог проекта Rise of Magic
Tower Defence своими руками - мысли вслух Доброго времени суток!

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

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

Так вот. Началось все относительно недавно — где-то в феврале-марте 2012 года. Именно тогда я впервые познакомился с игровым движком, а точнее с тем, что там можно делать. А как оказалось, делать можно все! Для этого «всего лишь» требуется какое-никакое знание языка программирования (JavaScript или C#). И вот тут то я и встрял — до этого я ни разу в жизни не программировал (редактор Warcraft III с его триггерами и Thinking Particles не в счет — здесь совсем другой уровень), даже в школе никогда не было уроков по программированию. Хотя… были, кажется Pascal или что то подобное, но было это так давно и неправда, что все знания с тех времен улетучелись без остатка. Пришлось лезть в интернет за обучающими статьями и видеоуроками. Первый же попавшийся урок каждые 5 минут напоминал смотреть официальную справку по скриптописанию, и это правило мне очень и очень помогло в дальнейшем. Еще полным шоком для меня была необходимость писать несколько строк скрипта для совсем уж элементарной вещи — выхода из игры через Esc.

В итоге, как оказалось, программировать не так уж и сложно. Главное понимать логику программы и языка программирования (кстати, мой выбор пал на C#. Он мне показался более понятным и гибким). Мои первые поделки не отличались особой уникальностью — где-то побегать, что то осмотреть, куда нибудь нажать. Раз за разом я чувствовал себя все лучше и лучше в редакторе скриптов, и в какой то момент все настолько стало «родным», что я практически без запинок и ошибок писал один скрипт за другим. И вот тут я загорелся идеей сделать что-то грандиозное! Для начала достаточно небольшое, но с богатым функционалом — так родился проект, на который я потратил полтора месяца, четыре недели из которых я был занят написанием скриптов! Вот это было действительно классно — однако я понимал что этого мало. Да, я смог реализовать смену дня и ночи, переключение камер, множество различных режимов «игры» и некоторые другие фишки. Но весь функционал был завязан лишь на использовании различных компонентов в редакторе, да и только. Именно тогда родилась идея создания полноценной игры.

Произошло это уж совсем недавно — буквально полторы-две недели прошло с тех пор как я создал пустой проект и начал его заполнять. Идея (тип) игры определилась моментально — это будет игра типа Tower Defence. Да, конечно не шибко оригинально, однако настоящих и полноценных TD игр (да еще и в 3D!) практически нет. Тут же хочется вкратце описать идею:

Три полноценные эпохи:

  • Средневековье
  • Что-то типа 18-19 века в стиле стимпанк
  • Далекое будущее — около 2600 года

Эти три эпохи будут уникальными в плане игровой механики и визуального стиля — главное сделать все так как задумано. В каждой эпохе будет доступно по 4 вида башен, которые в процессе прокачки получат по одной дополнительной ветви развития. Думаю, такая система будет очень интересна и разнообразна. О количестве уровней (карт) для каждой эпохи пока говорить не приходится — это пока слишком далекие цели, и сначала нужно выполнить то что нужно сделать прямо сейчас.


Первые наброски башни магов

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

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

Прикинув в голове, какие мне потребуются возможности у башни, я принялся писать скрипты. Сначала был написаны два скрипта — первый позволял мобу (противнику) иметь какое-то определенное здоровье и краснеть по мере его уменьшения, а второй как раз отвечал за выстрелы у башни. Все бы ничего, но вот уж очень глупо смотрелось то, как башня наносит урон мобу, а снаряд до него еще не долетел. Пришлось править… и в последствии не раз возвращаться к скрипту атаки для его модернизации. Но какая TD без возможности установки собственной башни? Еще один скрипт, и мы можем ставить башню в указанном мышкой месте. Через пару дней игра приняла вид скриншота ниже, и настала пора заняться более детальной проработкой игры.



И первое что было в списке задач — заставить мобов идти по заранее заданному пути. Раньше я с этим ни разу не сталкивался и с этой задачей мне пришлось провозиться с пол дня, пока не вспомнил про Pathfinding :) Вот теперь то игра заиграла новыми красками! С горящими счастьем глазами я наблюдал за тем, как мои кубики бежали по новой карте, точнее по дорожке новой карты! Но тут то и появились первые косяки с башней — она была просто не в состоянии попасть по далеко бегущему мобу, да еще и в прицел она брала только самую ближнюю к себе цель. Пришлось менять скрипты… вводить второй массив и делать выборку по самым дальним, но в то же время в радиусе действия башни, целям. Порадовавшись правильной работе скрипта, пришлось вернуться к проблеме, когда башни просто не попадали по слишком далеким целям. Вот тут то и пригодилась школьная геометрия :) Да, теперь на один вселенский вопрос меньше — математика с геометрией нашла свое место в жизни. Повозившись с синусами, косинусами, несколькими переменными и введя галочку «стреллять на упреждение», башни таки начали успешно попадать по целям, где бы они ни находились! И для этого не потребовалось никакой «автонаводки» — снаряды летели по прямой до цели и поражали ее! К этому моменту игра приобрела достаточно красивый внешний вид и в нее наконец таки можно было поиграть, хотя и всего 5 минут.



Следующие 4 дня были полностью посвящены скриптам, были добавлены и изменены следующие вещи (в хронологическом порядке):

  • Указание радиуса действия башни при наведении мышки на нее.
  • Продажа башни по цене в 80% от цены покупки.
  • Возможность апгрейда башни до 3 уровня (визуальные отличия заключаются только в цвете «пульки»). Апгрейд до 2 уровня обойдется в 25 золотых, до 3 уровня в 45.
  • Изменен принцип «выигрыша». Теперь прежде чем появилась волшебная строчка «Вы выиграли» нужно убить всех оставшихся противников после 5 уровня.
  • За запуск уровня без ожидания теперь дается 2/3 от оставшегося времени до него.
  • Можно ставить ледяную башню! Для этого нажимаем на место для башни не левой кнопкой мыши, а правой. Ледяная башня стоит 25 золотых, не имеет апгрейдов и замедляет цели на 50%.
  • Допилена возможность «быстрого» (в 2 раза быстрее) перемещения по карте с помощью стрелок на клавиатуре.
  • Счетчик очков.
  • Счетчик уровней теперь показывает общее количество уровней в игре.
  • При нажатии на шифт, скорость игры увеличивается в 3 раза. При нажатии на пробел — ставится пауза.
  • Башни научились стреллять по навесной траектории — теперь стрелы (стрелы ли?) больше похожи на стрелы.
Как вы видите, добавлено довольно много важных возможностей, и на реализацию каждой из них уходило (до этого момента) порядка половины рабочего дня. И, как это ни было странным, программируется это дело «взахлеб» — оторваться от процесса практически нереально! Ой, я обещал вернуться к башням лучников — возвращаемся!

Следующие недели у меня ушли на существенную модернизацию игры по сравнению с тем что Вы видели на скриншотах выше. Ушло много времени на создание различных объектов — в том числе были созданы и затекстурированы башни. В итоге башни лучников теперь имеют следующий вид (здесь лишь 3 уровня из запланированных 5):


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


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



Чтож, думаю на этом пока можно остановиться и пригласить вас следить за проектом на странице вконтакте. Там же вы увидите архив «билдов» и сможете скачать все самое свежее. Более того, запущен сайт проекта RiseOfMagic.ru, однако за неумением делать сайты, там лежит лишь сама игра без какого-либо графического оформления :) Напоследок хотел бы поделиться парочкой скриншотов. Да, выглядит пока что простовато, зато работает и играется как нужно :) Спасибо за внимание!



9 комментариев

avatar
Люблю читать истории людей, которые начинают что-то делать без знаний в этой области и в итоге, упорствуя достигают цели, как вы начали разрабатывать игру не зная программирования. Очень мотивирует, гораздо больше, чем истории людей, которые разработали что-то, проучась перед этим в универе пять лет.

Уже успел пройти первый уровень вашей игры, очень не плохо.

Как-то планируете монетизировать игру? Будете выпускать только для социальных сетей? Мне кажется для планшетов и телефонов такая игра отлично бы подошла в плане простого управления и небольших требований.
avatar
Приятно читать такие комментарии :)

Монетизация планируется, но о ней еще очень рано говорить. Насчет того, где появится игра… тоже пока неясно, предпочтение социальным сетям.
avatar
Выглядит хорошо. Я уже давно думаю создать ТД на юнити, но всё руки не доходят. Удачи вам! Только пиши более интригующе.
avatar
Интригующе? :) Попробую :)
avatar
Насчет «Пиши более интригующе». Можно автор блога не будет соответствовать твоим ожиданиям? Это тоже самое, что твой кореш покатает тебя на своей девяточке, а ты ему потом скажешь, крутая тачка бро, только в следующий раз покупай красную а не синюю.

По теме, очень круто, что на одну качественную игру этого жанра станет больше. В детстве вспомнил, как с соседом протянули LAN кабель (нэта тогда ещё не было у нас) и рубились в карту с башнями в WarCraft 3…

Будет кооператив?
avatar
Кооператив навряд ли. Хотя если руки дойдут, то что-нибудь придумаю. Рано или поздно сетевая игра в каком-нибудь виде да появится :)
avatar
Добавить возможность пригласить друга/друзей из социальной сети и там же зарубиться в башни, и будет TOP сто процентов!
avatar
Я подумаю над этим :) Такое действо будет неоправданно по сюжету, так что если есть шанс увидеть такой кооператив — то только в отдельных картах.
avatar
Я предложил, пусть пишет, как знает. Ему решать, а не тебе.
Чтобы оставить комментарий необходимо .