Перейти к содержимому

Что такое карта высот Rust: как серый становится рельефом

Коротко: карта высот Rust это квадратная картинка в оттенках серого, где яркость каждого пикселя равна высоте земли в этой точке: чёрный это дно мира, средне-серый уровень моря, а белый самая большая высота, какую может иметь земля. RustEdit превращает её в 3D-рельеф, по которому ходят игроки.

A Rust heightmap seen from above in shades of grey: Drizzza's free volcanic map before it becomes terrainThe same volcanic Rust map raised into 3D terrain, with grass, desert, snow, beaches and sea
Crucible Volcanic 3800, бесплатная карта от Drizzza, сделанная в Crucible Heightmap. Нажмите «играть» или потяните ползунок, чтобы поднять её карту высот в готовую карту, и тяните карту, чтобы повернуть её. Серые тона здесь осветлены, чтобы формы было лучше видно.

Земля в Rust занимает 1000 метров по высоте, уровень моря ровно посередине. Карта высот равномерно распределяет свои серые тона по этому диапазону:

СерыйВысота в игре
Чёрный500 м ниже уровня моря, дно мира
Средне-серыйУровень моря
Белый500 м выше уровня моря, самая высокая земля, которую позволяет Rust

Поэтому морское дно тёмное, пляжи лежат чуть выше средне-серого, а вершины гор это самые яркие пиксели. Настоящий остров использует только часть диапазона, потому карта высот целой карты выглядит как мягкий серый с чуть более тёмным морем вокруг:

Настоящая 16-битная серая карта высот Crucible Volcanic 3800, кастомной карты Rust, в мягких серых тонах, где море чуть темнее суши

2D-вид Crucible Heightmap растягивает серые тона, чтобы формы легко читались: высокая земля яркая, море тёмное. Карта высот, которую он экспортирует, сохраняет настоящие серые тона.

2D-вид карты высот острова в Crucible Heightmap, где серые тона растянуты, так что высокая земля яркая, а море тёмное

Карты высот Rust это 16-битные изображения в оттенках серого, то есть 65 536 оттенков. Распределённые на 1000 метров, это около 1,5 см высоты на оттенок, так что склоны получаются гладкими.

В 8-битной картинке, как в обычной фотографии, всего 256 оттенков. Тогда каждая ступень это около 4 метров высоты, и каждый склон в игре превращается в заметные террасы. Поэтому карта высот, нарисованная в обычном редакторе и сохранённая в 8 бит, выглядит ступенчатой, и поэтому Crucible Heightmap всегда пишет 16 бит.

Карта высот это квадратная сетка, и её размер зависит от размера карты: 513, 1025, 2049 или 4097 пикселей по стороне. Каждый пиксель покрывает от 1 до 2 метров земли. Точные ступени описаны на странице разрешение карты высот Rust, а какой размер карты выбрать, на странице размеры карт Rust.

Карта высот это высота и больше ничего. Всё остальное на карте Rust лежит в своём слое файла .map:

  • текстуры земли: трава, грязь, песок, камень, снег, лесная подстилка
  • биомы: умеренный, засушливый, тундра, арктический и джунгли
  • слои топологии, которые говорят Rust, где ставить деревья, руду, лут и спавны игроков (смотрите биомы и топология Rust)
  • вода, монументы, дороги и префабы

Поэтому .raw или .png карта высот приносит только голый рельеф. Вот почему главный экспорт Crucible Heightmap это целый файл Rust .map, который несёт вместе с высотой текстуры земли, биомы, топологию, озёра и скалы.

Откройте .map в RustEdit, и её карта высот загрузится как рельеф, а поверх лягут все остальные слои.

Чтобы начать с голой карты высот, откройте в RustEdit диалог Create New Map, задайте размер карты и соответствующее ему разрешение карты высот и выберите ваш 16-битный файл .raw. RustEdit поднимет его в рельеф, а дальше вы добавляете монументы, дороги и всё остальное. По шагам: как сделать кастомную карту Rust.

Диалог Create New Map в RustEdit с полем Heightmap и процессом импорта карты высот в карту Rust

Нарисовать естественно выглядящую 16-битную карту высот вручную долго. Crucible Heightmap это генератор карт Rust, который делает рельеф в духе Rust, позволяет формировать его ползунками и кистями и экспортирует его как готовый к открытию .map, .raw или .png.