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


[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: PUVer, SirNikolas, Ty3uK  
[Вопрос] AI крипов: не должны блокировать путь
AloofДата: Вторник, 14 Августа 2012, 23:31:50 | Сообщение # 1
5 уровень
Группа: Проверенные
Сообщений: 107
Награды: 0
Репутация: 14
Блокировки:
Есть карта типа доты, которая страдает от такой проблемы, как creep block, когда герой оказывается заблокированным собственными крипами, управляемыми союзным компьютером. Насколько осуществимо заставлять крипов расходится перед союзным героем?

Добавлено (14 Августа 2012, 23:04:32)
---------------------------------------------
Тут еще проблема в том, чтобы это было сделано не тупо "отходить на дистанцию бла-бла, если союзный герой ближе, чем бла-бла". Нужно, например, как-то учитывать, что герой именно заблокирован.

Добавлено (14 Августа 2012, 23:31:50)
---------------------------------------------
Правильнее было бы сказать, что крипы должны расступаться перед союзным героем, а не расходиться :)

 

lawsonДата: Среда, 15 Августа 2012, 00:21:50 | Сообщение # 2
Группа: Проверенные
Сообщений: 3482
Награды: 0
Репутация: 974
Блокировки:
Quote (Aloof)
Есть карта типа доты, которая страдает от такой проблемы, как creep block

icefrog? ты заговорил на русском?
Quote (Aloof)
ут еще проблема в том, чтобы это было сделано не тупо "отходить на дистанцию бла-бла, если союзный герой ближе, чем бла-бла". Нужно, например, как-то учитывать, что герой именно заблокирован.

Как именно заблокирован: вокруг него стоят 4 крипа и не дают герою пошевелиться или чтобы перед героем не вставал крип?


Nic nie wiem bo mam chuj.
редактирую посты! ВСЕ!
 

AloofДата: Среда, 15 Августа 2012, 02:07:42 | Сообщение # 3
5 уровень
Группа: Проверенные
Сообщений: 107
Награды: 0
Репутация: 14
Блокировки:
Quote (lawson)
icefrog? ты заговорил на русском?

В доте есть такая проблема?

Quote (lawson)
Как именно заблокирован: вокруг него стоят 4 крипа и не дают герою пошевелиться или чтобы перед героем не вставал крип?

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

HexingДата: Среда, 15 Августа 2012, 08:28:17 | Сообщение # 4
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
Quote (Aloof)
Вот это один из самых сложных вопросов, тут хотелось бы узнать best practice, если кто-то это делал. В целом, просто если герой упирается в крипа. Т.е. щелкаешь за него, но герой не может никак выполнить приказ, только метается до тех пор, пока его не замочат.

собственно а чего ты хочешь? ну дай всем героям посох телепортации на 200 радиусу


 

AloofДата: Среда, 15 Августа 2012, 10:35:26 | Сообщение # 5
5 уровень
Группа: Проверенные
Сообщений: 107
Награды: 0
Репутация: 14
Блокировки:
Как я уже сказал --- best practice. Это означает, что точного алгоритма я не знаю, иначе бы и спрашивать не приходилось. Но факт, что юниты должны расступаться, я кажется отметил точно --- какое из слов настолько тебе неясно, что ты предложил посох?
 

HexingДата: Среда, 15 Августа 2012, 10:57:09 | Сообщение # 6
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
Quote (Aloof)
Как я уже сказал --- best practice. Это означает, что точного алгоритма я не знаю, иначе бы и спрашивать не приходилось. Но факт, что юниты должны расступаться, я кажется отметил точно --- какое из слов настолько тебе неясно, что ты предложил посох?

эм, какбы, best practice - написать свою игру со своим движком, в котором будет твой идеальный поиск пути, ибо с вариковским поиском пути ты ничего не сможешь поделать


 

AloofДата: Среда, 15 Августа 2012, 12:25:03 | Сообщение # 7
5 уровень
Группа: Проверенные
Сообщений: 107
Награды: 0
Репутация: 14
Блокировки:
Поиск пути тут не при чём, стена крипов реально блокирует путь и игрок ничего не может сделать. Если тебе хочется поговорить со мной --- есть ЛС. Если ты не понимаешь проблему --- можно задать уточняющие вопросы. Давать советы "лишь бы было" не надо --- это никто не оценит.
 

