Мне нужен какой-то тип поиска пути, поэтому я искал в Интернете и нашел некоторые алгоритмы.Pathfinding На огромной карте
Кажется, что им тоже нужен какой-то тип карты. Эта карта может быть представлена:
- Сетка
- Узлы
Как моя карта в настоящее время довольно огромный (20,000 х 20,000 пикселей), отображение сетки 1 х 1 РХ плитки приведет до 400.000.000 уникальных точек на сетке, а также лучшего качества, которое я бы подумал. Но то способ много очков для меня, так что я мог либо
- увеличить размер плитки (например, 50 х 50 точек = 160.000 уникальных точек)
- переключатель для Узлов
Как 160.000 уникальных точек также для меня, или, я бы сказал, не качество, которое я хотел бы иметь, поскольку некоторые единицы больше, чем 50 px, я думаю, что Nodes - лучший способ пойти.
Я нашел в Интернете 2D Nodal Pathfinding without a Grid и сделал некоторые расчеты:
local radius = 75 -- this varies for some units so i stick to the biggest value
local DistanceBetweenNodes = radius * 2 -- to pass tiles diagonaly
local grids = 166 -- how many col/row
local MapSize = grids * DistanceBetweenNodes -- around 25.000
local walkable = 0 -- used later
local Map = {}
function even(a)
return ((a/radius) % 2 == 0)
end
for x = 0, MapSize, radius do
Map[x] = {}
for y = 0, MapSize, radius do
if (even(x) and even(y)) or (not even(x) and not even(y)) then
Map[x][y] = walkable
end
end
end
без удаления непроходимым узлов и размер блока 75 я бы в конечном итоге с ~ 55445 уникальных узлов. Узлы резко сократятся, если я удалю недоступные узлы, но поскольку мои юниты имеют разные размеры, мне нужно сделать радиус самой маленькой единицей, которую я получил. Я не знаю, будет ли это работать с более крупными единицами позже.
Так что я снова искал в Интернете и нашел это Nav Meshes. Это уменьшит количество узлов до «нескольких» в моих глазах и будет работать с любым размером блока.
ОБНОВЛЕНИЕ 28.09 Я создал узловую карту всех проходимых областей теперь ~ 30.000 узлов.
Вот совершенно случайно пример карты и точки у меня есть: Example Map
Изменено первый пост. – LuaNoob