Создание/построение карты из файла

63
4

используя файл, я хочу создать карту, и мне интересно, как это сделать. Фактически я искал форум, но я только нашел алгоритмы генерации карт, которые произвольно создают карты.

Рассмотрим минимальный пример. например, у меня есть файл, содержащий

0110
1001
1000
0000

Каждый 0 должна быть вода и каждый 1 должна быть земля. Я бы справился с этим, просто используя два разных растровых изображения и загружая их в правильные координаты. Это было бы просто.

Но предположим, что у нас есть 1000 * 1000 большая карта, и достаточно места для 16 * 16 плиток на фрейм. Тогда я бы получил текущую позицию и построил бы карту вокруг нее.

Предполагая, что мы можем отображать только 3 * 3 плитки, используя минимальный пример и находясь в позиции (2,2), где x и y - элемент 1..4, так что пользователь мог бы видеть в это время:

011
100
100

Решение

Я думал об использовании текстового файла, где строка представляет собой направление координат х, а столбец представляет собой направление координат y. Весь файл загружается в начале программы. Это не должно использовать слишком много бара, если 1 плитка нуждается в 1 байте, чего должно быть достаточно.

Для перерисовки карты, когда пользователь движется, я получаю направление перемещения и сдвигаю текущую битовую карту для высоты/ширины плитки в противоположном направлении и только просматриваю растровые изображения для новых пробелов. Поэтому мне нужно только посмотреть информацию о плитке для m + n-1 (где m - количество отображаемых фрагментов в y и n в x направлении), плитки (максимальный случай, если они перемещаются по диагонали), вместо того, чтобы загружать m * n плитки каждый раз пользователь перемещается.

пример

Я создал пример, чтобы сделать приведенный выше пример более понятным. это вся карта:

whole map

Мы можем отображать только 3 * 3 плитки, а пользователь находится в позиции (2,2), так что мы на самом деле видим:

starting position

теперь он движется в нижний правый угол:

Moving

и черный обрамленный участок движется в противоположном направлении, так что мы получаем:

after redrawing

теперь нужно искать пустые плитки (черные обрамленные белые области) и конечным результатом будет:

final image

Вопрос

это хороший способ построения карты? Или есть намного более быстрые функции, возможно, уже реализованы в пакете microsoft xna-gamestudio?

спросил(а) 2021-01-25T18:03:28+03:00 4 месяца, 4 недели назад
1
Решение
77

Я бы предварительно выбрал 1-2 плитки за пределами экрана, так что у вас не будет странного всплывающего окна, когда игрок движется.

Но если ваша игра - игра сверху вниз, это решение довольно консервативно. Сегодня в большинстве аппаратных средств вы можете создать очень большой диапазон вокруг игрока без проблем. Просто посмотрите на количество блоков Minecraft, которые могут обрабатывать и отображать. Поскольку вы повторно используете одну и ту же текстуру, вы просто загружаете актив один раз и повторно используете их в плитке, что, вероятно, будет иметь объект с очень небольшим объемом памяти.

Вы уже пытались реализовать его?

ответил(а) 2021-01-25T18:03:28+03:00 4 месяца, 4 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема