Показать сообщение отдельно
Старый 23.03.2012, 11:40
stweet вне форума Посмотреть профиль Отправить личное сообщение для stweet Найти все сообщения от stweet
  № 18  
Ответить с цитированием
stweet
 
Аватар для stweet

Регистрация: Mar 2010
Адрес: 54.713862552265084 = 20.442724227905273
Сообщений: 449
Отправить сообщение для stweet с помощью Skype™
Цитата:
Сообщение от ashIndie Посмотреть сообщение
-De-, да я предполагаю что нагрузка будет серьезная, если будет юнитов 100.
по идее и щас у меня она большая, потому что каждый юнит думает и рассчитывает путь. Надо попробовать сделать на nape и сравнить производительность, хотя я и щас понимаю, что она увеличится.
Просто я как-то сразу не подумал использовать для игры с видом сверху физический движок, как то он у меня не ассоциировался с таким жанром.
В таких случаях поступают малость иначе. Вам бы саму задачу реализовать, не важно(без разницы) быстро ли медленно будит работать решение. А вот когда реализуете оптимизировать будит проще уже готовое решение не же ли оптимизировать на ходу! Алгоритм А* не так уж и сложен в понимании и по отзывам это самый шустрый, им пользуются почти все игроделы сих жанров.

Самый оптимальный вариант работать с вложенной (2 3 n...)-х мерной сеткой, т.е. если 2 объекта находятся одновременно в одной зоне(на одной глубине) то включаем обработку глубже, в зависимости от глубины, где глубина это и есть ваши сетки. На последней сетке ячейки можно делать как раз размером с критической точкой столкновения.

Что про динамические объекты, тут то же не так сложно. Есть такое понятие "отклонение от траектории". Т.е. когда путь найден, но в пути (по мере достижения цели) попадаются объекты то целевую точку меняем на ту что безопасная от объекта и уже от неё высчитываем новый путь. Оптимизация в такой логике будит "сохранение путей".

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

Есть ещё понятие дистанционной сетки т.е. юниты просчитывают свои сетки но в приделах некой дистанции, это что то похоже на то что описали выше с примером 2DBox.
__________________
Спросишь, дурак на минуту. Если не спросишь, дурак на всю жизнь!