Найти тему
Рустам Сабанаев

Расширенный гайд о том, как создать карту для BeamNG.drive.

Задача этого руководства — ускорить процесс поиска важной информации, разбросанной по всему Интернету, касаемой процесса мододелания и картостроения в BeamNG, с возможностью быстрой индексации текста в Интернете, а также для того чтобы было можно быстро прочитать информацию, как это люблю делать я.

В этой статье описывается взлом игры Beam и быстрое создание карты без крайне глубокого погружения в тему от меня.

В этом и состоит задача этой статьи — научить пользователя поверхностному картостроению без экстремального утопания в дебри с затратой большого количества времени.

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

Я научился напрямую экспортировать объекты из Блендера, текстурировать их и экспортировать в Beam, а также красить их, решив знаменитую и серьезную пролему NO Materials.

Но тем не менее, некоторые задачи еще не рассмотрены, и поэтому я составил данное руководство, без учета следующих проблем:

1. Как и любая карта, она требует оптимизации, а я еще пока не проверил как загруженность объектами влияет на производительность. Не знаю может для объектов нужно будет назначать LOD картинки, но мне кажется что, BeamNG поддерживают внутреннюю оптимизацию при помощи включения чекбоксов meshculling.

2. У меня не получилось импортировать карту высот в игру, так чтобы она красилась в другой цвет — зеленый, под цвет травы. То есть эта плоскость не отобразилась в игре.

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

Introduction. Введение.

Начиная с версии BEAMNG.drive v0.24. создание карты стало более менее осуществимо, и я решил написать инструкцию, как плацдарм для быстрого погружения в карьер. Используя эти знания, можно создать карту за 1 день, при должном уровне сноровки как компьютерщика и большого терпения.

Для создания собственной карты нам понадобится прототип GridMAP V2.0.

Beam не поддерживает поиск файлов по всему компьютеру, и это означает, что затрагиваемые объекты должны лежать внутри папки content ► levels.

Все объекты которые вы хотите положить на карту, надо добавлять в папку content ► levels ► gridmap_v2 ► levels ► gridmap_v2 ►art ► shapes► buildings.

Подразумевается, чем глубже лежит предмет тем лучше.

В разделе buildings лежат объекты типа зданий.

Готовые здания мы будем импортировать со сцены Italy, так как там город легко дробится на части. Я выделил несколько интересных зданий для создания российского города:

Itali bid Farmhouse

ind bld 12x10

Ну и еще какие то, которые можно найти в папке shapes.

Чтобы не было проблем с импортированием домов Италии, необходимо всю папку shapes из Италии вставить в папку art Gridmap v2. Впоследствии, для экономии места можно будет удалить неспользуемые файлы, но очень акккуратно, шаг за шагом, поскольку может что нибудь удалиться важное без чего игра запуститься не сможет.

Не забывайте делать сохранения всех ваших папок карты, чтобы в случае потери вы смогли продолжить свой прогресс. Также продублируйте оригинальные карты Gridmap и Italy.

Где хранятся ваши карты. Как их импорировать и экспортировать.

BeamNG содержит множество мест, где могут хранится моды, например на авто, но в случае с картами будет достаточно двух папок. Даже если вы создадите карту, остальным игрокам придеться ее устанавливать вручную.

1 Расположение. В корневой папке. Дальше надо нажать Content где будут находится levels.

2 Расположение. В App. Чтобы туда попасть надо набрать следующий путь: C:Пользователи ► ИМя ► APPData ► local ► BeamNG ► 0.24 ► levels.

Здесь будут лежать ваши модифицированные карты, надо скопировать всю информацию, на всякий случай.

Хорошая новость: BeamNG использует стандартные расширения файлов одобренные ISO, такие как .DAE. Поэтому объекты прямо из блендера можно без проблем импортировать в Beam. Нет, я пошутил. Проблемы все-таки будут. Также игра использует стандартные dds и cdae для покраски объектов. Наверно, может быть стандартные. Я не проверял.

Если у вас есть навыки работы в блендер, то это весьма сильно пригодится, потому что я объясню минимальнейшую часть.

