XGM Forum
Сайт - Статьи - Проекты - Ресурсы - Блоги

Форуме в режиме ТОЛЬКО ЧТЕНИЕ. Вы можете задать вопросы в Q/A на сайте, либо создать свой проект или ресурс.
Вернуться   XGM Forum > Warcraft> Академия: форум для вопросов> Jass
Ник
Пароль
Войти через VK в один клик
Сайт использует только имя.

Ответ
 
darkVader

offline
Опыт: 197
Активность:
AI...
Не занал куда написать=) Надеюсь не очень промахнулся с разделом.

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

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

Буду очень благодарен любой помощи, заранее спасибо=))))

З.Ы сJass и vJass не владею, только обычный jass на среднем уровне, но очень легко обучаюсь=))))
Старый 01.11.2010, 06:37
Doc

offline
Опыт: 63,163
Активность:
Ну собственно готовый код тебе врядли ктото будет давать. Тебе для карты какого жанра нужен ии?
Старый 01.11.2010, 10:00
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
Хочу создать аи/// что бы аи был не примитивным
тогда хорошо рассмотри первую ссылку.
Старый 01.11.2010, 14:35
darkVader

offline
Опыт: 197
Активность:
Цитата:
Сообщение от Doc
Ну собственно готовый код тебе врядли ктото будет давать. Тебе для карты какого жанра нужен ии?


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

А жанр я даже не знаю какой, наверно рпг, может прозвучит глупо но аи я хочу написать для боссов.
Старый 01.11.2010, 16:30
Doc

offline
Опыт: 63,163
Активность:
Ну ии для боссов имхо самое простое. Что именно тебе непонятно в способе его реализации?
Старый 01.11.2010, 16:42
darkVader

offline
Опыт: 197
Активность:
Цитата:
Сообщение от AlexKARASb
тогда хорошо рассмотри первую ссылку.


первая ссылка с сожелению не работает=(, а мили аи в данной ситуации не подходит радикально=)
Старый 01.11.2010, 17:03
Rampage
Бицепс
offline
Опыт: 9,722
Активность:
darkVader, если тебе не нужен готовый код, зачем рабочая ссылка? Там всё описано.
Старый 01.11.2010, 17:18
Doc

offline
Опыт: 63,163
Активность:
Вообще я считаю, что тебе понадобится только это:
С кодом проблем быть не должно.
Старый 01.11.2010, 17:41
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
darkVader,
ссылка
вот уже не битая ссылка.
Странно что та перестала работать
Старый 01.11.2010, 19:40
darkVader

offline
Опыт: 197
Активность:
Цитата:
Сообщение от Doc
Ну ии для боссов имхо самое простое. Что именно тебе непонятно в способе его реализации?


Ну я не спорю что он намного легче аи для героев=))) Ну например как заставить его использовать определенные спелы, выбирать приоритетные цели, ну и вообще=))) в ии я собственно не шарю=)
разве что могу сделать очень примитивного аи для рпг или арены=)))

darkVader добавил:
Цитата:
Сообщение от Doc
Вообще я считаю, что тебе понадобится только это:

http://xgm.guru/forum/showthread.php?t=37148


С кодом проблем быть не должно.


хм интересная статья=)) но как раз с идеями проблем нету, как раз проблема с кодом=)
я не знаю как заставить делать босса определенные действия и тд.

Цитата:
Сообщение от AlexKARASb
darkVader,
ссылка
вот уже не битая ссылка.


да читал эту статью, но применение спелов по модели мили карт не подходит=( и выбора конкретной цели там тоже нету.
Старый 01.11.2010, 20:31
Doc

offline
Опыт: 63,163
Активность:
darkVader, ну а что тебе надо... ну вот лови список полезных нативок:
native IssuePointOrder takes unit whichUnit, string order, real x, real y returns boolean
native IssueTargetOrder takes unit whichUnit, string order, widget targetWidget returns boolean
native IssueImmediateOrder takes unit whichUnit, string order returns boolean
native CreateUnit takes player id, integer unitid, real x, real y, real face returns unit
native SetUnitPosition takes unit whichUnit, real newX, real newY returns nothing
native AddSpecialEffect takes string modelName, real x, real y returns effect
native AddSpecialEffectTarget takes string modelName, widget targetWidget, string attachPointName returns effect
Ну вот, хз что еще нужно.
Старый 01.11.2010, 20:37
darkVader

offline
Опыт: 197
Активность:
Цитата:
Сообщение от Doc
ну вот лови список полезных нативок:


все эти функции я отлично знаю=))))

