Пятница, 22 Ноября 2024, 12:12

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Туториал как создать стратегию в construct 2
KIRILARTДата: Пятница, 27 Октября 2017, 21:10 | Сообщение # 1
был не раз
Сейчас нет на сайте
Чему мы научимся?
Мы научимся создавать , создавать искусственный интеллект юнитов, добывать ресурсы, сделать врага и многое другое.

Урок 1. Ландшафт.
Ландшафт. Вы конечно можете создать деревья, водоёмы и т.д. Я этого делать не буду, чтобы экономить время. Я сделаю 2 вида камня. Первый камень = обычный камень. С помощью него мы научимся строить бараки, а второй камень = золото, на нём юниты будут добывать деньги.

Урок 2. Юниты и искусственный интеллект.
Для юнитов я создам спрайт, но не буду рисовать юнитов чтобы не заморачиваться. Юниты у меня будут черными квадратами. Далее я вам покажу таблицу событий. Слева будут номера событий. Я буду называть каждое событие по номеру, и что оно даёт.

29 событие отвечает за pathfinding юнита. Ах да! Забыл сказать, что юниту мы добавляем три поведения
1. Solid(солидный твердый объект.)
2. 8 directions(для управления с виду сверху. Во вкладке слева в свойствах 8 directions default control поставьте no.)
3. Pathfinding(основа интеллекта.)
Переходим к событию. Как только мы кликнули дважды куда-то, то наши юниты пытаются туда найти путь.
30 событие отвечает за то, что если наш юнит нашёл путь, то он по нему идёт.
31 событие мы ещё не разобрали. Указанные тут спрайты мы ещё не создали.
33 событии вам надо создать личную переменную юниту под названием HP. И если у нашего юнита less or equal меньше или равно 0 HP, то он уничтожаеться.
Урок 3. Добыча ресурсов.
Вот тут нам надо попотеть. Вам надо создать новый спрайт. Я назвал его zonestone. Она будет отвечать за зону камня. И когда в нашей зоне находится наш юнит, он добывает ресурсы.
Создаём глобальную переменную назвав её stone. Это будет наличие камня.

2-3 эти события связаны. 2 событие обозначает если наш юнит периодично соприкасаеться с zonestone то есть находится в ней, то в 3 под событии каждые 3 секунды, и для каждого юнита мы прибавляем по 10 камня. На add 10 money не обращайте внимания.

Урок 4. Вражеские юниты и их искусственный интеллект.
Чтобы сделать какой либо объект вам нужно что? Создать новый спрайт! Ему мы добавляем
все поведения что и в наших юнитах то есть soid, 8dir, pathfinding.
Они у меня будут красными квадратами. Я создам отдельную группу с юнитами врага.
Не забудьте у врага во вкладке properties поставить default control: no!
Давайте дальше. Поработаем над их мозговыми частями.

Вам придётся создать 2 личные переменные врагу.
1 личная переменная будет называться move тип у неё будет number, а число 1.
2 личная переменная будет называться moveex тип boolean а число true
Перейдем к событиям.
13 событие значит, что как только наш враг появился на свет, у него личная переменная move ставиться на
Код
choose(1, 2)

Choose= Команда позволяющая выбирать число в скобках случайно. В замену ему есть random,
но там он выбирает с сотами
например:
Choose выбрала 3, 5, 78
Random выбрал 3.348598954, 5.934829347285 74.4456456456456.
Что наше событие значит? Когда наш враг заспавнился, он будет идти к случайному камню, либо к случайному
золотому камню. Чтобы это реализовать вам надо посмотреть на следующие 4 события. Вообще их 2 а остальные
2 это подсобытия.
Если move равно 1, и moveex true, то каждую 1 секунду он ищет путь к stone
Код
stone.X stone.Y

Дальше, если move равна 2 и moveex true. То каждую 1 секунду ищет путь к stone 2
Код
stone2.X stone2.Y

18 событие отвечает, за то, что если наш враг найдет путь то он по нему пойдет.
19 событие каждые 15 секунд move у врага ставится на
Код
choose(1, 2)

Не в коем случае не ставьте moveex на false! Я вам скажу где можно будет отключать.
Урок 5. Вражеские юниты дерутся с нашими.
Это сложно, но возможно.