Сообщество мододелов BeamNG находится на сайте BEAM, где в разделе map creating megapage они указали шаблон, для того чтобы решить очень проблемное и злободневное сообщение NO MATERIALS, которое может заставить вас начать программиировать и забрать месяцы на ее исправления. Без вероятного успеха.

Я же придумал свой взлом игры: решил использовать готовые модели .DAE BEAMNG и проанализировать их Блендере. В начале создания карты я решил ограничиться лишь одной плоскостью, типа террайна, ниже которой бы не удалось упасть, и поэтому начал искать такой предмет на карте Италия. После долгих поисков мне наконец удалось найти идеальный объект для такой цели: мусорный бачок. Он идеально красится через готовые скрипты навешанные в Inspectore, и больше не заставляет решать никаких задач. А также красиво выглядит когда его раястянешь и покрасишь в зеленый цвет, — создается ощущение, что наложена текстура травы.

После некоторого потраченного времени на создание террайна, я обнаружил, что река, протекающая через город, выглядит скучным и странным объектом — она выглядела как торчащая над землей дорога в стиле Майнкрафта. И после этого я решил создать более менее нормальный Terrain.

Используя свой предыдущий опыт создания карт я зашел на финский сайт Terrain.Party чтобы забрать оттуда карту высот.

Для этого я выбрал слой по умолчанию OpenStreetMap и перетянул квадрат на интересуюмую область. Увеличив его, я скачал карту высот как изображение с расширением PNG.

Дальше я объясню как добавить карту высот в блендере: пока помню:

1. Создаем новый проект, удаляем куб. Добавляем плоскость.

2. Сверху под панелью меню найдем ADD► Mesh► Plane. Там же находятся другие важные примитивы.

3. Добавляем модификатор к плоскости. Нажимаем гаечный ключ и добавляем модификатор — ADD Modificator.

4. Крутим роликом до Subdivision Surface. После добавления нажимаем Simple и выставляем значения точности обрисовки до 6 в Levels Viewport и Render.

-2

5. Добавляем еще один модификатор Displace. Там нажмите New Texture а после чего нажмите на значок Androida Show Texture in Texture Tab.

-3

6. В появившемся окне нажмите на Open. Выберите в загрузках файл png первый или второй по счету сверху. Тот который покрупнее.

7. Справа в разделе Images выберите Color Space XYZ или RAW, иначе карта высот будет плоской.

8. В разделе гаечного ключа для модификатора Displace выставите силу Strengh на значение 5, например, но это уже необязательно, так как оригинальные пропорции соотвествуют единице.

9. Вы обнаружите получившийся Terrain который можно экспоритровать в Beam, но со знаменитой проблемой No Material. ВЫбираете расширение dae и экспорируете куда нибудь на рабочий стол.

Горячие клавиши для для блендера.

Нажатый ролик мыши — вращать камеру.

Shift плюс ролик мыши — двигать камеру.

Взлом мусорного бачка Италии.

Найдите объект italy_clutter_dumpster через Блендер.

Внутри будет содержаться странная иерархия предметов.

В самом верхнем углу нажмите спустя некоторое время на значок глобуса, чтобы сменить изображение мусорки. Выбираем необходимый режим представления Viewport Shading.

-4

Внутри мусорки под названием start01 лежит четыре предмета — colmesh, который не отображается в BeamNg и Italy Dumpster30, 70 и 200.

Раскройте все списки и вы обнаружите что внутри находятся какие свойства материалов из BeamNG, например, Italy Plastic. Но в действительности Блендер никак не связан с Бим, поэтому там на самом деле просто свойства предметов из Блендера.

Однако названия свойств менять я не рекомендую — может это имеет значение в самой игре.

Я проверил возможности экспорта из блендера с готовыми наложенными текстурами, и обнаружил, что они все равно слетают в редакторе BeamNG. А сам объект нужно по-прежнему красить вручную с помощью встроенной палитры. А это означает, что красивую полноценную карту создать не получится. Но что же делать? Как я заметил за каждый предмет с расширением DAE отвечает другой файл с расширением cDAE. Именно он скорее всего ответственен за правильное наложение текстуры, и чтобы в конце концов в меню Инспектора появилась возможность выбрать ту самую импортированную текстуру. Также данное название текстуры скорее всего проявится в меню выбора в диалоговом окошке Материал Эдитор.

