Сейчас 16:44:52 Суббота, 20 апреля, 2024 год
[ x ] Главная ⇒ Форум ⇐ RSS Файлы Cтатьи Картинки В о й т и   или   з а р е г и с т р и р о в а т ь с я


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Как научить бота рассчитывать путь? (прошу помощи тех, кто занимался серьезным AI)
Как научить бота рассчитывать путь?
ImpregnableДата: Понедельник, 19 Марта 2012, 15:37:39 | Сообщение # 1
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
Необходимо научить бота применять способность, которая применяется спустя какое-то время, как бы на опережение, чтобы попасть по врагу.
Вроде все очень просто. Я знаю: куда движется цель, ее скорость и время применения способности. Все бы высчитывалось по простой формуле "скорость цели*угол движения цели*время применения способности", но проблема в путях(декорации, рельеф)...

Итак, у кого какие идеи?
 

Ty3uKДата: Понедельник, 19 Марта 2012, 15:40:48 | Сообщение # 2
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Impregnable, что с декорациями? Снаряды их взрывают?

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

ImpregnableДата: Понедельник, 19 Марта 2012, 16:10:29 | Сообщение # 3
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
Нет, цель же их обойдет и ее конечная позиция не будет совпадать с той которую я рассчитал по формуле.
Подобное есть в доте с ботами. Жаль посмотреть нельзя(
 

Ty3uKДата: Понедельник, 19 Марта 2012, 16:40:47 | Сообщение # 4
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Как насчет такого- каждые .04 секунды получать позицию цели, угол между ней и кастером и энумить декорации (можно и не энумить) и когда все данные будут соответствовать норме- кастовать

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

SirNikolasДата: Вторник, 20 Марта 2012, 10:10:55 | Сообщение # 5
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Code
function FL7 takes real x1,real y1,real x2,real y2 returns real
     return SquareRoot(((x1-x2)*(x1-x2))+((y1-y2)*(y1-y2)))
endfunction

function QE7 takes real x,real y returns boolean
     if(x<GetRectMinX(bj_mapInitialPlayableArea)+75)then
         return false
     endif
     if(x>GetRectMaxX(bj_mapInitialPlayableArea)-75)then
         return false
     endif
     if(y<GetRectMinY(bj_mapInitialPlayableArea)+75)then
         return false
     endif
     if(y>GetRectMaxY(bj_mapInitialPlayableArea)-75)then
         return false
     endif
     return true
endfunction

function FB7 takes real FC7 returns nothing
     local real F37
     local real st=TimerGetElapsed(T)
     if st<=0 then
         set T=CreateTimer()
         call TimerStart(T,9000,false,null)
     endif
     if(FC7>0)then
         loop
             set F37=FC7-TimerGetElapsed(T)+st
             exitwhen F37<=0
             if(F37>bj_POLLED_WAIT_SKIP_THRESHOLD)then
                 call TriggerSleepAction(0.1*F37)
             else
                 call TriggerSleepAction(bj_POLLED_WAIT_INTERVAL)
             endif
         endloop
     endif
endfunction

function QP7 takes unit E67,unit GA7,real QQ7,real QO7 returns location
     local real KM7=GetUnitX(GA7)
     local real KN7=GetUnitY(GA7)
     local real QR7=TimerGetElapsed(T)
     local real QS7=0
     local real QT7=0
     call FB7(0.1)
     set QR7=1./(TimerGetElapsed(T)-QR7)
     set QS7=(GetUnitX(GA7)-KM7)*QR7
     set QT7=(GetUnitY(GA7)-KN7)*QR7
     if not(QS7==0 and QT7==0)then
         set KM7=KM7+QS7*QQ7
         set KN7=KN7+QT7*QQ7
     endif
     if FL7(GetUnitX(E67),GetUnitY(E67),KM7,KN7)<=QO7 then
         call MoveLocation(ES7,KM7,KN7)
         if QE7(GetLocationX(ES7),GetLocationY(ES7))then
             return ES7
         endif
     endif
     return null
endfunction
Функции, используемые при наведении Sun strike Invoker'а, который отличается поразительной точностью добивания.


 

ImpregnableДата: Вторник, 20 Марта 2012, 13:57:57 | Сообщение # 6
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
Quote (SirNikolas)
Функции, используемые при наведении Sun strike Invoker'а, который отличается поразительной точностью добивания.

Разобрался - оказалось, что высчитывается абсолютно также как я написал. Получается поразительно точно добивает только на прямом участке.
 

Ty3uKДата: Вторник, 20 Марта 2012, 14:00:10 | Сообщение # 7
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Тогда мне, как тупому кодеру, кто-нибудь объяснит, что эти функи делают? :)

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

ImpregnableДата: Вторник, 20 Марта 2012, 14:31:24 | Сообщение # 8
6 уровень
Группа: Проверенные
Сообщений: 231
Награды: 0
Репутация: 92
Блокировки:
 

Ty3uKДата: Вторник, 20 Марта 2012, 14:32:27 | Сообщение # 9
Группа: Ветераны
Сообщений: 6125
Награды: 2
Репутация: 1617
Блокировки:
Impregnable, понял, спасибо :3

╭∩╮(︶︿︶)╭∩╮
"Ульта Тайда мне в жопу!" © k0fe1n
Статьи: MUI-1|MUI-2|Шрифт
Полезности: JASP|JNGP|Уголок библиотек
 

Форум о Warcraft 3 » Раздел для картостроителей » Вопросы по картостроению » Как научить бота рассчитывать путь? (прошу помощи тех, кто занимался серьезным AI)
  • Страница 1 из 1
  • 1
Поиск:

Copyright © 2006 - 2024 Warcraft3FT.info При копировании материалов c сайта ставьте, пожалуйста, активную обратную ссылку на нас • Design by gReeB04ki ©
Хостинг от uCoz