мне бы конкретно по теме каким образом аи можно заставить выбирать цель по конкретному условию и юзать спелы по ситуации и тд.

парой функции здесь не обойтись=)))
Старый 01.11.2010, 21:10
Doc

offline
Опыт: 63,163
Активность:
darkVader, ну омг.. напишу на сжассе, если что непонятно будет - спрашивай.
unit Boss
unit array Hero 

void BossAttack(){
	unit array target_hero
	float coef = 0.
	float array hero_coef
	int i = 0, l = 0, c = 0
	while(i == 11){
		if not IsUnitState(Hero[i], UNIT_STATE_DEAD){
			target_hero[l] = Hero[i]
			hero_coef[l] = 0.
			l++
		}
		i++
	}
	i = 0
	while(i==l){
		if distcord(GetUnitX(Boss), GetUnitY(Boss), GetUnitX(target_hero[i]), GetUnitY(target_hero[i])) <= 300.{
			hero_coef[i]+=10.
		}
		if GetWidgetLife(target_hero[i]) / GetUnitState(target_hero[i], UNIT_STATE_MAX_LIFE) < 0.10{
			hero_coef[i]+=20.
		}
		//moar conditions
		i++
	}
	i = 0
	while(i==l){
		if hero_coef[i] > coef{
			coef = hero_coef[i]
			c = i
		}
		i++
	}
	IssueTargetOrder(Boss, "attack", target_hero[c])
}
Три цикла для наглядности.
Старый 01.11.2010, 21:42
darkVader

offline
Опыт: 197
Активность:
Цитата:
Сообщение от Doc
напишу на сжассе, если что непонятно будет - спрашивай.


я так понимаю этот кусок кода отвечает за выбор цели?
а можешь описать что конкретно делает каждый цикл? и на какое событие работает или это кастом функция? в сJass я плохо разбираюсь точнее на 1%=)))

мне бы сам принцип работы, а код я сам разработаю на обычном jass.
Старый 02.11.2010, 03:10
AlexKARASb
Learning cpp
offline
Опыт: 22,103
Активность:
darkVader,
каким образом аи можно заставить выбирать цель
с помощью проверок
по конкретному условию
зависит от твоей фантазии и логики+тактики.
  • Простейшим станет проверка хп врага для спела наносящего урон.
  • Проверка кд
  • Проверка манны
да читал эту статью, но применение спелов по модели мили карт не подходит=(
вижу читал ты через.. мягко говоря не глазами. АИ под арену там.. мили и рядом не стоит. И все проверки и скил юз там описаны прекрасно, надо просто читать..
В общем картина как всегда.. разжуйте и положите кусочек мне в рот
ну да ладно, вот разжевано для одного форумчанина было. АИ_по_тутору_v01
Старый 02.11.2010, 09:06
Doc

offline
Опыт: 63,163
Активность:
darkVader, в общем так. В первом цикле проверяем всех живых героев и заносим их в локальный массив. Во втором с помощью проверок определяем некий коэффициент для каждого героя, зависящий в данном случае от близости героя к боссу и его количества хп. В третьем цикле мы выбираем максимальный коэффициент и заставляем босса атаковать героя с максимальным коэффициентом.
Старый 02.11.2010, 10:17
darkVader

offline
Опыт: 197
Активность:
AlexKARASb и Doc, спасибо вам большое за помощь, в голове наконец то появилась какая никакая картина по работе аи=))) начну писать код=))) боссы будут очень суровыми XDDD
Старый 02.11.2010, 15:25
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

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

BB-коды Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +3, время: 14:41.