Я хочу сделать игру на выживание с как можно большей тайловой картой. Я использую игровой движок Love2D с lua. В настоящее время я создаю карту с 2d-массивом. Это хорошо работает, возможно, для карты размером 10x10 плиток. Я хочу сделать их максимально большими. Не менее 1000х1000-100000х100000. Но этот джуат выиграл работу. Я тоже думал о том, чтобы разделить его на куски, но я понятия не имею, как это сделать. Разделил бы я эти куски на другие маленькие тайловые карты? Или как я мог это сделать? Может кто-нибудь помочь мне?
Как я могу эффективно загрузить большую TileMap
Ответы (1)
Почитайте немного о «разделении пространства» в целом. Обратите внимание на дерево BSP/Quadtree/k-D, это строительные блоки практически для всего.
Если ваши фрагменты имеют одинаковый размер, расположены в регулярной сетке и имеют ограниченный общий размер, вы можете значительно упростить все.
Храните фрагменты в файлах под именами, состоящими из индексов фрагментов по осям x/y. Такое имя будет действовать как идентификатор чанка, а файловая система будет работать как БД, хранящая мир. Некоторые фрагменты могут отсутствовать полностью, это означает, что в этой части мира ничего нет.
Когда вам нужно показать часть карты на экране, вы проверяете, загружены ли уже нужные фрагменты. Вы знаете координаты части, которую нужно показать, вы строите id чанка, проверяете какой-то кеш (lua-таблицу), и если чанка там нет - пробуете открыть файл с таким же именем. Если файл успешно загружен - добавьте его в кеш, если нет - добавьте пустой фиктивный файл, чтобы показать, что показывать нечего.
sqlite3
db через подключаемый модуль, подробности см. на вики Love2D: love2d.org/wiki/SQLite3
- person Vlad; 14.12.2016