Своя карта на сервере Rust: RustEdit, levelurl и ошибки

Своя карта на сервере Rust — это один файл .map, который лежит на публичной ссылке и подключается параметром +server.levelurl. Сервер скачивает файл при запуске, а новые игроки получают его с той же ссылки, минуя сам сервер. Поэтому большинство сбоев связано с хостингом файла и его именем, а не с редактором. Ниже разобрано, какой способ выбрать, как подключить готовую карту из RustEdit и что значат типичные ошибки в консоли.

Цветная карта высот острова: горные хребты, долины и шельф вокруг суши на тёмно-синем фоне океана с сеткой координат
Файл .map хранит примерно то же, что и такая карта высот: рельеф, биомы, объекты и маршруты, плюс океан вокруг суши.

Четыре способа получить другой мир в Rust

Редактор нужен не всегда. Если требуется просто другой остров или карта без дорог, хватит настроек генератора. Базовая установка описана в гайде о том, как создать сервер Rust через SteamCMD, здесь речь только о мире.

Способ Что меняется Нужен внешний хостинг файла Сложность
server.seed и server.worldsize Случайный остров заданного размера: 1000–6000, зерно от 0 до 2147483647 Нет Минимальная
world.configfile Доля биомов, дороги, реки, ЛЭП, чёрный список монументов Нет Низкая
Готовая карта от автора Всё, что сделал автор, включая особые монументы Да Средняя; при обновлении игры зависите от автора
Своя карта в редакторе Рельеф, объекты, маршруты, лут и торговые автоматы Да Высокая

Настройка генератора через world.configfile

Этот способ малоизвестен, хотя описан в документации Facepunch. В папке server.identity создаётся текстовый файл с JSON, а сервер запускается с параметром +world.configfile "myConfig.txt". Такой файл убирает тропы и придорожные электрощитки:

{ "Trails": false, "PrefabBlacklist": ["electrical_box_", "powerline_poles"] }

Управлять можно долями высотных зон Tier и биомов, а также дорогами, реками, ЛЭП, наземными и подземными рельсами и подводными лабораториями. Есть и белый список объектов. Настройки срабатывают при первой генерации, поэтому, если файл карты уже есть, его нужно удалить. Осторожнее с Tier0: когда этой зоны почти нет, на карте не остаётся точек появления, и игроков выбрасывает с нарушением InsideTerrain. Часть монументов требует определённой зоны или биома и при низкой доле просто не появится.

Чем делают карты: RustEdit и Rust Map Editor

Facepunch называет два редактора. Оба работают с одним форматом, а различаются порогом входа.

Параметр RustEdit Rust Map Editor
Запуск Отдельная программа, Unity не нужна Работает внутри Unity Editor
Кому подходит Новичкам и тем, кто делает карты регулярно Опытным авторам со знанием Unity, желательно и C#
Инструменты Рельеф, покрытие, биомы, топология, альфа, объекты Те же основы, больше возможностей для рельефа и покрытия
Расширение Свои инструменты добавить нельзя, часть доступна только подписчикам Patreon Открытый код, сторонние пакеты и свои инструменты

RustEdit скачивается с сайта rustedit.io. Для первой карты мы бы выбрали его: начать можно без Unity, а если какой-то инструмент окажется закрыт подпиской, это станет видно уже в работе.

Зачем нужно расширение Oxide.Ext.RustEdit

Часть того, что задаётся в редакторе, обычный сервер не понимает. Эту работу берёт на себя расширение для Oxide. Его файл Oxide.Ext.RustEdit.dll кладётся в папку RustDedicated_Data/Managed, после чего сервер перезапускается. Расширение отвечает за:

  • соединения электрических схем, собранных в редакторе. Что можно построить на таких схемах, показано в разборе логических элементов;
  • лут в расставленных вручную контейнерах и его обновление;
  • возрождение размещённых вручную ресурсов и куч мусора;
  • спавнеры NPC и транспорта;
  • товары в собственных торговых автоматах;
  • свои маршруты для Bradley APC и грузового корабля.

