Страницы

Поиск по вопросам

понедельник, 6 января 2020 г.

Как часто стоит просчитывать путь от мобов к игроку? Поделитесь идеями

#javascript #разработка_игр



  http://smartcook.info/testgame/test2.html


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


Ответы

Ответ 1



Когда-то писал игру вроде пакмана, поделюсь соображениями. Максимальная частота пересчета ограничена тем, насколько часто мобы могут поворачивать. Насколько я понимаю, пока они идут из одной клетки в другую, смена марштута невозможна. Значит, пересчитывать путь нужно не чаще, чем тогда, когда моб полностью пришел в клетку, т.е. находится в её центре. Максимальная частота также ограничена производительностью устройства, как верно отметил php5engineer в соседнем ответе. Минимальная частота пересчета задает «агрессивность» мобов и определяет геймплей. Это может быть, например: На каждой клетке — очень злой преследователь На каждой 10й клетке — довольно-таки инертный преследователь, как бык в корриде. На каждой 5й и только если персонаж игрока находится в радиусе R клеток. Раз в 2 секунды вне зависимости от скорости моба

Ответ 2



как часто стоит просчитывать путь к игроку, потому как ресурсозатратно До полного исчерпания этих ресурсов? Или до определенного процента. Например, не более 70% CPU. Или по времени - не более 1/24 секунды. Но это всё общие советы. Как это делается на JavaScript, описано здесь

Ответ 3



Лови две сносные идеи: 1) Если поле небольшое, стенки во время игры не создаются и мобы респаунятся в одной точке можно вообще всего 1 раз при загрузке просчитать путь в каждую точку поля. Тогда в худшем случае придется искать маленький путь до следующего пути в списке. 2) Можно гонять их по графу из вейпоинтов тем же А*, а А* для реального поля просчитывать только если расстояние до игрока критически уменьшилось.

Комментариев нет:

Отправить комментарий