5 событие создаём новый спрайт zoneenemy, заливаем голубым цветом, и делаем его invisible невидимым.
Он будет чуть больше врага. Это будет зона действия врага. Если до неё докасаеться наш юнит, то у юнита каждую
секунду будет -10 HP.
Вернёмся к 5 событию. Когда наш враг создался, то у него появляеться zoneenemy
6 событие every tick каждое мгновенье. Если кто не знал мгновенье = 0.016 секунды.
Every tick у нашей zoneenemy set pozition ставиться позиция на
Код
solderenemy.X solderenemy.Y

7 сложное событие 8 подсобытие тоже сложное.
Когда начался уровень, то наша 1 зона уничтожаеться. При удалении в редакторе, её UID меняеться имейте в виду!
Чтобы посмотреть UID зоны зайдите в properties и в самом верху написан UID объекта.
Дальше мы находим на редакторе зону по этому UID и уничтожаем.
9-10 связанные события. Если наш юнит периодически касаеться зоны врага, то у него каждую секунду отбираются
HP.
11 событие элементарное. Если у нашего врага less or equal меньше или равно HP, то он уничтожаеться
То же самое сделайте и с нашими юнитами, только зона будет другая.
Урок 6. UI User Interface.
1. Что такое UI? Это инвентарь, или панель действий.
Чтобы её сделать создаем новый layer под названием UI, и ставим Parallax 0, 0.
Чтобы сделать постройку барака вам придеться создать 2 спрайта с башней барака. 1 спрайт для уровня, а 2 для UI. Создайте 2 спрайту личную переменную под названием select. После, создаем событие. Если мы кликнули на 2 спрайт барака, то Select станет 1, аналогично 0. И создаем событие on click когда мы кликнули, и при этом личная переменная барака 2 стоит на 1, то на позиции мыши создаёться объект барак.
Урок 7. Стоимость постройки.
Мы можем создавать бесконечно бараки, но как сделать им определённую сумму?
В событии создания постройки добавляем ещё 1 событие, в моём случае 2.
В 1 событии я сравниваю глобальную переменную money Greater or equal (стоимость, в моём случае 150) т.е. больше или равно 0. Но деньги не отнимаются. В действиях, мы отбираем substract от глообальной переменной money нашу стоимость (150). Аналогично с другими ресурсами.

Область выделенная серым отвечает за то, что кликнули ли мы.
Черным выделено если у нас выбран спрайт 2 барака is sel.
Желтым есть ли у нас 300 денег, а красным есть ли 100 камня, но что это за событие выделенное коричневым??
Я просто создал новый спрайт, и новую глобальную переменную. Спрайт всегда на позиции курсора, а если он касается UI фона, то UICOL становится 1, аналогично 0.
То, что выделено коричневым, обозначает не касается ли наш спрайт UI, если нет, то всё ок.
Урок 8. Ценность постройки.
Зачем я покупал барак, если он ничего не делает? Сейчас мы сделаем барак полезным.
Заходим в редактор барака и создаём новый image point. Вот как это сделать:


Что такое Image Point. Есть 2 вида image point. 1 origin 2 просто image point.
Что такое Origin image point? Это центр оси вращения объекта. То есть в центре земли находится тот самый её origin. Расположение origin на земле = (Экватор От севера до юга) + (Экватор от запада до востока) : 2, и мы получим позицию ядра земли, или origin.
Что такое просто image point? Это точка объекта, не связанная с позицией, или вращением спрайта. Но на эту точку можно заспавнить объект.
И точно также мы сегодня заспавним на наш image point барака юнита. Переходим к событиям.
Каждые например интервал между спавнов юниты будет 10 сек. Каждые 10 секунд барак spawn another object выбираем юнита image point 1.
Урок 9. Барак врага, и автоматическое построение барака врага.
Я решил сделать барак врагу.