Здесь источники расходятся. Хостинги пишут, что без модификационного фреймворка карта из RustEdit не заработает как надо: одни прямо требуют Oxide и расширение, другие допускают и Carbon. В вики Facepunch расширение описано иначе: оно добавляет перечисленные функции, а для одних только схем без Oxide предлагается отдельный мод на Harmony, который полностью расширение не заменяет. Отсюда практический вывод: если на карте есть собственные схемы, лут или маршруты, ставьте фреймворк и расширение. Запуск полностью «ванильной» карты без них мы не проверяли, поэтому проверьте его на тестовом сервере до открытия.

Перед каждым вайпом стоит проверять, не вышла ли новая версия файла. На некоторых хостингах папка Managed закрыта, и расширение ставит поддержка, а где-то для этого есть готовая настройка в панели.

Как подключить карту к серверу: пять шагов

  1. Найдите файл. Архив с картой обычно содержит лишнее, серверу нужен только файл с расширением .map.
  2. Выложите его на постоянный хостинг. Подойдут публичный релиз на GitHub, свой сайт или Dropbox. Facepunch предупреждает, что бесплатных прямых ссылок почти не осталось, и отдельно отмечает, что публичный релиз на GitHub работает. Файл может весить больше 100 МБ.
  3. Проверьте ссылку в браузере. Если загрузка началась сама, ссылка прямая. Если открылась страница с кнопкой, сервер выдаст ошибку. У Dropbox в конце адреса нужно заменить dl=0 на dl=1. Ссылки на сообщения в Discord не подходят.
  4. Поправьте строку запуска. Добавьте адрес и уберите параметры зерна и размера.
  5. Сделайте вайп карты и запустите сервер. При смене мира постройки игроков не сохраняются, поэтому хостинги советуют вайп карты или полный вайп заранее. В консоли должна появиться строка о загрузке файла.

Минимальная строка запуска выглядит так (порты и RCON остаются как были):

RustDedicated.exe -batchmode +server.levelurl "https://example.com/mymap_v1.map" +server.level "Procedural Map" +server.identity "server1"

Ещё одно расхождение касается server.level. Facepunch просит убрать параметры процедурной генерации и прямо называет только server.worldsize и server.seed. Один из хостингов уточняет, что server.level "Procedural Map" нужен и для своей карты, другие об этом молчат. Ещё один пишет, что размер и зерно при заданном адресе просто игнорируются. Безопаснее всего следовать вики и убрать зерно с размером, а server.level оставить.

Для локальной проверки подходит адрес вида file:///path/to/your/cool.map, но другие игроки на такой сервер не зайдут: скачать файл им неоткуда.

Рельефная деревянная карта острова Крит 1612 года: объёмные горы и бухты на расписанном под море голубом фоне
Рельефная модель Крита 1612 года. Океан вокруг суши нужен и в Rust: без него сервер может зависнуть на расчёте морского маршрута.

Ошибки своей карты и что с ними делать

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

Сообщение или симптом Вероятная причина Что сделать
World cache version mismatch, World File Outdated Файл изменился, а имя прежнее, у игрока лежит старая копия. На сервере то же бывает, когда по ссылке скачалась страница вместо карты Дать файлу новое имя, например с V2; проверить ссылку
Ошибка загрузки на старте Ссылка не прямая, опечатка, хостинг недоступен Проверить адрес в браузере, для Dropbox поставить dl=1
Couldn’t Download Level у части игроков VPN, антивирус, DNS, брандмауэр, блокировка хостинга в стране игрока Взять адрес из строки Download map file в консоли F1 и скачать файл браузером в папку maps игры
Сервер завис при загрузке, застрял на ocean path Вокруг острова мало океана, или вся карта покрыта водой Добавить океан или отключить морские маршруты (команды ниже)
LoadPrefab — should start with assets/ На карте остался объект, удалённый из игры Загрузить карту в редактор и пересохранить; некоторые редакторы сами убирают такие объекты
ArgumentException: Invalid path Файл собран не под текущий патч Пересобрать с новым именем; купленную карту обновляет автор
NullReferenceException на сервере при запуске Сломанный объект на карте, устаревшие плагины или ошибка конфига Смотреть полный лог, убрать объект в редакторе, обновить плагины

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