Дальше уже все более менее понятно — создаете модель в блендере и навешиваете на нее точно такие же свойства что и у мусорного бачка.

Понятое дело, сам бачок должен потом в конечном результате быть заменен вашей моделью. Вид иерархии должен остаться тем же самым. Разве что название Dumpsterov 30, 70, и 200 сохранять необяхательно, вроде бы.

Для того чтобы навесить свойства материалов нажимаете shift и тянете мышкой на соотвествующий родительский объект и отпускате кнопку.

Будьте внимательны: В итоге у вашей модели может оказаться больше файлов свойств, чем необходимо, хотя это вроде бы не страшно.

-5

Опять экспорируете модель на рабочий стол, откуда потом вручную вставляете в levels.

Плоскость у меня пока не удалось ипортировать, но зато остальные объемные фигуры добавляются на ура.

Работа в BeamNG.drive.

Все остальное будет касаться моих знаний по работе в этой программе.

Чтобы добавить объект на сцену уровня, надо открыть окно Window и нажать ASSET BROWSER.

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

Asset Browser делает сортировку, и уже из диалогового окна можно найти предметы, которые он обнаружил. Примечание: Если вы что то сделаете неправильно на сцене, то ASSET BROWSER может перестать грузиться. К тому времени у вас уже должен быть бэкап вашей работы.

Чтобы забрать предмет из ASSET BROWSER надо просто перетащить его на карту.

Настраиваем свойства предметов. Моя интерпретация.

-6

В разделе TRANSFOFM меню Inspector находятся числа. Они отвечают за позиционирование и размер предметов. Редактируя их вы можете двигать и увеличивать предметы.

В разделе Media можно выбрать новый доступный предмет вместо существующего. Этот раздел доступен не всегда, вот почему я предложил вам использовать более - менее готовую карту GRIDMAP. Если вы просто выберите готовый дом из Италии, то скорее всего он будет без текстур. Вот почему надо вручную забросить всю папку shapes Италии в art ► buildings вашей карты.

В разделе Rendering похоже нужно настраивать производительность.

Если включить dynamic , то предметы будут отображаться как динамические, то есть больше бить по производительности. Предположительно.

PlayAmbient по умолчанию включен, и он даже как то переводится, и отвечает за прорисовку или увядание предметов. Однозначно.

MeshCulling тесно связан с Lod ами, вероятнее всего, его можно будет включать, когда вы навесите LOD ы на ваши предметы.

OriginSort. Неизвестен.

UseInstanceRenderData. По умолчанию включен.

В Instance Color можно назначать цвета объектам. Однако помогает он не всегда.

Для сложных объектов бледера, которые мы импортируем он работает. Если просто напрямую забросить, то есть импортировать ненастроенный объект, то будет отображаться текстура No Material, которую нельзя будет заменить.

В разделе Colission выбираем Colission Type Visible Mesh, заменяя обычный Collision Mesh.

В DecalType также назначаем Visible Mesh

В разделе Debug может назначать свои числа, чтобы объект лучше проявлялся, но вроде бы это необязательно:

RenderNormals равен 1

Force Detail равен 1.

В разделе Editing чекбокс hiden влияет на скрытие предмета со сцены, а locked за блокировка. Они не используются, просто объяснил их смысл.

В разделе Object Annotation можем выбрать цвет и тип покрытия для предмета, например Asphalt.

Для mode то есть режима можем заменить Ignore на Overrride для того что бы переписать предположительно, но в основном этот параметр надо назначать чтобы проявить маршруты и дороги для ботов, которые почему то находятся в скрытом режиме.

В разделе Dynamic Fields можно назначать динамические поля, но как ими пользоваться я не знаю.

Редактирование материалов в BeamNG.

Для некоторых объектов можно назначать материалы.

Для этого зайдите в Inspector и нажмите Open in shape Editor. Там в разделе Materials можно избирательно красить имеющиеся элементы. При чем монолитно весь предмет скорее всего покрасить не удастся. Придеться искать.

Повращайте мышкой на панели предпросмотра.

В меню Material Editor, который можно открыть через меню Windows, будут изображаться цвета и всякие настройки.

-7

В меню поиска вы можете набрать имя того материала, который использовался в Blendere.

