@BenniShifer919 Не вполне понимаю проблему.
Картинки бесполезны из-за их размера. Чтобы увидеть различия между ними, приходится скролллить их вверх-вниз, удерживая детали в памяти. К таким усилиям я не готов, поэтому прекратил попытки ориентации по ним. Предлагаю вырезать из картинок всё несущественное, оставив только значимую часть. А подписи к картинкам имеет смысл как-то группировать, чтобы понимать принадлежность подписи к верхней или нижней картинке.
Описание проблемы непонятное:
Что значит "генерируется заново"? Как это проявляется? Что значит "в принципе некорректно работает"?
Код я не стал читать полностью, но вижу странность в первых строчках. Предполагаю наличие аналогичной проблемы и в остальных участках.
if direction == "down" then
for y=2,sizeY,1 do
for x=1,sizeX,1 do
map[y][x] = map[y-1][x]
end
end
for x=1,sizeX,1 do
map[1][x] = nil
end
Если развернуть этот цикл, то получим следующее:
Строка с номером 2 заполняется значениями из предыдущей строки, то есть из строки с номером 1.
Строка с номером 3 заполняется значениями из строки с номером 2, а по сути всё из той же строки с номером 1.
...
Строка с номером sizeY заполняется значениями из строки с номером sizeY-1, а в конечном итоге из строки с номером 1.
Строка с номером 1 очищается.
Результат работы этого кода можно сформулировать так: первая строка копируется в остальные строки, а сама она очищается. Это не похоже на сдвиг.