bubliqДата: Четверг, 16 Августа 2012, 12:32:18 | Сообщение # 8
2 уровень
Группа: Пользователи
Сообщений: 24
Награды: 0
Репутация: -12
Блокировки:
SetUnitPathing(UNIT,false)

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

AloofДата: Четверг, 16 Августа 2012, 12:42:29 | Сообщение # 9
5 уровень
Группа: Проверенные
Сообщений: 107
Награды: 0
Репутация: 14
Блокировки:
Quote (bubliq)
Такой бред мог написать только тупой

Добавлено (16 Августа 2012, 12:42:29)
---------------------------------------------
Я говорил уже, что меня интересует решение с изменением AI крипов, а не разного рода костыли.

 

bubliqДата: Четверг, 16 Августа 2012, 12:54:14 | Сообщение # 10
2 уровень
Группа: Пользователи
Сообщений: 24
Награды: 0
Репутация: -12
Блокировки:
Quote (Aloof)
Я говорил уже, что меня интересует решение с изменением AI крипов, а не разного рода костыли.

Ну тогда, тебе придётся насиловать свой мозг, потому что мой "костыль" всего лишь одна строчка, твой костыль - ежесекундная операция, по каждому крипу двигающемуся по карте, относительно героев, с кучей проверок, жив ли крип, рядом ли герой, рядом ли вражеский герой, вражеские ли крипы. Думаю, тебе так на недельки две кодинга + недельки две отладки, всего того дерьмища что ты наворотишь, плюс недельки две оптимизации.
 

AloofДата: Четверг, 16 Августа 2012, 15:11:28 | Сообщение # 11
5 уровень
Группа: Проверенные
Сообщений: 107
Награды: 0
Репутация: 14
Блокировки:
Я очень польщён, что ты за меня так переживаешь.
 

bubliqДата: Четверг, 16 Августа 2012, 16:06:42 | Сообщение # 12
2 уровень
Группа: Пользователи
Сообщений: 24
Награды: 0
Репутация: -12
Блокировки:
Я не переживаю, я просто описываю тебе перспективы решения твоей проблемы. Не более
 

SirNikolasДата: Пятница, 17 Августа 2012, 08:10:40 | Сообщение # 13
Группа: Модераторы
Сообщений: 6729
Награды: 1
Репутация: 1867
Блокировки:
Quote (Aloof)
по каждому крипу, двигающемуся по карте, относительно героев
Наоборот.

Интересная задача. Предлагаю взять за основу такую мысль:
Code
unit dummy = CreateUnit(Player(15), 'hfoo', .0, .0, .0)
//...
real x = GetWidgetX(hero), y = GetWidgetY(hero)
int i = 0
//...
for (real a = .0; a < 6.283; a += STEP) {
    real x1 = x + Cos(a) * DISTANCE
    real y1 = y + Sin(a) * DISTANCE
    SetUnitPosition(dummy, x1, y1)
    if GetWidgetX(dummy) != x1 || GetWidgetY(dummy) != y1 {
        i++
    }
}
if i == bj_2PI_div_STEP {
    //Выбрать всех союзных крипов вокруг героя и приказать каждому бежать в противоположную от него сторону
}
//...
RemoveUnit(dummy)
И весь этот код повторять для каждого живого героя на карте ежесекундно.


 

HexingДата: Пятница, 17 Августа 2012, 08:24:18 | Сообщение # 14
10 уровень
Группа: Проверенные
Сообщений: 1645
Награды: 1
Репутация: 432
Блокировки:
Quote (SirNikolas)
 i++

а нет, не правильно понял

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




Сообщение отредактировал Hexing - Пятница, 17 Августа 2012, 08:25:50
 

DiabfallДата: Пятница, 17 Августа 2012, 08:32:03 | Сообщение # 15
Группа: Проверенные
Сообщений: 1231
Награды: 0
Блокировки:
+Если речь шла о крипах на линиях (в AoS), то ещё нужно сделать сохранение первоначального приказа крипов (напр. идти в опр. точку), а то после манипуляций, предложенных SirNikolas'ом, они останутся торчать на месте.
 

  • Страница 1 из 1
  • 1
Поиск:

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