Предположительно здесь лежат все материалы игры BeamNG.

Изменяя свойства материала будьте осторожны — вы можете случайно покрасить в другие цвета элементы других уровней, то есть карт. Ближайшая карта под угрозой — это Италия.

Изменение точек Спавна и приведение в порядок внешнего оформления картинок, соотвествющих местам порождения игрока.

Слева в меню, то есть окне Scene Tree на панели Spawn наберетите слово Spawn. Здесь вы увидите все точки порождения игрока на карте.

Выбереите какой нибудь один конкретный Spawn и на панели сверху выберите режим Translate, чтобы перемещать объекты с помощью кнопок. Теперь передвиньте Spawn в какое нибудь место. Теперь здесь будет появляться ваша машина.

Чтобы назначить картинки для появления, сначала сделайте скрин этого места, а потом сохраните его в формате JPG и назовите таким же именем, что и Spawn.

-8

Картинки порождений игрока хранятся в корневой папке Gridmap.

Создание дорог для карты.

Чтобы создать кусок дороги, надо выбрать Mesh Road Editor на панели сверху.

Дальше зажимаем правый ALT и тянем мышкой в сторону. Нажимаем второй клик, и первый участок дороги готов.

Чтобы продолжить имеющуюся дорогу зажмите ALT еще раз и поверните мышку. Теперь дорога начала делать поворот. Для более точного поворота повысьте значение параметра Texture Length и Break Angle. Последний параметр позволит более точно градуировать поворот, и сделать больше треугольников на повороте, что в конечном итоге, отразится на совершенности и красоте поворота.

Остается лишь назначить краску материала в MeshRoad. ВЫберите что нибудь похожее на асфальт.

По умолчанию ширина дороги равна 10 метрам. И это очень удобно, поскольку можно легко назначить ширину дорожного полотна как в реальной жизни.

Остается лишь замерить линейкой ширину полотна симулируемого города, и задать это значение в игре.

Или выбрать значение по ГОСТУ, чтобы в игре не было слишком тесно. ! полоса должна равняться 3,75 метрам.

В Node Properties измените параметр Node Width. Чтобы смочь отредактировать ширину конкретного узла дороги, принадлежащую ей точку нужно сначала выделить.

Для этого должен быть выбран режим Mesh Road Editor.

Картинки порождений игрока хранятся в корневой папке Gridmap.

Создание дорог для карты.

Чтобы создать кусок дороги, надо выбрать Mesh Road Editor на панели сверху.

Дальше зажимаем правый ALT и тянем мышкой в сторону. Нажимаем второй клик, и первый участок дороги готов.

Чтобы продолжить имеющуюся дорогу зажмите ALT еще раз и поверните мышку. Теперь дорога начала делать поворот. Для более точного поворота повысьте значение параметра Texture Length и Break Angle. Последний параметр позволит более точно градуировать поворот, и сделать больше треугольников на повороте, что в конечном итоге, отразится на совершенности и красоте поворота.

Остается лишь назначить краску материала в MeshRoad. ВЫберите что нибудь похожее на асфальт.

По умолчанию ширина дороги равна 10 метрам. И это очень удобно, поскольку можно легко назначить ширину дорожного полотна как в реальной жизни.

Остается лишь замерить линейкой ширину полотна симулируемого города, и задать это значение в игре.

Или выбрать значение по ГОСТУ, чтобы в игре не было слишком тесно. ! полоса должна равняться 3,75 метрам.

В Node Properties измените параметр Node Width. Чтобы смочь отредактировать ширину конкретного узла дороги, принадлежащую ей точку нужно сначала выделить.

Для этого должен быть выбран режим Mesh Road Editor.

-9

При том дорога должна лежать на чем то. В данном случае это зеленый мусорный бачок.

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

Теперь дело остается за малым. Назначить маршруты для ботов.

Для этого нажмите на Decal Road Editor и также с помощью ALT протяните маршруты.

Бывает что маршрут подсвечивается белым и мешает смотреть на полотно дороги.

Для этого необходимо сделать некоторые настройки:

Во - первых, в разделе Pathfinding параметр Driveability необходимо назначить на 10. Можно на 100. Этот параметр определяет способности ботов агрессивно и умело ездить по проложенному маршруту. Здесь значение -1 означает что боты будут игнорировать дорогу.

Lanes Left и Lanes Right скорее всего определяют то, насколько боты будут приближаться к краям дороги во время скоростной езды в режиме преследоваеия или побега.

Параметр OneWay означает что боты будут двигаться по дороге только в одном направлении.

В разделе Improved Spline параметр looped переводится как петлированный. Не знаю, на что он влияет.

В разделе Decal Road параметр Render Priority помогает скрыть дорогу. Повышаяем с помощью плюса значения приоритета объекта над другими.

В разделе Object Annotation не забудьте назначить тип объекта Asphalt и мод Override.

А также не забудьте включить параметр over Objects в разделе Decal Road.

Потыкайте и поназначайте эти ключеые параметры и маршрут для ботов скроется от глаз обычного игрока.

Для того чтобы выделить маршрут нажмите на Blank White в Scene Tree и выбереите режим Decal Road Editor.

-10

Чтобы машины могли съезжать с одного полотна на другое надо назначить высоту дорог с точностью до миллиметра.

Для этого в меню position назначьте число для измерения Y.

-11

Что получилось на выходе:

-12

Хорошая новость:

Объекты из BeamNG уже изначально оптимизированы и имеют картинки LODы, поэтому без проблем можно создать загруженный город с плавными поворотами.

Свои собственные предметы придется еще продумывать, поэтому их должно быть немного на сцене, и иметь мало полигонов.

Чтобы наложить полосы на дорогу, надо текстурировать дорогу. Для этого надо создать текстуру в блендере либо взять готовую текстуру с драговой полосы Gridmap.

Идеи для создания карт:

1. Создать экстремальную полосу пряпятсвий для теста внедорожных свойств Транспорта.

2. Дрифтовая карта для оттачивания мастерства сноса и заноса.

3. Крутой город, симулирующий какой нибудь реальный город, например российский, с ПЛАВНЫМИ поворотами, где можно наконец погонять на огромной скорости.

4. Многоуровневый город типа Нью Йорка.

5. Гоночный трек для испытания спортивных свойств автомобиля.

6. Гоночный небесный трек для проверки авто в еще более жестких спортивных дисциплинах, где дороги имеют разные углы наклона профиля.

7. Анимированный город с разводными мостами. Будет довольно проблематично осуществить.

8. Карта бездорожье для проверки свойств внедорожников.

Для пущей реалистичности В BeamNG я рекомендую установить модификатор сцепления колес от Angelo234, с ним вы сможете проходить повороты на экстремальной скорости, а также получите возможность перевернуться.

Теги: BeamNG.drive, редактор, дороги, маршруты, боты, создание карты, здания, Decal Roads, Mesh Roads, NO MATERIALS, transform, Блендер, модель, создать, LOD, оптимизация, город, карта, дрифт, редактирование, Terrain, Карта Высот, Инструкция.

Чтобы сохранить новый вариант карты можно экспортировать, с новым именем, надо найти сам уровень и переименовать его.

В первую очередь это название карты внутри папки levels, во вторую очередь это имя самого архива целиком, в третьих внутри папки levels будет название файл info.json, который надо будет открыть с помощью WordPad и заменить название для параметра <title> который имеет значение <levels.gridmap.info.title> на название вашей карты.

Все имена должны повторяться и совпадать.

Зайдите еще в одно, оставшееся четвертое место, где хранится информация о ваших редактированиях.

Заходите в APP data, там находите папку levels, где внутри лежит папка Gridmap v2, копируете ее и тут же вставляете, меняете ее имя на название вашей карты.

Работа по модифицированию карты окончена, теперь вы можете создавать неограниченное количество карт, но в качестве опоры на необходимые данные должна будет присутсвовать оригинальная карта Gridmap v2.

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

Поэтому ничего не переименовываете, просто вставляете свои собственные скриншоты с таким же именем.

►Можете отправлять в комментариях решение тех проблем, которые я не указал. А также можете спрашивать, что не получается сделать, хотя мне кажется, что я расписал все более-менее подробно.

►Данное руководство хорошо применимо к версии BeamNG версии 0.24, поэтому не теряйте ее из виду.