Маппинг
У официальных разработчиков так же есть англоязычный гайд по маппингу.
В данный момент следующими картами заняты:
- Delta - VladIsLove ( Discord: vladislove._. )
- Frankenstein - TheArturZh ( Discord: thearturzh )
Подготовка
Маппинг происходит на сервере, поэтому для маппинга необходимо поднять свой локальный сервер. Для этого будет необходимо сначала скачать актуальную версию кода проекта из репозитория используя Git, а затем собрать её в конфигурации Release.
О том как это сделать можно прочитать в нашем подробном гайде.
Маппинг
Запуск mapping-режима
Запустите сервер и клиент, зайдите на сервер.
На клавишу ~
вы можете открыть консоль игры. Для начала маппинга вам нужно ввести в консоль mapping <ID карты> <Файл карты>
.
- ID карты это номер слота карты на сервере. Он существует т.к. в раунде может быть загружено сразу несколько карт. Для ID карты Вы можете использовать абсолютно любое число от 0 до 255, но первые 12 обычно заняты. Для того чтобы увидеть какие ID заняты и какие карты загружены, введите в консоль
lsmap
. Список появится в ней же. - Файл карты обычно лежит либо в
Resources/Maps
, который в консоли указывается как/Maps
, либо вbin/Content.Server/data
, который указывается как просто/
. Файл карты имеет расширение.yml
. Карты, которые вы сохраняете, лежат обычно вbin/Content.Server/data
. Карты, которые используются для игры, лежат обычно вResources/Maps
.
Пример команды для загрузки карты Box: mapping 220 /Maps/box.yml
Так же важно упомянуть: эта команда работает корректно только если вы уже заспавнились! Она не будет правильно работать если вы в лобби.
Сохранение карты
Карта сохраняется с помощью команды savemap <ID карты> <имя файла>.yml
Карта будет сохранена в папку bin/Content.Server/data
. Если в пути вы указали подпапку, то она будет создана там. Вы не можете сохранять карту в Resources/Maps
, при попытке сохранения будет создана подпапка в data
.
Убедитесь что вы сохраняете ту карту что нужно! Сохраняемая карта должна быть не инициализирована, иначе потом она не загрузится ни в раунде, ни в mapping. Mapping изначально загружает карту не инициализированной, но если у вас возникают сомнения то проверьте инициализацию сохраняемой карты с помощью lsmap
- она будет показана в самом левом столбце после id. Значение init: True
означает что карта инициализирована и сохранять её нельзя.
Тестирование карты
Перед тестированием не забудьте сохранить изменения!
Протестировать карту можно с помощью mapinit <ID карты>
. Это снимет карту с паузы и инициализирует её - камеры подключатся к роутерам, спавнеры заспавнят предметы и т.п. При этом функционал карты может быть ограничен по сравнению с обычным раундом. Сохранять инициализированную карту нельзя - она не будет загружаться.
Чтобы продолжить маппинг, вы можете загрузить ту же карту (вы же сохранили изменения перед тестированием?) через mapping но с другим ID.
Однако, во избежание лишней нагрузки на процессор я рекомендую делать полный рестарт раунда (restartroundnow). Это уберёт все карты что вы загрузили через mapping или loadmap.
Тестирование карты в раунде
Для тестирования карты в раунде вам потребуется создать новый прототип станции.
- Сначала переместите карту из data в папку
Resources/Maps
- там лежат файлы карт. - Прототипы станций хранятся в другой папке - в
/Resources/Prototypes/Maps/
. Зайдите туда и скопируйте любой из лежащих там .yml файлов. Оставьте его в этой же папке и дайте ему название латиницей без пробелов. - Откройте его в любом текстовом редакторе (блокнот подойдёт, но для редактирования прототипов Notepad++ будет удобнее).
- Найдите строку начинающуюся на
id:
(она ближе к началу файла) и впишите туда любой не занятый ID вместо существующего. Пишется латиницей без пробелов. Удобнее всего если он схож с названием карты. Этот ID будет использоваться для загрузки карты черезforcemap
. - Найдите строку
mapPath:
, она тоже близко к началу файла. Укажите в ней путь к файлу карты. Обратите внимание на то что путь начинается с/Maps
. Так же проверьте не используете ли вы символ \ в пути (он там может быть если вы скопировали его из проводника). Если они там есть, замените их на/
- Сохраните файл. Перезапустите сервер и введите в консоли forcemap
. При вводе ID должен появлятся в подсказках автозаполнения. После этого введите restartroundnow. Если загрузить карту не вышло, то скорее всего вы допустили синтаксическую ошибку в прототпе карты.
Теперь вы можете тестировать вашу карту в полноценном раунде. Если вы обновили свою карту, то достаточно перекинуть её из data в Resources/Maps заменив старую версию. Убедитесь что имя файла осталось то же что и раньше. После этого будет достаточно еще раз прописать forcemap и перезапустить раунд.
Так же некоторые профессии могут отсутствовать даже если вы добавили спавнер. Это происходит из-за того, что доступные профессии и количество сотрудников перечислены в прототипе карты, ниже строки availableJobs:
Редактируйте осторожно, ошибки синтаксиса приведут к тому что прототип карты не будет загружен и вы просто не найдёте своей карты. При изменениях в прототипе перезапустить раунд недостаточно, нужно перезапускать весь сервер.
Инструментарий и управление
- Когда вы в первый раз за раунд используете mapping, у вас из-за бага не загружается панель быстрых действий. Исправьте это с помощью команды
loadmapacts
Это добавит быстрый выбор объектов для спавна на вашей левой панели действий. У вас заполнятся сразу несколько панелей, которые вы можете переключать с помощью Shift+<цифра>. Что самое главное, у вас появится инструмент для быстрого удаления объектов на кнопку 0. Вы можете выключить инструмент удаления так же, как вы выключаете инструмент спавна - на ПКМ. При использовании будьте аккуратны - вы можете удалить себя! - На P (английскую) вы активируете спавн того же объекта что и под курсором. Так же работает с плиткой, но к сожалению не работает с декалями.
- Вы можете вращать объект перед тем как его заспавнить, просто нажимайте на СКМ (колёсико).
- Если вы удалили клетки станции, или наоборот построили их там где был космос - перед сохранением пропишите
fixgridatmos <ID грида>
. Если вы этого не сделаете, то у вас будет вакуум на созданной части станции. Вы можете узнать грид на котором сейчас находитесь нажав F3. - Вы можете прописать zoom <дробь с запятой (не точкой!)> для отдаления карты. Стандартное значение - 1. Отдалять дальше чем на 1,5 не практично так как дальность рендера ограничена.
- Чтобы покрасить трубы введите команду
colornetwork <ID объекта трубы> Pipe <Цвет в hex в форме RGB, можно с решеткой>
Это покрасит все соединенные с ней трубы, что так же позволит проверить не соединили ли вы вейст с дистрой. Стандартный цвет дистры - 0335FC (синий), вейста - FF1212 (красный). - В меню песочницы (английская B) вы можете включать/отключать отсвещение, FOV, отображение спавнов и труб под полом.
- Варп-поинты всё так же работают, если вы случайно удалили себя - делайте админ-гост,
loadmapacts
и варпайтесь обратно на карту. - Не забывайте, у вас есть VariableViewer позволяющий редактировать компоненты объектов. ПКМ - Debug - View Variables.
Важно знать
- Anchored (прикрученные) объекты могут находиться только в середине клетки. Если вы переместите предмет через телепорт или отредактировав TransformComponent, то он станет открученным (динамическим). У них пропадёт питание, а в случае с WallmountComponent (настенный предмет) у них появится коллизия со стеной. Это не относится к полностью статическим объектам, которые не могут быть откручены.
- Если объект который вы собираетесь удалять привязан к кнопке или выключателю, то сначала отвяжите его с помощью конфигуратора сетей. Иначе связь сохранится в файле карты как invalid. В лучшем случае карта не перестаёт работать но может показывать лишние ошибки/предупреждения. В худшем - карта вообще не сохранится, и вам придётся вспоминать где вы удаляли связанные предметы.
- Тем кто занимается репозиторием очень сложно решать конфликты между изменениями в картах из-за формата. Конфликты происходят когда два человека предлагают изменения одних и тех же строк, что может с большой вероятностью произойти из-за обновления формата или хаотичного смещения uid декалей (баг, не пофикшенный разрабами). Перед тем как маппить поинтересуйтесь не работает ли кто-то с картой.