cargoship.event_enabled false
baseboat.generate_paths false
ai.ocean_patrol_path_iterations 0

Цена такого решения — отключённое событие с грузовым кораблём. Если заспавнить его вручную, он будет стоять на месте, потому что маршрута нет.

Как обновить карту посреди вайпа

Facepunch считает правки посреди вайпа непрактичными и оставляет их для серьёзных случаев, например багов и эксплойтов. Порядок такой, номер в имени .sav здесь только для примера:

  1. Полностью остановить сервер.
  2. Заменить адрес на новую версию: был MapVersion1.map, стал MapVersion2.map.
  3. Переименовать сохранение: MapVersion1.182.sav в MapVersion2.182.sav.
  4. Старый MapVersion1.map не переименовывать, иначе игроки получат ошибку несовпадения мира. Если это уже случилось, перед запуском удалите оба файла .map.

Такая замена работает с оговорками. Объекты, появившиеся из первой версии, останутся, а новые печи, переработчики и ЗРК из второй не загрузятся. Если заметно изменить рельеф, деревья, руда и базы игроков повиснут в воздухе или уйдут под землю.

Частые ошибки при создании карты

  • Техника, поставленная напрямую. Вагоны, вертолёты и шасси машин часто ломают запуск. Для них есть объекты со словом Spawner в названии. NPC напрямую ставить тоже не рекомендуется.
  • Старые объекты. Мост (Bridge) и ливневая канализация (Storm Drain) удалены из игры, а супермаркет, заправка и склад изменены. Поэтому старые карты стоит открывать и пересохранять. Какими эти монументы стали сейчас, описано в статье о малых монументах Rust.
  • Эффекты брызг. Groundsplash, Midair Splash и Rock Splash A–C вызывают у игрока ошибку MaterialConfig сразу после входа. Их надо убрать из сцены.
  • Файл на случайном файлообменнике. Facepunch советует не брать публичные файлообменники: в некоторых странах такие домены заблокированы, и игроки оттуда не зайдут.
  • Одно и то же имя у разных версий. Каждая правка должна получать новое имя файла, иначе игрок загрузит старую копию из своей папки maps.

Кому своя карта не нужна

Для сервера на пару друзей редактор обычно избыточен: удачное зерно или файл world.configfile закроют почти все пожелания без внешнего хостинга. Своя карта добавляет заботы к каждому обновлению игры. Вайп приходится начинать с проверки файла и расширения, а купленная карта к тому же зависит от того, как быстро автор выпустит новую версию. Зато для сервера с особым режимом, авторскими монументами или своими маршрутами техники это единственный способ получить нужный мир. Игрокам ориентироваться будет сложнее обычного: привычных монументов может не быть, поэтому пригодится гайд про сетку, метки и координаты карты.

Команды и порядок действий взяты из документации Facepunch и гайдов хостингов. Сами мы их на живом сервере не прогоняли, поэтому первый запуск лучше провести на тестовой копии.

Коротко

  • Для другого острова хватит server.seed и server.worldsize, а для настройки биомов и монументов — файла world.configfile.
  • Своя карта подключается через +server.levelurl, адрес должен быть прямой ссылкой и работать круглосуточно.
  • При каждой правке файлу нужно новое имя: сервер и игроки не скачивают карту повторно, если копия уже есть.
  • Oxide.Ext.RustEdit нужен для схем, лута, спавнеров и маршрутов из редактора; перед вайпом проверяйте обновление.
  • Зависание на ocean path лечится океаном вокруг острова или отключением морских маршрутов и грузового корабля.
  • Invalid path означает, что карта собрана не под текущий патч: её нужно пересобрать под новым именем.

Понравилась статья? Поделись ей с друзьями!


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *