2 июн. 2011 г.

Очередь на поиск пути

Очередь на поиск путей позволит избежать случая, когда за один кадр ищется путь для большого количества объектов, что может вызвать лаг. Эта статья будет теоретической по двум причинам. Во-первых, реализация этого метода очень проста. А во-вторых, алгоритм нахождения пути, который мы разобрали, дает задержку в одну секунду при одновременном поиске 10000 путей за раз. Даже если у нас будет десять тысяч солдат в игре, то вряд ли мы ощутим такой лаг, так как они будут искать путь в разное время. Но все же давайте рассмотрим такой случай.

Чтобы избежать такой задержки, мы создадим очередь на поиск путей в виде массива. Каждый объект, которому нужно будет получить новый путь, будет записываться в эту очередь. Теперь нам надо каждый кадр брать часть запросов (или все запросы, если их мало) и находить для них путь. Но сколько запросов брать для обработки? Я бы не советовал указывать какое-то конкретное число и не стал бы распределять это количество в зависимости от FPS. «Тогда как?» - спросите вы (а если не спросите, то можете двигаться к следующей статье). А все просто, отведем, скажем, время в 100-200 миллисекунд на эту процедуру, после каждого найденного пути проверяем общее потраченное время за этот кадр, и если оно больше нашего заранее определенного, то продолжаем работу программы, а другие «счастливчики» будут ждать следующий кадр.

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



1 коммент.:

Анонимный комментирует...

The King Casino - Homepage - CommunityKhabar.com
The King 더킹카지노 Casino happyluke - Homepage. クイーンカジノ CommunityKhabar.com. Facebook. https://www.facebook.com/pages/The_King_Casino/

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