Maroder
Вредитель...
offline
Опыт:
1,209Активность: |
Создание простейшего AI для карт типа Arena
Я хочу в этой статье представить способ создания простейшего AI, который будет управлять вражескими героями и\или героями ваших союзников.
Этот материал направлен на то, чтобы помочь новичкам создать свой первый AI. ---------- Для начала давайте разберёмся, за что будет отвечать каждый триггер по отдельности. Триггер 1 – отвечает за патрулирование случайной точки карты. Триггер 2 – отвечает за атаку противников, находящихся в небольшом радиусе от героя. Триггер 3 – отвечает за движение героя к источнику жизни, если у него менее 100 здоровья. И, наконец, триггер 4 – отвечает за воскрешение героя, в случае его внезапной смерти… :) Хочу добавить, что если в вашей карте много героев, то процесс воскрешения можно делать не отдельно для каждого героя, а уместить в один общий триггер. ---------- Вы должны знать, что в своей статье я не привожу пример идеального AI, здесь предложены лишь только его основы. (Но ведь это лучше, чем ничего). В своей статье я не описываю подробное создание карты и героев в ней. Я только лишь описываю создание триггерного AI. ---------- Итак, начнём-с! Выберем на панели инструментов какого-нибудь героя (например, повелитель огня). Пусть он будет нашим врагом. Заходим в редактор триггеров. Создаём там отдельную категорию, в которой будет находиться AI для вражеского героя. Назовём её “PovelFireAI”. Внутри этой категории создаём четыре триггера: “Patrul”, “Attack”, “Life” и “Voskreshenie”. А также создадим переменную “Vrag” с типом “Боевая единица”, она нам понадобится чуть позже. * Patrul * - пишем событие для первого триггера: Время – Every 10 seconds of game time Действие: Боевая единица – Order <вражеский герой> to Патрулировать (Random point in (Playable map area)) //<вражеский герой> - герой, для которого вы пишете AI * Attack * Событие: Боевая единица – A unit comes within 1700.00 of <вражеский герой> Действие: Set <переменная “vrag”> = (Entering unit) Боевая единица – Order <вражеский герой> to Атаковать <переменная “vrag”> //<переменная “vrag”> - переменная, которую вы создавали чуть ранее, не забыли про неё??? //<вражеский герой> - герой, для которого вы пишете AI * Life * Событие: Время – Every 5 seconds of game time Действие: If Здоровье <вражеского героя> меньше 100 Then Триггер - Turn off Patrul Триггер - Turn off Attack Боевая единица – Order <вражеский герой> to Двигаться (Center of <созданная область возле источника>) Wait 60.00 seconds Триггер - Turn on Patrul Триггер - Turn on Attack Else Триггер - Turn on Patrul Триггер - Turn on Attack //<созданная область возле источника> - небольшая область, которую нужно создать возле источника жизни * Voskreshenie * Событие: Боевая единица – <вражеский герой> умирает Действие: Герой - Instantly revive <вражеский герой> at (Random point <созданная область возле источника>) Показать revival graphics ---------- Вы можете скачать маленькую карту, в которой демонстрируется пример вышеприведённого AI. Вот и всё. Пользуйтесь и наслаждайтесь!!! Но слишком не критикуйте - я же не профессионал и делал статью, соответственно, не для пофессионалов! Добавил к статье карту, в которой не только тестируется AI. Но это пока только DEMO версия, в ней пока мало что особо интересного. Посмотрите, увидите сами!!! :end: Отредактировано Maroder, 08.06.2006 в 11:20. |
06.06.2006, 18:02 | #1
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Warer
ИИИИИИИ
offline
Опыт:
2,138Активность: |
Отличная статья!
Я как раз сейчас создаю АРЕНУ на 20 героев, все никак не знал с чего начать делать триггеры! |
06.06.2006, 18:11 | #2
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Soul reAver
Мертвый вампир
offline
Опыт:
1,542Активность: |
Уж слишком он простой...
Зачем в триггере life проверяешь жизнь героя опять. Ведь в триггер гарантированно попадет только тот герой, жизни которого меньше 100. Где покупка/подбор предметов??
А вообще самое главное, это взаимодействие АИ с остальными фичами. Надо было начать с того, как АИ выберет героя ИМХО. |
06.06.2006, 18:27 | #3
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
senatus
тихий и скромный...
offline
Опыт:
7,423Активность: |
Наман, наман. Он подсказал идею. Дальше уж кому что. |
06.06.2006, 18:56 | #4
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
N.Sy.Prophet
Йа Байан
offline
Опыт:
13,122Активность: |
Уф... У тебя тут стока ошибок, причём очень глупых... проверь все триггеры :D |
06.06.2006, 19:26 | #5
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Maroder
Вредитель...
offline
Опыт:
1,209Активность: |
Я предупреждал, что это AI для новичков, и кто первый раз решилсоздать свой собственный AI. Естесственно, мегапрофессионалам статья не поможет Отредактировано Maroder, 06.06.2006 в 21:38. |
06.06.2006, 20:50 | #6
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Aspid
offline
Опыт:
8,361Активность: |
Цитата:
здравствуйте дедушка еврей вы меня извините но я вашъ язикъ не понимайтъ... по поводу статьи....имхо это не статья а полный бред. кто хотя бы недельку поработал с редактором тригеров все это знает... ффтопку... |
|
06.06.2006, 21:24 | #7
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
Это не а аи а просто бот, причём на одного игрока Set <переменная “vrag”> = (Entering unit) вотЪ ни масивов ни кеша. |
06.06.2006, 21:33 | #8
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Vedun
offline
Опыт:
2,809Активность: |
Проще скачать пример из моей карты (там и предметы берёт). Кстати,Maroder, расскажи кто тебе намекнул, как делать. :)
Чё то я не понял... Зачем ты два раза проверяешь здоровье героя? И чё герой воскрешается в случайной позиции? Некрасыво-о получается! И ещё... Maroder, почему твой предел жизни - 100? А если уровень героев будет 500? Они эти 100 здоровья с одного удара снесут. Кстати, DioD, совсем не обязательно использовать кеш. Maroder, посмотри мою карту - там и спеллы испольузют и предметы берут. ЗЫ. Avatar, чё у тебя с кодировкой? |
06.06.2006, 22:00 | #9
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
Я не про кеш, а про синглинстантность. |
06.06.2006, 22:11 | #10
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Aspid
offline
Опыт:
8,361Активность: |
Vedun это не у меня кодировка это у Maroder-а сообщение закодировано было он потом исправил ;)
|
06.06.2006, 22:29 | #11
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
Есть прога для определения кодировки, ищу уже не один месяц, найти не могу, хотя она от майкрософт. |
06.06.2006, 22:40 | #12
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
dk
offline
Опыт:
60,293Активность: |
ну конечно нечего хорошего в статье нет, но Maroder молодец.
Если уж и писать статью про АИ, то на всех игроков и с прокачкой, покупкой, кастованием и т.д. |
07.06.2006, 02:32 | #13
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
ComotozNick
Активность: 666
offline
Опыт:
26,206Активность: |
Dead_knight ну что же для ПРОСТЕЙШЕГО АИ вполне пойдёт...
|
07.06.2006, 02:34 | #14
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Van Damm
wait... what?
offline
Опыт:
22,268Активность: |
вот всем заинтересованным сюда
|
07.06.2006, 04:36 | #15
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Vedun
offline
Опыт:
2,809Активность: |
Van Damm, но твоя статья написана для знающих jass, а обсуждаемая - для новичков.
Maroder, шпионом заделался? :) Чё стотью то кодировать? :) Maroder, я решил стравить твой AI со своим (из моей карты - примера к статье, не ввёл ни единой строчки джаза), сёдня, часа через 2 выложу. Посмотрим, кто выиграет! :duel: :) DioD, а как прога называется, может знаю... |
07.06.2006, 08:21 | #16
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Maroder
Вредитель...
offline
Опыт:
1,209Активность: |
Vedun Во-первых, у кого герои будут прокачиваться до 500 уровня, можно сделать, что каждые 10 уровней, максимальное здоровье, при котором герой идёт к источнику, будет увеличиваться на 100 единиц.
А статья закодировалась сама, когда я писал сообщение на форум со своего мобильника. |
07.06.2006, 10:04 | #17
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
ComotozNick
Активность: 666
offline
Опыт:
26,206Активность: |
Maroder надо было не с мобилы писать, а не ленится и залезть нормальным образом.
|
07.06.2006, 11:27 | #18
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
DioD
offline
Опыт:
45,134Активность: |
Цитата:
Не могу найти потомучто забыл как называется, хотя она даже у меня на компе стояла, жаль что формат не щадит никого. |
|
07.06.2006, 11:50 | #19
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|
Vedun
offline
Опыт:
2,809Активность: |
Maroder, гораздо проще ставить: Максимальное здоровье героя * 0.1. Тогда никакой мороки не будет.
Кстати выкладываю на обозрение Дуэль. ЗЫ.Плиз. Кто может помочь? Герой иногда останавливается посреди крты и до-о-олго стоит! |
07.06.2006, 12:37 | #20
+0/−0
Профиль |
Приват |
Поиск |
IP: Записан
|