Последние несколько дней я работал над методом сжатия 144 миллионов плиточных представлений для моей игры xna до очень маленького размера при сохранении.После того, как я справился с этим, я теперь озадачен тем, как получить их обратно из файла кусками.
В файле, который у меня есть.
- Целое число (оносжимается в байты с помощью метода 7BitEncodedInt)
- Байт
Сжатое целое число представляет количество плиток, а следующий байт определяет тип плиток.Это все хорошо и работает очень хорошо.Самое главное, что размер файла уменьшается в среднем до 50 МБ.
Проблема в том, что я сейчас читаю весь файл обратно.Из файла я получаю это.
- Значение индекса каждой плитки (просто базовая итерация, когда я беру плитки)
- Тип каждой плитки в виде значения байта
- Значение байта, представляющее текстуру для этой плитки (это трудно объяснить, но это необходимо для каждой плитки)
Конечным результатом всего этого является то, что яудается сохранить файл и использовать только около 50 МБ.Но при загрузке все это обратно расширяется до почти 1,5 гигабарана на ОЗУ.Я не могу больше жертвовать информацией о плитке.поэтому мне нужен способ загружать только части карты в зависимости от местоположения игрока.Цель состоит в том, чтобы приблизиться к диапазону 100-200 МБ
Я смотрел на отображение памяти в файле, используя квадри, почти все, что я мог найти для загрузки файлов кусками.Хотя все эти варианты кажутся довольно хорошими, я не уверен, что лучше, или, если принять во внимание ситуацию, может быть и другой, даже лучший.Другая проблема во всем этом заключается в том, что все эти решения кажутся очень сложными (особенно потому, что я использую их впервые), и хотя я не против посвятить себя длительному кодированию, я хотел бы знать, что оно будет делать то, что яМне нужно, чтобы это было перед рукой.
Мой вопрос: учитывая, как мне нужно обрабатывать файл, когда я его извлекаю, и тот факт, что это нужно делать в зависимости от местоположения игроков, что было бы лучшим способомсделай это ?Я просто ищу направление здесь.Код всегда приветствуется, но не обязателен.