Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.02;
Скачать: CL | DM;

Вниз

обход преград в warcraft е   Найти похожие ветки 

 
keal   (2005-05-27 14:32) [0]

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


 
miek ©   (2005-05-27 14:39) [1]

Обычный волновой алгоритм, только перемещаться можно не по 4-м направлениям, а по всем 8-ми (или 6-ти, не помню). Для ускорения - пока юнит не попадет в тупик, волна делается небольшая, потом увеличивается.


 
keal   (2005-05-27 14:48) [2]

юниты не находятся на квадратах карты, они имеют дробные координаты и круглую форму. а если и находятся на квадратах, то многие из них занимают сразу несколько квадратов.


 
XProger ©   (2005-05-27 15:08) [3]

keal, ты хочешь сказать что астар и волновик только для квадратных подходят?
ок... а как тогда в CS боты по вейпоинтам дорогу находят? ;)


 
keal   (2005-05-27 15:19) [4]

почему же, астар и волновик подходят для ячейки с 4, 6, 12.. направлениями. почти для любого.
а если координаты измеряються типа (14.77, 51.211).


 
XProger ©   (2005-05-27 17:09) [5]

А если понять что ты программист и должен думать абстрактно?


 
keal   (2005-05-27 17:20) [6]

я и думаю абстрактно, или я думаю, что так думаю...

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

выхожу из положения используя волну и некоторые добавления для работы с картой.

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


 
XProger ©   (2005-05-27 17:28) [7]

Есть карта. Вся делится на квадратики. Квадратик может быть занят и свободен. Есть юниты которые квадратики не занимают, а просто не подпускают к себе никого и ничего ближе чем радиус их БиСферы.
Ищем путь по этив квадратикам (плевать как).
Юнит может находиться в нецелых координатах в квадратике
[trunc(PosX) div Size, trunc(PosY) div Size]
Где Size - размер одного квадартика. Далее игрок идёт к следующему квадратику т.е. поход на (Size, Size) относительно текущей позиции... и т.д. до самого конца.
При этом заметь, что варкрафте толпа двигалась не хаотично, а выстраивалась в определённый ряд чтобы друг-другу не мешать.


 
keal   (2005-05-27 17:39) [8]

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


 
OSokin ©   (2005-05-27 21:42) [9]

Имхо, можно так: вычисляется угол по касательной по прямой, по которой должен следовать чел, если произошел коллижен с каким-либо препятствием, то не пускаем чела дальше препятствия и постоянно вычисляем новый угол. Если старая и новая координаты совпадают, то применяем любой другой подход (можно просто поставить на время случайный угол), а потом снова начинаем вычисления угла. Немного трудоемко, но того стоит :-).


 
keal   (2005-05-28 15:33) [10]

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

сейчас пробую объеденить волну с углом.


 
П7   (2005-05-28 16:25) [11]

Ну вот вы мне объясните, чем вам вей-поинты не катят?


 
Zer0 ©   (2005-05-28 17:42) [12]

Можно сделать так: искать путь любым "клеточным" методом - а потом срезать получившиеся "углы" проверкой - пройдет ли юнит по этому пути ничего не задевая.  В сети помойму даже лежали примеры таких pf на паскале.


 
OSokin ©   (2005-05-31 18:35) [13]

keal   (28.05.05 15:33) [10]
Дык если застрянет, то

> применяем любой другой подход (можно просто поставить
> на время случайный угол), а потом снова начинаем
> вычисления угла



Страницы: 1 вся ветка

Текущий архив: 2005.10.02;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.042 c
3-1124700573
rentgen
2005-08-22 12:49
2005.10.02
Можно, запрашивать данные с нескольких баз?


4-1122822737
Duk_
2005-07-31 19:12
2005.10.02
Использование драйвера


4-1123559898
Ehiles
2005-08-09 07:58
2005.10.02
drawtext()


14-1126351281
palva
2005-09-10 15:21
2005.10.02
Кто пойдет за гробом?


1-1126534510
Grol
2005-09-12 18:15
2005.10.02
Автоматизировать установку компонентов в Delphi