Я делаю игру по строительству городов на основе блоков и пытаюсь найти эффективный способ объединения нескольких блоков одного типа в блоки для оптимизации. Допустим, есть стена здания, и это кирпичные блоки размером 16x30x16. Вместо того, чтобы рисовать 7680 блоков, я могу нарисовать их в виде одной гигантской плоской прямоугольной призмы с повторяющейся текстурой, которая была бы еще эффективнее.
Я начал с создания полос, которые я собирался дополнительно объединить в панели, но кажется, что этот метод уже слишком медленный, так как он должен проходить через каждый блок на графике (чанке), проверить, может ли он быть объединенным с текущей полосой, а затем объединить ее, если да.
Заранее спасибо
local function Draw(plot)
local blocks = plot.blocks
local slabs = NewAutotable(3)
local slabList = {}
for y = 1, 32 do
for x = 1, 16 do
local currentSlab = NewSlab(x, y, 1, 1, 1, 1, blocks[x][y][1])
slabs[x][y][1] = currentSlab
slabList[#slabList + 1] = currentSlab
for z = 2, 16 do
if currentSlab[7] == blocks[x][y][z] then
GrowSlab(currentSlab, 0, 0, 1)
else
currentSlab = NewSlab(x, y, z, 1, 1, 1, blocks[x][y][z + 1])
slabs[x][y][z] = currentSlab
slabList[#slabList + 1] = currentSlab
end
end
end
end
end