Пройдемся по номерам событий.
Событие под номером 79 обозначает то, что каждые 10 секунд, на image point 1 у вражеского барака спавниться враг.
Событие под номером 82 обозначает то, что если наш барак врага не до касается до его зоны хила врага, то он создаёт рядом с собой на image point 0 зону хила. Можно вместо этого поставить on created, но мы будем менять позицию барака (потом поймёте почему), и за счёт этого наша зона не меняет позицию, и остаётся в исходном положении. Можете ещё сделать событие если наша зона не до касается до барака врага, то она уничтожается. Но ведь враг очень пассивный, и он самостоятельно не спавнит как мы новые бараки. Чтобы это исправить вам надо положить глаз на события 80, и 81. 80 событие отвечает за то, что каждые 30 секунд наш барак врага спавнится на случайной области уровня.
Код
random(layoutwidth) random(layoutheight)

81 событие отвечает за то, что если наш барак заспавнился в текстуре, то он телепортируется опять по области уровня.
Код
random(layoutwidth) random(layoutheight)

А на этом пока всё! Скоро я буду ещё дописывать тему, а пока изучайте исходник сами. Всё что будет в этом исходнике, я допишу сдесь! Ждите...
Исходник
Пишите в комментариях, если чтото не получилось, или не понятно. Я лично попытаюсь объяснить подробнее.
рубрика "Объяснение уроков от подписчиков"


Добавлено (27 октября 2017, 11:40)
---------------------------------------------
Столько просмотров и 0 комментариев?

Добавлено (27 октября 2017, 21:10)
---------------------------------------------
Вы будете сегодня комментировать или нет? Ало 107 просмотров!


Жизнь боль...

Сообщение отредактировал KIRILART - Суббота, 28 Октября 2017, 13:18
maker-rusДата: Пятница, 27 Октября 2017, 23:50 | Сообщение # 2
Гений
Сейчас нет на сайте
KIRILART, очень не читабельно, приведи пост в порядок ^_^
KIRILARTДата: Суббота, 28 Октября 2017, 11:24 | Сообщение # 3
был не раз
Сейчас нет на сайте
Цитата maker-rus ()
очень не читабельно,

Что ты имел в виду под "нечитабельно?"


Жизнь боль...
GqqdArtДата: Воскресенье, 29 Октября 2017, 16:15 | Сообщение # 4
был не раз
Сейчас нет на сайте
Цитата KIRILART ()

Что ты имел в виду под "нечитабельно?"
ну это не для новичка
вот я если не понимаю в констаркте ничего из этого урока я точно ничего не пойму а тот кто разбирается в канстаркте этот урок тоже наврятли что то новое даст..
Вы либо поверхностно обо всем расказывайте как в принцеи тут... или просто исходник и можно даже ничего не писать эфект тот же будет..


Сообщение отредактировал GqqdArt - Воскресенье, 29 Октября 2017, 16:16
maker-rusДата: Воскресенье, 29 Октября 2017, 19:52 | Сообщение # 5
Гений
Сейчас нет на сайте
Цитата KIRILART ()
Что ты имел в виду под "нечитабельно?"

Нет введения, нарушена целостность предложений, мысли не структурированы, ужасное форматирование текста (Несоразмерный шрифт, номерной список не обернут в list, картинки тут, вроде как были, в посту, не обернуты в спойлер, потом пропали и тд и тп), весь урок пишется по исходнику, а должен писаться исходник по уроку.
KIRILARTДата: Понедельник, 30 Октября 2017, 17:44 | Сообщение # 6
был не раз
Сейчас нет на сайте
Цитата GqqdArt ()
вот я если не понимаю в констаркте ничего из этого урока я точно ничего не пойму а тот кто разбирается в канстаркте этот урок тоже наврятли что то новое даст..

Я что? Зря рубрику сделал?


Жизнь боль...
AlexandrKДата: Среда, 13 Декабря 2017, 11:36 | Сообщение # 7
уже был
Сейчас нет на сайте
Всё супер! Спасибо за рубрику! Продолжай пожалуйста, мне очень интересно и в будущем пригодится обязательно!
LextorДата: Понедельник, 26 Октября 2020, 15:09 | Сообщение # 8
был не раз
Сейчас нет на сайте
KIRILART, Добрый день! Картинки не открываются, не понятно на каком движке. Я разрабатываю браузерную стратегию, если нужно приму участие в вашем проекте, готов к сотрудничеству.
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг