Руководство по созданию карты: различия между версиями

Материал из Celadon | Wiki Shiptest
Перейти к навигации Перейти к поиску
мНет описания правки
(Легендарное обновление гайда по мапингу. Теперь мапить сможет даже Пун-Пун!)
Строка 1: Строка 1:
{{Отсутствует изображение}}
{{В процессе создания|worker=Voiko}}


== Руководство "Meta" по картографированию для энтузиастов ==
= Руководство по созданию карт =
'''Написано для тех, кто имеет представление или вообще не знает, как пользоваться мап-мейкером.'''
'''В рядах Империи Celadon новое пополнение? Отлично!''' Представляю к вашему вниманию универсальный гайд для повышения квалификации!


Я понятия не имею, насколько опытен человек, читающий это, поэтому я начну с самого начала и постараюсь мало что предполагать.  
== Выбор программы ==
Прежде, чем начать мапить, нам потребуется взять на вооружение программу, с помощью которой ты сможешь создавать самые различные карты корабликов, руин, станций и не только.<br>
На выбор у нас имеются несколько программ:
[[File:Sdmm-logo.png|thumb|128px|'''"StrongDMM"''' - это один исполняемый файл, не требующий установки.]]
<ol>
<li> '''[https://github.com/SpaiR/StrongDMM?tab=readme-ov-file StrongDMM]''' - это самый '''наилучший вариант''' из всех возможных. Программа имеет удобный интерфейс и также  возможность работать с несколькими картами одновременно.</li>
<li> '''[https://fastdmm2.ss13.io/ Fastdmm2]''' - сайт, который позволяет редактировать карты без необходимости скачивания, есть возможность просто указать ссылку на GitHub. По большей части имеет не особо удобный интерфейс, данный вариант подойдёт больше для быстрого просмотра карт, чем для серьёзного маппинга.</li>
<li> '''Dream Maker''' - самый худший выбор для маппинга, интерфейс неудобный, в добавок отсутствует возможность полноценно редактировать все типы кораблей/руин. Просто забудь об этом варианте, ладно? Выкинь его из головы.</li>
</ol>
В данном гайде мы будем ориентироваться на функционал программы "StrongDMM", однако перед этим нам потребуется загрузить сердце нашего проекта, определится с выбором билда и загрузить его.<br>
Подразумевается, что вы уже ознакомлены с [[Запуск локального сервера|руководством по установке локального сервера]] и имеете на компьютере загруженный билд.<br>
'''Важно! НЕЛЬЗЯ, ЧТОБЫ НА ПУТИ ПРОГРАММЫ БЫЛА КИРИЛИЦА.'''
== Путеводитель по SDMM ==
Мы определились с программой и установили билд. Теперь смело открываем программу и первым делом нам требуется изменить Save Format на TGM, при работе с другим форматом вас будет ожидать целый легион ошибок, а нам это не нужно.
'''Заходим во вкладку File => Preferences и меняем Save Format на TGM'''. <br><br>
[[File:StrongDMM_Format.png]]<br><br>
<p>Далее нужно открыть рабочее пространство (environment), т.е. мы находим папку с нашим установленным билдом, открываем и выбираем главный файл с форматом .dme, название может отличаться в зависимости от билда.<br>
К примеру "shiptest.dme" или "baystation12.dme". '''Внимание!''' Карты созданные с другими ресурсами билда, могут некорректно работать в другом билде из-за разных ресурсов!</p><br>
[[File:StrongDMM_Open.png]]<br>
[[File:StrongDMM_Maps.png|thumb|640px]]
<p>Все изменения обязательно проводите в модульной папке - '''_maps/_mod_celadon'''! Всё остальное, что находится в папке '''_maps''', отключено или может создать проблем.</p>
<p>После загрузки рабочего пространства будет возможность открыть любую из карт. Соответственно карты (_maps/_mod_celadon) отсортированы по папкам:</p>
<ol>
<li>'''_maps/_mod_celadon/configs''' - именно здесь происходит инициализация корабликов с помощью конфигов.</li>
<li>'''_maps/_mod_celadon/map_files''' - главные карты (ЦК).</li>
<li>'''_maps/_mod_celadon/outpost''' - различные карты аванпостов.</li>
<li>'''_maps/_mod_celadon/RandomRuins''' - различные руины, они также рассортированы по типам планет.</li>
<li>'''_maps/_mod_celadon/shuttles''' - космические корабли, внутри папки распределены по фракциям.</li>
<li>'''_maps/_mod_celadon/templates''' - шаблоны.</li>
</ol>
<p>Основное рабочее пространство состоит из нескольких окон:</p>
<ol>
<li>Режим курсора - именно здесь происходит инициализация корабликов с помощью конфигов.</li>
<li>Область карты (синий фон - область за пределами карты).</li>
<li>Все доступные в игре вещи, структуры и не только.</li>
<li>Префабы - варианты одного и того же объекта с измененными параметрами.</li>
<li>Поиск предметов по типу.</li>
<li>Параметры объекта. Подробнее об этом будет ниже.</li>
</ol>
[[File:StrongDMM_Interface.png]]<br><br>
<p>Все окна удобно настраиваются по вашему желанию.<br>
Для этого нужно удерживая нужное окно подвигать его по экрану. Всё интуитивно понятно.</p><br>
[[File:StrongDMM_Interface2.png]]<br>
<p>Скриншоты карт делаются самим StrongDMM:</p>
<ol>
<li>Открыть панель шестерни.</li>
<li>Создать скриншот.</li>
<li>Создать скриншот выбранной зоны.</li>
<li>Сохранить скриншот в буфер обмена.</li>
</ol>
[[File:StrongDMM_Screenshots.png]]


Первое, что вам нужно сделать - это необходимо получить копии всех файлов для редактирования. Для этого перейдите [https://github.com/tgstation/tgstation сюда] и нажмите кнопку ZIP рядом, чтобы скачать. После скачивания ZIP-файла - распакуйте его куда угодно.
== Хоткеи ==
<ol>
<li>Передвигать карту на '''СКМ (нажатие колёсика)''', зум на колёсико.</li>
<li>'''CTRL+1''' - переключает слой зон.</li>
<li>'''CTRL+2''' - переключает слой покрытий (turf).</li>
<li>'''CTRL+3''' - переключает слой объектов.</li>
<li>'''CTRL+4''' - переключает слой мобов.</li>
<li>Удерживание '''S + ЛКМ''' – пипетка.</li>
<li>Удерживание '''D + ЛКМ''' - удалить подсвеченный красным объект.</li>
<li>Удерживание '''R + ЛКМ''' - замена тайла выбранным объектом.</li>
<li>'''CTRL + N''' - новое рабочее пространство(environment).</li>
<li>'''CTRL + O''' - открыть карту.</li>
<li>'''CTRL + Q''' - выход из программы.</li>
<li>'''CTRL + Z''' - отменить последнее действие.</li>
<li>'''CTRL + SHIFT + Z''' - вернуть последнее отмененное действие.</li>
<li>'''CTRL + C''' - копирование; '''CTRL + V''' - вставить;  '''CTRL + X''' - вырезать; '''DEL''' - очистить (как правило, речь идет о выбранной области через 3 режим, при этом, очищается области по периметру выделенной зеленым).</li>
<li>'''CTRL + D''' - отменить выделение.</li>
<li>'''CTRL + S''' - сохраняет карту.</li>
<li>'''CTRL + F''' - открыть строку поиска объекта.</li>
<li>'''F5''' - обновить слой</li>
<li>'''+''' - приблизить масштаб</li>
<li>'''-''' - отдалить масштаб</li>
</ol>
== Маппинг ==
'''A.T.O.M. - Area - Turf - Object - Mob'''<br>
В маппинге, в основном мы рассматриваем 4 типа:


Итак, теперь у вас есть папка с последним кодом и резервная копия в формате ZIP, к которой можно вернуться, если вы все сломаете. В основной папке вы увидите «tgstation.dme». Вы можете открыть это с помощью программы Dream Maker, которая будет находиться в вашей папке BYOND. Установите Dream Maker в качестве программы по умолчанию для открытия файлов .dme, если это еще не сделано. Открыв его, вы увидите две вкладки слева: файл и объект. На вкладке «Файл» откройте '''карты''' , а затем откройте «tgstation.2.1.2.dmm» или другое название текущей версии карты. Тогда вы получите что-то похожее на это:[[File:Dreammakermap.png|center|600px]]
1. [https://www.byond.com/docs/ref/#/area '''Зоны''']. Покрывают область и карты и говорят коду что это за территория и её свойства. От зоны работает вся электроника, зону запитывает АЦП и т.д. Свойства у зон бывают самые различные. От звуков и сообщений в чате до запрета телепортации.  


Переключитесь с вкладки '''«Файлы»''' на вкладку '''«Объекты»''' , и вы увидите '''область''' , '''моб''' , '''объекты''' и '''турф'''. Это четыре основных «слоя», которые вы можете увидеть в редакторе. Вы можете включать и выключать их видимость и интерактивность, используя раскрывающийся список '''слоев''' . Я бы посоветовал скопировать эту карту и переименовать ее, скажем, в Test_Station.dmm. Возможно, удалите большую часть или всю станцию ​​по умолчанию и постройте на теперь уже пустом z-уровне, где захотите. Чтобы создавать объекты, используйте дерево объектов в левой части пользовательского интерфейса, чтобы выбрать объекты, а затем щелкните, чтобы разместить их. Простой щелчок позволяет разместить по одному элементу на тайле из каждой категории, а щелчок при нажатой клавише Ctrl '''размещает''' его в стопке.'''поверх''' всех предыдущих, а щелчок при нажатой клавише Shift удаляет самый '''верхний''' элемент. Вы можете открыть несколько карт одновременно — обычно у меня открыта карта /tg/station по умолчанию и моя, и тогда мне будет гораздо проще беззастенчиво копировать и вставлять вещи. Кроме того, поиск чего-либо в дереве объектов может быть чертовски утомительным — щелкните правой кнопкой мыши то, что вы видите, и вы увидите его путь в дереве — obj/structure/closet/etc. Это поможет вам найти вещи. С этого момента вы действительно можете начать правильно составлять карты.
2. [https://www.byond.com/docs/ref/#/turf '''Турфы''']. Пол и стены. Полы определяют какой в тайле будет газ, температура, скорость, гравитация, а стены понятно, надеюсь, что делают. Нельзя в один тайл (условная игровая клетка) поставить и пол и стену. Под стеной при разборе всегда будет базовый пол, если в коде не прописано иного.


Вы можете выбрать области для копирования/вставки/удаления или войти в режим добавления или заполнения при размещении объектов. По сути, просто щелкайте по всем меню, и вы более или менее поймете, как они работают. '''Параметры>Увеличение''' позволяет уменьшить масштаб до 50 %, чтобы увидеть больше объектов. Используйте слои, чтобы выбрать, какую область, объекты и турф вы хотите редактировать. Если вы действительно хотите что-либо видеть, я бы снял выделение с области и поставил галочку «показывать только выбираемые слои».
3. [https://www.byond.com/docs/ref/#/obj '''Предметы'''] . Всё, что не было указано ранее. В том числе, но не заканчивая ими: лендмарки (точки спавна), простые предметы (столы, стулья), декали (и прочий декор типо мелковых рисунков), рандом спавнеры, машинерия (от лампочки, до консолей и всех труб), провода, и прочее.


Таким образом, первым шагом будет создание первых нескольких комнат. Выберите турф (пол) из стандартных моделируемых полов. Они начнутся с правильной вёрстки и давления воздуха на них, как вам и нужно. Окружите эти этажи стенами, и вот, у вас есть комната. Попробуйте разместить там несколько столиков, возможно, один или два торговых автомата.
4. [https://www.byond.com/docs/ref/#/mob '''Мобы''']. Все НПС. С мобами можно по-разному играться задавая им <s>скорость</s>, здоровье, урон и <s>лутдпроп (для продвинутых).</s>


Если вы хотите добавить несколько фишек в свою новую комнату, но вас не устраивает то, как они аккуратно складываются друг на друга, вы можете изменить их значения «pixel_x» и «pixel_y» в меню «Редактировать» ПКМ, чтобы расположить их по своему усмотрению. ! (Не забудьте начинать и заканчивать значение двойными кавычками! Кроме того, все пользовательские значения выделены '''жирным шрифтом''' , чтобы их было легче идентифицировать.) Фактически, большинство настенных машин на станциях сдвинуты таким образом, и хотя они ВИДЯТСЯ находящимися на стене, они на самом деле находятся на тайле перед ним. Только не переусердствуйте с этим, так как каждый новый экземпляр объекта добавляется как отдельная запись в меню, и когда их десятки, может быть сложно запомнить, какой из них вам нужен. После того, как вы обустроили комнату, вам захочется сделать в ней свет.
=== Список переменных ===
{|
У каждого типа есть список переменных. Перечислять все переменные, которые меняются у объектов можно долго, но главные указаны здесь:
|[[File:Mystery pipe.png|left|frame|There is one uninvited guest here!]]
|'''Важно:''' при строительстве станции вам может понадобиться объекты с определенным расположением (окна, трубы, кабели и т. д.), которого нет в вашем меню. Это связано с тем, что BYOND не моделирует экземпляры объекта, отличные от его базового состояния, если они не присутствуют на карте. Вы можете сгенерировать их, щелкнув объект правой кнопкой мыши и выбрав «Создать экземпляр из состояния/направления». Эта функция имеет '''нежелательную особенность''' в котором к сгенерированному объекту иногда автоматически добавляется тег. Эти теги могут вызвать ошибку в работе определенных функций игры во время раунда, и их необходимо удалить. Чтобы проверить его, щелкните правой кнопкой мыши элемент на карте или в меню, выберите «Изменить» и прокрутите до строки «тег», которая должна быть пустой, за исключением двух двойных кавычек («»). Если это не так (что легко заметить, поскольку тег массивный и жирный, его невозможно не заметить даже при прокрутке со скоростью света), измените его. Хорошие карты обычно не содержат их, поэтому вы можете смело копировать и вставлять их, сколько душе угодно.
'''Совет''': помните, что все нестандартные объекты имеют собственную запись в меню, а наличие тега вовсе не является стандартным для большинства объектов!
|}
{|
|[[File:Editinstance.png|left|200px]]
| Итак, теперь мы подошли к основам создания функциональной комнаты. Прежде всего, вам нужно снова включить слой области. Выберите какую-нибудь область на дереве объектов и покройте ею свою комнату. Если хотите, вы можете переименовать эту область, мы сделаем это позже. Убедитесь, что эта область больше нигде на карте не используется. В каждой зоне должен быть один APC  / ЛКП. Скопируйте его с карты по умолчанию или создайте самостоятельно, затем переименуйте его переменную «name» через «edit» во что-нибудь подходящее. Если вы скопировали свой ЛКП с другой карты, скорее всего, тип ячейки и каталог выделены жирным шрифтом. Тип ячейки определяет, сколько энергии может удерживать ЛКП, и для вашей первой карты вам нужно будет установить хороший и высокий уровень, поскольку у вас еще нет какого-либо генератора — 10 000 должно хватить. Dir определяет направление, в котором находится APC относительно ячейки, которую он занимает. По сути, 1 означает, что он находится над ячейкой, в которую вы его поместили, 2 — снизу, 4 — справа и 8 — слева.
Обратите внимание, что в ЛКП '''dir''' — единственная переменная, контролирующая их положение. Позиции других объектов определяются значениями '''Pixel_x''' и '''Pixel_y''' — это меняет место появления ЛКП в редакторе, но в игре они привязываются к тому, что говорит переменная '''dir''' . Другие объекты, например знаки на стенах, будут учитывать только переменные пикселей, а не dir. В обычной энергосистеме вы должны подключить ЛКП ко всем остальным и генератору станции через ячейки СМЕСа, но мы сделаем это позже. На данный момент у вас есть базовая комната, в которой есть электричество и в которой достаточно воздуха, чтобы можно было дышать. Вы можете поставить баллон с воздухом, если считаете, что израсходуете весь кислород или что-то в этом роде.
|[[File:Directions.png|right|200px]]
|}


'''Важное примечание.''' В редакторе есть '''переменные nudge_x''' и '''nudge_y''' , а также различные переменные оси Z. Никогда не меняйте их, они не используются в SS13 и ничего не ломают.
[https://www.byond.com/docs/ref/#/%7Bnotes%7D/pixel-movement '''pix_x''' | '''pix_y'''] - Задают смещение от центра тайла. Вся настенная машинерия ставится над/под/слева/справа от нужного расположения на стене и поднимается в нужную сторону на 28-32 пикселя. (1 тайл - 32х32 пикселя)


Чтобы иметь возможность фактически появляться в комнате, вам нужно разместить спавнеры. Вы увидите их в виде больших красных символов X на карте по умолчанию для каждой роли. Есть также синие крестики для мест появления ксеносов и мест появления всех опоздавших на шаттле прибытия. Поместите пока spawn_late где-нибудь в своей комнате.
[[File: Directions.png|thumb|256px|Наглядный пример направлений]]
[https://www.byond.com/docs/ref/#/atom/var/dir '''dir'''] - Направление.
2 - на игрока 1 - от игрока 4 - вправо 8 - влево. Если направлений больше, то и другие значения до 16.  


Чтобы действительно играть на своей карте и иметь возможность работать с ней от имени администратора, вам придется ее скомпилировать. Сначала убедитесь, что дерево файлов (слева, как и дерево объектов, щелкните вкладку файла) открыто, и перейдите к картам. Убедитесь, что отмечен только ваш собственный. Затем нажмите «Создать»> «Компилировать» сверху и дождитесь завершения. Это даст вам что-то вроде «tgstation.dmb» в папке, содержащей бота, код, конфигурацию, карты и т. д. Пока вы здесь, быстро зайдите в конфигурацию и откройте «admins.txt». Замените там все на:
'''anchored''' - Закрепление. Объект нельзя потянуть или сдвинуть если TRUE


«<yourbyondname> = Game Master», указывая свое имя BYOND.
'''Id''' и '''id_tag''' - Кнопочная машинерия. Для кнопки задается ''id'', для объекта ''id tag'' определяет поведение для дверей(болты, открыть, доступ и т.д)<br>
Если вам нужно, чтобы кнопка(id) открывала дверь/поддур и тд с 1 ''id_tag'' - прописывайте в ''id'' так ''“ВАШ ID_TAG”''<br>
Если Вам нужно, чтобы кнопка(id) открывала дверь/поддур и тд с множеством ''id_tag'' - прописывайте в id так ''list(“ID_TAG1”,”ID_TAG2”)''. Вписывать можно сколько вашей душе угодно, главное соблюдайте синтаксис.


Это сделает вас администратором, что очень полезно для работы в игре. Теперь давайте загрузим сервер, чтобы вы могли запустить свою карту! Найдите «Dream Daemon» (с большим зеленым значком) в папке BYOND и щелкните раскрывающийся список «Файл» внизу. Выберите свой «tgstation.dmb». Выберите порт, если хотите, установите безопасный режим безопасности и невидимый режим видимости. Нажмите «Пуск», чтобы запустить сервер, это займет некоторое время. Затем вы можете подключиться к нему через BYOND, указав любой внешний IP-адрес, показанный в Dream Daemon, если этот порт правильно перенаправлен. В противном случае используйте свой внутренний IP-адрес 192.168.xx, где x — любое значение. Если вы этого не знаете, спросите, и я смогу помочь. Войдя, перейдите на вкладку администратора и нажмите «Начать игру». Присоединившись после начала, вы будете появляться на созданном вами позднем спауне, и, будучи администратором,
'''req_access (list)''' - Проверка на доступ любая машинерия и двери. Таблица доступов есть в руководстве по маппингу. Несколько доступов пишутся через запятую без пробелов. Если вы хотите привязать мультидоступ, то прописывайте его через запятую, например: req_access = list(1,19,43)


С этого момента вы действительно можете делать все, что захотите. Скопировать карту по умолчанию и разобраться, как все работает, не так уж сложно и весьма полезно. Если хотите, вы можете просто немного изменить стандартный вариант. Первое, что я сделал, это небольшой челнок — вы можете видеть это внизу. Просто настройте его и добавьте что-нибудь, и вы довольно легко поймете, как почти все работает. Пояснения по проводке, трубопроводам и атмосфере можно получить здесь. Позже я добавлю руководство по атмосфере, а также руководство по выработке электроэнергии и проводке. Если вы хороший инженер в игре, это очень поможет картографу.
[https://www.byond.com/docs/ref/#/atom/var/icon '''Icon'''] и [https://www.byond.com/docs/ref/#/atom/var/icon_state '''icon_state'''] - Первый указывает путь до дми файла с кучей иконок, второй указывает какая именно иконка из кучи в этом файле будет показываться.


== Проверки перед публикацией ==
=== Каждое новое помещение начинается с зоны ===
Зона это основной способ взаимодействия тайлов с кодом игры. Будет ли в зоне электричество от апц, либо же она будет запитана магией, будет ли в ней гравитация, какой в ней будет эмбиент(звук окружения), машинерия и как она будет работать в ней и т.д.


* Полы с воздухом или без него, как и должно быть? (обычный или безвоздушный)
Зоны на станциях не должны повторяться. Дело в том, что зона не обязательно должна располагаться близко, чтобы передавать всю информацию внутри себя. Если разместить одну и ту же зону на разных концах карты, то пожарная сигнализация будет срабатывать в обоих, даже если вторая вообще не имеет атмосферы. Это работает даже на разных Z уровнях!
* Есть ли в этом зоне ЛКП?
* Есть ли в этом зоне воздушная сигнализация?
* Есть ли в этом зоне консоль запросов?
* Есть ли на территории освещение?
* Есть ли в этом помещении выключатель света?
* Достаточно ли в этом зоне интеркомов?
* Достаточно ли в этом зоне камер видеонаблюдения?
* Подключена ли зона к воздушному контуру скрабберов?
* Подключена ли зона к вентиляционному контуру?
* Все ли подключено правильно?
* Есть ли на территории пожарная сигнализация и противопожарные шлюзы?
* Все ли двери работают правильно?
* Правильно ли настроены доступы на дверях, кнопках модуля и т. д.
* Все ли предметы размещены правильно? (не ниже вентиляционных отверстий, скрубберов, столов)
* Правильно ли работает система утилизации в этом помещении?
* Проверьте наличие неуместных или наложенных частей труб (воздушных и отводящих).
* Проверьте, нет ли неуместного или наложенного куска провода.
* Определите, насколько сложно проникнуть в эту область и где находятся слабые места, и соответствующим образом сбалансируйте область (например, Хранилище должно быть сделано из усиленных конструкций и электрифицированных окон, Кухня не должна быть сделана из этих материалов, а из обычных стен)
* Проверьте, не слишком ли много пустого пространства. Если да, уменьшите его и замените остальные туннелями для обслуживания.
* Есть ли нерушимые турфы там, где их не должно быть?


== Общие рекомендации по маппингу станции ==
Помните, что настраивать и изменять свойства зоны необходимо исключительно в коде!
=== Подробнее про Variables ===
[[File:sdmm_variables.png|thumb|256px|Область управления переменными]]
Данная область позволит вам творить самые настоящие тёмные колдунства при наличии хотя бы минимальных знаний понимания работы кода/переменных.
Зона Variables состоит из двух вкладок: Instance и Prefab.
'''Instance''' - Позволяет смотреть и менять параметры у одного объекта на карте.
'''Prefab''' - Также позволяет проверять параметры, однако менять параметры будет у всех таких же объектов на карте.
У вас также имеется возможность использовать некоторые параметры, чтобы показать только изменённые переменные.
<ol>
<li>'''Ctrl+1''' - '''Show modified only''' - Покажет только те переменные, что уже были изменены.</li>
<li>'''Ctrl+2''' - '''Show types''' - Покажет переменные не только объекта, но и также его родителей.</li>
<li>'''Ctrl+3''' - '''Show pins''' - Позволит закрепить необходимую переменную, чтобы не потерять её из виду. Она будет показываться в самом верху.</li>
<li>'''Ctrl+4''' - '''Show tmp, const, and static''' - Наши тёмные маги ещё не познали такую сильную магию. Об этом параметре особо ничего не известно. </li>
</ol>
== Создание кораблей и руин ==
<span>Все текущие корабли находятся в папке '''_maps/_mod_celadon/shuttles''' и имеют сортировку по фракциями, а также там имеется отдельная папка для субшаттлов - '''_maps/_mod_celadon/shuttles/subshuttles'''. В этих папках хранятся сами карты, однако инициализация кораблей происходит благодаря папке '''_maps/_mod_celadon/configs'''.</span>


=== В общем ===
=== Конфиг корабля ===
[[File:example_ship_config.png|thumb]]
<p>В папке с конфигами вы можете ознакомиться со структурой и перенести её в ваш новый файл. <br>
Вы также можете изучить саму [https://github.com/CeladonSS13/Shiptest/blob/beta-dev/_maps/ship_config_schema.json '''структуру'''] и пример [https://github.com/CeladonSS13/Shiptest/blob/beta-dev/_maps/example_ship_config.json '''конфигурационного файла'''].</p>
<p>Пройдёмся по переменным:</p>
<ol>
<li>'''map_name''' - Полное название корабля. Именно с таким названием игроки увидят ваш корабль в общем списке в лобби.</li>
<li>'''map_short_name''' - Краткое название карты. Обозначает класс корабля. Будет отображаться в манифесте. Не может содержать пробелы. Кроме букв доступны только дефис и нижнее подчёркивание.</li>
<li>'''description''' - Описание корабля. Будет отображаться при выборе корабля в лобби. Содержит в себе лор корабля.</li>
<li>'''map_path''' - Путь к файлу карты корабля. Например: "_maps\shuttles\inteq\inteq_colossus.dmm"</li>
<li>'''enabled''' - Если "true" - доступно для покупки игроками. Если "false" - только для щитспавна.</li>
<li>'''limit''' - Допустимое количество для покупки корабля игроками.</li>
<li>'''space_spawn''' - По умолчанию корабль спавнится на аванпосту. Если "true", то корабль заспавнится в космосе.</li>
<li>'''prefix''' - Указывается префикс фракции. Доступные префиксы можно найти на [https://wiki.celadon.pro/index.php/Префиксы этой странице].</li>
<li>'''faction''' -  Путь к датуму фракции. Доступные фракции находятся в этом файле: [https://github.com/CeladonSS13/Shiptest/blob/beta-dev/mod_celadon/faction/code/faction.dm mod_celadon/faction/code/faction.dm], если нет необходимой - можно найти в другом файле: [https://github.com/CeladonSS13/Shiptest/blob/beta-dev/code/modules/faction/faction_datum.dm code/modules/faction/faction_datum.dm].</li>
<li>'''tags''' - Указываются теги корабля. Их можно найти в этом файле: [https://github.com/CeladonSS13/Shiptest/blob/beta-dev/_maps/ship_tags_descriptions_guide.txt _maps/ship_tags_descriptions_guide.txt]. На данный момент не используется. В будущем планируется использовать для сортировки кораблей.</li>
<li>'''namelists''' - Указываются кодовые названия списков, из которых корабль будет генерировать название корабля при его создании. Ознакомиться с доступными списками и названиями можно в этом файле:[https://github.com/CeladonSS13/Shiptest/blob/beta-dev/strings/ship_names.json strings/ship_names.json].</li>
<li>'''job_slots''' - Состоит из 3 частей. Название (название профессии при заходе на корабль), outfit (путь к снаряжению в коде), slots (количество доступных профессий). Доступный список снаряжений можно найти по пути [https://github.com/CeladonSS13/Shiptest/tree/beta-dev/mod_celadon/outfit/code mod_celadon/outfit/code], они имеют примерно такую структуру: ''/datum/outfit/job/фракция/профессия''.</li>
</ol>


* Не прокладывайте трубы / кабели / трубы отходов через стены, если этого можно избежать. В противном случае их будет сложно ремонтировать или портить.
=== Создание субшаттла ===
* Попробуйте подключить отделы к обслуживанию через заднюю или боковую дверь. Это позволяет игрокам сбежать и позволяет антагам проникнуть внутрь.
[[File:guide_subshuttle.png|thumb|256px|Пример датума субшаттла]]
Субшаттлы инициализируются не так, как обычные корабли, им не нужен конфиг. Они недоступны для покупки в общем списке лобби, но могут быть использованы в качестве дополнительного корабля внутри самого корабля или для отправки к примеру ЕРТ отряда с помощью администрации. Они создаются в отдельном файле: [https://github.com/CeladonSS13/Shiptest/blob/beta-dev/mod_celadon/maps/code/subshuttles.dm mod_celadon/maps/code/subshuttles.dm].


=== Атмосфера ===
Путь к картам субкораблей: '''_maps/_mod_celadon/shuttles/subshuttles'''.
=== Создание руины ===
<p>Руинки - это дополнительные локации, которые спавнятся на планетах. На одной планете может быть максимум одна руина.</p>
<p>При создании руины старайтесь использовать флору и фауну, которые предназначены для выбранной вами планеты.</p>
<p>Чтобы инициализировать руину вам потребуется закинуть карту в папку с руинами для необходимой планеты по пути: '''_maps/_mod_celadon/RandomRuins/'''.</p>
<p>Затем перейдите к файлу '''mod_celadon/maps/code/ruins/ruin.dm''' и пропишите датум, по примеру других руин в файле. Датум может иметь такие параметры:</p>
<ol>
<li>'''Datum''' - ''[Обязательно]'' /datum/map_template/ruin/Планета/Название</li>
<li>'''name''' - ''[Обязательно]'' Полное название вашей руины</li>
<li>'''id''' - ''[Обязательно]'' Уникальное и краткое название руины, без нижних подчёркиваний. Используется функционирования для чёрного листа.</li>
<li>'''suffix''' - ''[Обязательно]'' Название вашего файла. Пример: anima_heirophant.dmm</li>
<li>'''description''' - ''[Обязательно]'' Описание вашей руины, лёгкий лор. Используется для страницы с информацией о руинах (в разработке). </li>
<li>'''cost''' - Влияет на вероятность спавна вашей руины. Чем выше стоимость, тем реже она может встретиться.</li>
<li>'''allow_duplicates''' - Если значение "False", то на весь раунд сможет появится только одна руинка.</li>
<li>'''ruin_tags''' - Используется для краткого описания руины. Теги можно найти здесь: [https://github.com/CeladonSS13/Shiptest/blob/beta-dev/code/__DEFINES/ruins.dm code/__DEFINES/ruins.dm].</li>
<li>'''never_spawn_with''' - Не заспавнит руинку, если уже имеется указанная руина из вашего списка.</li>
</ol>
<p>После создания датума перейдите к текстовому файлу '''map_catalogue_key.txt''' по пути: '''_maps/_mod_celadon/map_catalogue.txt''' и оставьте запись о руинке с размерами, тегами и путями.</p>


* В каждой зоне должен быть ТОЛЬКО один датчик тревоги по воздуху (исключения возможны только в том случае, если в помещении установлены скрубберы или вентиляционные насосы, работающие на разных частотах).
=== Важная дополнительная информация ===
* В каждой КОМНАТЕ (отгороженном помещении) должен быть как минимум один вентиляционный насос и скруббер, правильно подсоединенный к соответствующему контуру. Имейте в виду, что скрубберы не обнаруживают газы / давление; работают только воздушные сигнализации.
<p>Обязательное правило для создания корабля и субшатла, чтобы он не был квадратным иначе, как бы вы не старались при постановке док портов, вы не сможете задать нужное вам направление.</p>
* Трубы контура подачи воздуха должны быть окрашены в синий цвет.
<p>[Wideband] На корабля обязательно должно присутствовать средство связи с другими кораблями.</p>
* Трубы контура скрубберов должны быть окрашены в красный цвет.
<p>Если вы хотите, чтобы ваша карта была добавлена на [https://map.celadon.pro вебкарту], то нужно обращаться непосредственно к хосту Celadon`a - Voiko.</p>
* В некоторых областях требуются специальные подтипы воздушной сигнализации: "/engine" для инженерного отсека и "/server" для телекомов или серверной комнаты RnD.
<p>Максимальные размеры руин: '''121x75'''. Максимальный размер корабля равен максимальному размеру ангара '''56x40'''.</p>
<p>Список кодов доступа (access) к шлюзам и так далее находится в файле [https://github.com/CeladonSS13/Shiptest/blob/beta-dev/code_DEFINES/access.dm code/_DEFINES/access.dm].</p>
<p>При создании атмосферы на шипе не используйте стационарные танки с газами.</p>


=== Питание ===
= Проверка перед публикацией =
 
<ol>
* В каждой области (которой требуется электроэнергия) должен быть ровно один ЛКП. Для областей с высоким потреблением энергии на старте (инженерные/грузовые) можно использовать один из подтипов с повышенным зарядом батареи.
<li>Полы с воздухом или без него, как и должно быть? (обычный или безвоздушный)</li>
 
<li>[APC] - Есть ли в этой зоне ЛКП?</li>
== Атмосфера ==
<li>[Air Alarm] - Есть ли в этой зоне воздушная сигнализация?</li>
 
<li>[Outpost Communications Console] - Есть ли в этой зоне консоль запросов?</li>
=== Трубы и коллекторы ===
<li>[Light] - Есть ли на территории освещение?</li>
 
<li>[Light Switch] - Есть ли в этом помещении выключатель света?</li>
Атмосфера выпускает смесь газов в контур подачи воздуха (синие трубы). Корабли оснащены скрабберами, которые фильтрют нежелательные газы и отправляет их обратно в атмосферу через скруббер (красные трубы).
<li>[Intercom] - Достаточно ли в этом зоне интеркомов?</li>
 
<li>[Camera] - Достаточно ли в этом зоне камер видеонаблюдения?</li>
Если вы расширяете контур подачи воздуха (синие трубы), используйте объекты в /obj/machinery/atmogenics/pipe/simple/supply/visible или ../hidden в зависимости от того, хотите ли вы, чтобы он отображался над этажами или под ними. Для коллекторов используйте объекты в каталогах /obj/machinery/atmogenics/pipe/manifold/supply/visible и ../hidden.
<li>[Vent Scrubber] - Подключена ли зона к вентиляционному очистителю?</li>
 
<li>[Vent Pump] - Подключена ли зона к вентиляционному насосу?</li>
Если вы расширяете цикл скруббера (красные трубы), используйте объекты в /obj/machinery/atmogenics/pipe/simple/scrubbers/visible или ../hidden в зависимости от того, хотите ли вы, чтобы он отображался над этажами или под ними. Для коллекторов используйте объекты в каталогах /obj/machinery/atmogenics/pipe/manifold/scrubbers/visible и ../hidden.
<li>[Fire Alarm & Fire Doors] - Есть ли на территории пожарная сигнализация и противопожарные шлюзы?</li>
 
<li>[Holopad] - Имеется ли голопад на вашем судне?</li>
Однако, если вы строите трубопроводную сеть, которая не имеет ничего общего с контуром подачи воздуха или скрубберами, вам следует использовать объекты в /obj/machinery/atmogenics/pipe/simple/general/visible или ../hidden. Для коллекторов используйте объекты в каталогах /obj/machinery/atmogenics/pipe/manifold/general/visible и ../hidden.
<li>Все ли подключено правильно?</li>
 
<li>Все ли двери работают правильно?</li>
Чтобы добавить новые цвета труб, вам нужно будет добавить новые подтипы в соответствующие файлы .dm, расположенные в папке \code\modules\atmogenics\machinery\pipes.
<li>Правильно ли настроены доступы на дверях, кнопках и т. д.?</li>
 
<li>Все ли предметы размещены правильно? (не ниже вентиляционных отверстий, скрубберов, столов)?</li>
Пожалуйста, воздержитесь от редактирования var-каналов, так как это обычно приводит к графическим сбоям и другим проблемам.
<li>Правильно ли работает система мусоропровода?</li>
 
<li>Проверьте наличие неуместных или наложенных частей труб (воздушных и отводящих).</li>
=== Воздушная тревога ===
<li>Проверьте, нет ли неуместного или наложенного куска провода.</li>
 
<li>Определите, насколько сложно проникнуть в эту область и где находятся слабые места, и соответствующим образом сбалансируйте область (например, Хранилище должно быть сделано из усиленных конструкций и электрифицированных окон, Кухня не должна быть сделана из этих материалов, а из обычных стен)</li>
В каждой зоне (со скрубберами и/или вентиляционными насосами) должен быть ровно один сигнализатор воздушной тревоги. Следует разместить более одного, если вентиляционные насосы или скрубберы используют радиочастоты, отличные от частоты по умолчанию (1439).
<li>Проверьте, не слишком ли много пустого пространства. Если да, уменьшите его и замените остальные туннелями для обслуживания.</li>
 
<li>Есть ли нерушимые турфы там, где их не должно быть?</li>
=== Скрубберы (подача воздуха на станцию) ===
</ol>
 
В каждой комнате (т. е. в помещении, отгороженном стеной), за исключением коридоров технического обслуживания, должен быть хотя бы один скруббер.
 
Путь для скрубберов, которые начинаются с: '''/obj/machinery/atmogenics/components/unary/vent_scrubber/on'''
 
И убедитесь, что '''id_tag''' ​​является значением по умолчанию (ноль).
 
Также убедитесь, что скруббер подключен к контуру скруббера!!
 
=== Вентиляционные насосы (подача воздуха на станцию) ===
 
В каждой комнате (т. е. в помещении, отгороженном стеной), за исключением коридоров технического обслуживания, должен быть как минимум один вентиляционный насос.
 
Путь к вентиляционным отверстиям, начинающимся с:'''/obj/machinery/atmogenics/components/unary/vent_pump/on'''
 
Пожалуйста, убедитесь, что '''id_tag''' ​​является значением по умолчанию (ноль).
 
Также убедитесь, что вентиляционный насос подключен к контуру подачи воздуха!
 
=== Баллоны с газом и фильтры ===
На каждой станции должен быть полный набор помещений с гоазом — или, как минимум, один для N2, один для O2 и третье помещение для фильтрации опасных газов.
Для каждого помещения необходимы:
 
* '''Снаружи''' : баковой компьютер и газовый фильтр, позволяющий выбирать, какие газы будут в него фильтроваться.
* '''Внутри''' : газовый инжектор (вход), вентиляционный насос (выход), датчик газа и специальный газон.
 
Компьютер резервуара управляет вводом/выводом и получает данные от датчика газа.
 
Особый турф создает газы, которые будут находиться внутри каждого резервуара - газовый баллон предназначен только для украшения.
 
Давайте посмотрим:
 
* '''Компьютер резервуара''' : /obj/machinery/computer/atmos_control/tank/nitrogen_tank
* '''Фильтр N2''' : /obj/machinery/atmophers/comComponents/trinary/filter/atmos/n2
* '''Газовый инжектор''' : /obj/machinery/atmосферика/компоненты/unary/outlet_injector/atmos/nitrogen_input
* '''Вентиляционный насос''' : /obj/machinery/atmogenics/comComponents/unary/vent_pump/siphon/atmos/nitrogen_output
* '''Датчик газа''' : /obj/machinery/air_sensor/atmos/nitrogen_tank
* '''Турф''': /turf/open/floor/engine/n2
 
Для этих объектов заданы все необходимые переменные и включен запуск - вам придется редактировать каталог только в случае необходимости.
 
Кроме того, вам понадобится газовый смеситель такого типа для резервуара с воздушной смесью (N2 + O2):
 
* '''Воздушный смеситель''' : /obj/machinery/atmосферика/компоненты/trinary/mixer/airmix
 
== Питание ==
 
=== ЛКП ===
Для каждой новой комнаты нужен хотя бы один, это обеспечит всю комнату энергией (волшебным образом). Каждая единица техники на территории ЛКП будет получать энергию либо от освещения, либо от оборудования, либо от канала окружения.
 
Любому помещению с очень тяжелым оборудованием (например, грузовому отсеку) может потребоваться усиленный APC (APC/highcap), чтобы предотвратить преждевременное отключение электроэнергии. Они начинаются с силовых элементов большей емкости
 
=== Проводка ===
Убедитесь, что провода ведут от основной электросети к ЛКП в вашей зоне. Если для какого-либо оборудования в вашем новом районе требуется провод под ним, переместите его, подключив к основной электросети, и под оборудованием.
 
Провода также полезны при изготовлении электрических решеток (просто проведите провод под решеткой). Убедитесь, что провода касаются основной электросети (иначе они не будут бить людей током).
 
== Оборудование ==
 
=== Свет ===
Лампы потребляют много энергии, не используйте слишком много! Убедитесь, что вы установили ровно столько, чтобы комната была полностью освещена, но не настолько, чтобы оборудование погасло через десять минут после начала раунда.
 
=== Переключатель света ===
Для декоративного освещения или для того, чтобы показать, что комната в настоящее время не используется основным жильцом. Они отключают осветительное оборудование (и связанное с ним отключение электроэнергии) в помещении, но не настольные лампы. Разместите их на стенах, обычно возле двери.
 
=== Консоль запроса ===
Если определенная комната не нуждается в материалах или не производит материалы, не предоставляйте ей консоль запросов. Если она производит или потребляет, то, убедитесь, что у неё есть хотя бы одна консоль, где с ней смогут взаимодействовать.
 
=== Интеркомы ===
По крайней мере, в каждой комнате должен быть один. Для них должно быть установлено значение 145,9, динамик ВКЛ, микрофон ВЫКЛ. Это сделано для того, чтобы радиосигналы могли достигать людей даже без наушников. В большой комнате потребуется несколько штук одновременно.
 
=== Камеры ===
В большинстве областей их должно быть быть достаточно, чтобы увидеть общую территорию с монитора, который просматривается человеков, но не сгруппированы вместе ради ИИ. Для больших комнат может потребоваться больше одной.
 
== Структура комнат ==
 
=== Доступ ===
Доступ к дверям обрабатывается значениями req_access. При редактировании двери их четыре — req_access, req_access_txt, req_one_access и req_one_access_txt. Нас интересуют '''req_access_txt''' и '''req_one_access_txt''' .
[[null|слева|мини|300x300пкс]]
На этом изображении показана дверь шаттла прибытия — поскольку это общественная дверь, доступ установлен на «0», так как каждый должен иметь возможность ее открыть. Если мы посмотрим на входную дверь Брига, мы бы установили доступ на 63, потому что это значение для входных дверей службы безопасности - доступно только сотрудникам службы безопасности, но никому больше.
 
Множественный доступ к дверям обрабатывается путем добавления точки с запятой (без пробелов) между значениями доступа (например, «28;31» — для доступа на кухню и в грузовой отсек). Это может показаться бесполезным, но это полезно для небольших карт, где может потребоваться общий доступ.
 
Между ними есть важное различие, на которое вам нужно обратить внимание: req_access_txt требует '''ВСЕХ ПЕРЕЧИСЛЕННЫХ ДОСТУПОВ''' , чтобы открыть дверь, тогда как req_one_access_txt позволяет любому, у кого есть '''ОДИН ИЗ ПЕРЕЧЕННЫХ ДОСТУПОВ,''' открыть дверь. Например, скажем, вы хотите, чтобы ваш Бриг могли открыть детективы и сотрудники службы безопасности, мы бы поместили «63;4» в '''req_one_access_txt''' , потому что мы хотим, чтобы детектив '''И''' служба безопасности имели доступ. Если бы мы использовали req_access_txt, вам потребовались бы '''ОБА''' доступа, чтобы открыть дверь, то есть ни детектив, ни охрана не смогли бы ее открыть.
 
Вы можете просмотреть все значения доступа в файле code/game/jobs/access.dm. (Большинство из них должно быть самоочевидным или иметь метку, но если вы действительно не уверены, вы можете взглянуть на файл карты Boxstation и проверить значение на двери, которую вы ищете).
 
=== Безвоздушные полы ===
 
Идеально подходит для помещений или камер, в которых смешивается газ, а также для плитки, подвергающейся воздействию открытого пространства. Не идеально подходит для территорий, которые люди будут часто пересекать.
 
Используйте их на внешних плитках (чтобы предотвратить задержку при запуске игры) и камерах, требующих смешивания газов (камера/печь для смешивания токсинов). Дважды проверьте это, чтобы убедиться, что вы не задушите мобов в новых комнатах.
 
=== Пожарная сигнализация и противопожарные двери ===
Обязательно поместите их ВНУТРИ границы области, чтобы обеспечить блокировку. Любое место, которое в нормальных условиях нагревается, не должно иметь пожарной сигнализации рядом с источником тепла (камерой для смешивания токсинов). Убедитесь, что имеется полностью закрытая зона (за исключением технических дверей для людей, спасающихся от пожара), которую обычные гражданские лица не смогут открыть.
 
=== Слабые точки ===
Оцените, насколько высокий уровень безопасности будет в помещении: если он высокий, то укрепленные стены и электрифицированные решётки-окна могут быть в порядке. В зонах, которые не требуют особой безопасности, можно использовать простые стены и окна по вашему вкусу (хотя обычные стеклянные окна очень легко разбиваются). В каждой комнате должно быть одно место, которое слабее остальных (например, задняя дверь, боковой вход или окно), просто потому, что главный вход может выйти из строя (и, реально, в него могут проникнуть предатели).
 
=== Распределение предметов и оборудования ===
Будьте разумны в выборе того, что будет размещено в помещении, соблюдайте баланс между размером помещения и количеством оборудования. В больших помещениях может потребоваться несколько ЛКП, чтобы предотвратить отключения электроэнергии на ранних этапах игры. Во-вторых, обязательно разместите оборудование, подходящее для данной зоны (компьютер безопасности в зоне безопасности / поставщик медицинских услуг в медицинской зоне).
 
=== Неразрушимые турфы ===
Прежде чем завершить работу над картой, проверьте наличие неразрушимых турфов. Эти турфы игнорируют такие вещи, как внешние повреждения, и обычно предназначены для таких вещей, как специальные руины/комнаты, где вы хотите избежать людей, пытающихся обойти путь. Из-за этих характеристик им нет места на обычных картах станций, и они, вероятно, больше всего запутают игроков.
 
== Баланс ==
 
=== Предметы ===
Чем сложнее войти в комнату, тем больше вкусностей или чувствительного оборудования находится внутри. Обязательно имейте это в виду (и не создавайте пустую комнату, покрытую противовзрывными дверями, электрифицированными решетками, усиленными стенами и дверями капитанского уровня).
 
=== Охрана ===
Комната безопасна настолько, насколько она необходима. В общественных помещениях не должно быть большого количества функций безопасности (кроме пожарной сигнализации), но личное рабочее пространство должно быть более безопасным (в зависимости от должности). Барменам не нужны усиленные стены вокруг склада, а инженерам они нужны.
 
В помещениях с самым высоким уровнем безопасности должны применяться самые строгие меры безопасности. В комнатах с самым низким уровнем безопасности следует использовать самые дешевые меры безопасности.
 
== Step_x, step_y и синдром сломанного передвижения ==
 
Итак, вы скомпилировали карту, и вдруг при каждом перемещении вы больше не видите анимацию движения, а просто «появляетесь» на следующей плитке?
 
Поэтому некоторое время назад были введены Step_x и Step_y, позволяющие осуществлять перемещение на основе пикселей. SS13 это не использует. Step_x и Step_y — это переменные, которые есть у каждого атома. Они работают так: как только вы устанавливаете для любого объекта на карте одну из этих переменных, игра интерпретирует, что вы переопределили весь код движения по умолчанию и написали свой собственный, но вы этого не сделали (Код, который создает анимацию от плитки к плитке).
 
Чтобы решить эту проблему, вам нужно закрыть Dream Maker (сначала, очевидно, сохраните проект). Откройте файл карты (.dmm) в текстовом редакторе, например в блокноте или блокноте++. Найдите (ctrl+f) в файле Step_x и Step_y и удалите все ссылки на них. Как только в файле больше не будет найдено Step_x или Step_y -es, сохраните его и снова откройте в Dream Maker. Скомпилируйте код, и движение снова должно работать нормально.
 
==Шаттлы==
По сути, существует 3 типа шаттлов: стационарные, транзитные и мобильные.
 
* стационарный == места, где шаттл может причалить
* транзит == двигающийся шаттл
* мобильный == место с настоящим шаттлом
 
таким образом, у вас будет транзитный док в транзитной зоне и 2 стационарных дока, один в Центкомме, другой на станции, и 1 мобильный док в Центкомме для большинства шаттлов (кроме горнодобывающих)
 
Доки шаттла сгруппированы по идентификатору, например id = "cargo_away" id = "cargo_transit"
 
Вам необходимо добавить типы доков на карту и отредактировать ограничивающие рамки с помощью varediting дока. Вам необходимо как минимум отредактировать высоту, ширину, высоту и ширину. Они смещены по dir, так что имейте это в виду, например, если dir == 2, тогда ширина идет от ВОСТОКА к ЗАПАДУ, если dir == 4, то ширина идет от СЕВЕРА к ЮГУ, а ширина/высота смещены от нижнего левого угла. угол самолета переключился на локацию дока
 
Вы также должны убедиться, что направления обращены к шаттлу или от объекта, к которому пристыковывается шаттл.
 
Если направление мобильного стыковочного порта шаттла отличается от направления стационарного стыковочного порта, шаттл и все предметы на нем будут повернуты соответствующим образом. (Попробуйте, он работает практически для всего)
 
'''Предупреждение: ограничительная рамка мобильной дока должна помещаться внутри стационарной дока (после любого поворота).''' В противном случае шаттл откажется двигаться.
 
Если мобильный стыковочный порт шаттла находится в области, которая является подтипом /area/shuttle, перемещаются только газоны в ограничивающей рамке этой же области. В противном случае он перемещает все газоны в ограничивающей рамке. Это можно использовать для челноков необычной формы. (территория также будет передана)
 
Также обратите внимание, что аварийному шаттлу и грузовому шаттлу нужны специальные подтипы типа дока, например /obj/docking_port/mobile/emergency.
 
Другая переменная, на которую следует обратить внимание, — это traveldir, которая определяет, вращается ли шаттл при движении, это угол в градусах (просто представьте, что шаттл находится внутри круга. Например, если вы хотите, чтобы шаттл двигался справа налево, установите его на 270 градусов.
 
=== Более подробно про Dwidth и Dheight ===
dwidth/dheight — это смещение объекта docking_port от угла (0,0) ограничивающей рамки. В каталоге == 1 (север) 0,0 - это левый нижний угол? Это меняется для каждого направления. Например, если dir равен 2, это верхний правый угол. таким образом, ширина и высота определяют, где начинается ограничивающая рамка относительно объекта стыковочного порта, тогда как ширина и высота определяют фактическую ширину и высоту ограничивающей рамки.
 
'''Примечание. Мы считаем шаг 0 плиткой, поэтому высота и ширина 9 на самом деле равны 10 плиткам (от 0 до 9).'''
 
Вот пример направления причала шаттла, обращенного на север. Вы можете повернуть это изображение, чтобы определить, где находится смещение для каждого другого кардинального направления
 
==Другие файлы==
Если вы добавляете карту в игру, вам необходимо убедиться, что у нее есть файл JSON в разделе _maps и он включен в файл конфигурации карт.
 
== Полезные регулярные выражения ==
Все в блоках кода является регулярным выражением, большинство приличных текстовых редакторов могут использовать регулярное выражение в своих поисках.
 
Замените процедуру регулярного выражения <code>=></code> на следующую.
 
=== Надоедливые правки var для "something" повсюду на моей карте. ===
<tt>Замените something</tt> на var который должен быть удалён. Вам нужно запустить обе замены, чтобы отловить все случаи.
 
Для стандартного dmm формата:
* <code>\bsomething *= *.+?; *</code> => nothing
* <code>{\W*\bsomething *= *[^;]+?\W*}</code> => nothing
 
Для TGM формата:
* <code>^\W+\bsomething *= *.+?;\n</code> => nothing
* <code>{\W*\bsomething *= *[^;]+?\W*}</code> => nothing
 
 
== Множество Z-уровней ==
Множество Z-уровней — это функция, которая позволяет на карте станций иметь несколько Z-уровней, наложенных друг на друга, что ведет себя как одна станция с несколькими этажами. Несколько уровней станции могут быть объединены в один файл карты или в несколько отдельных файлов. Раздел характеристик json конфигурации карты сообщает SS13, как связать карты вместе.
 
* Если вы строите помещения станций на нижнем уровне Z, убедитесь, что этаж какого-либо типа нанесен на карту на уровне Z над комнатой. Вы можете проверить координаты в редакторе карт, чтобы убедиться, что пол соответствует правильным размерам комнаты. При запуске сервера в Dream Daemon для тестирования карты вы можете перейти на вкладку «Отладка» и нажать «Показать команды отладки», перейти на вкладку «Сопоставление» и нажать «Показать AT». Если список пуст, все в порядке.
 
* Более ранние версии multi-z не требовали определения baseturf для каждого свойства z-уровня в конфигурации json. На каждом уровне теперь должен быть набор базового газона.
 
* Загрузчик карт '''не будет''' загружать и связывать файл карты без определенных областей или газонов. Карта пустого пространства (ничего, кроме газона) будет работать во время выполнения. Если вы добавляете Z-уровень к существующей карте, имейте это в виду.
 
* SS13 будет кэшировать json-файл конфигурации карты в data\next_map.json. Если вы изменяете конфигурацию json карты локально, вам также необходимо очистить этот файл, используя команду изменения карты в игре, удалив файл или заменив его обновленным файлом json.
{{Руководства}}
[[Category:Руководства]]

Версия от 21:04, 16 февраля 2025

Страница-заготовка. Контент страницы находится в разработке и недоступен

Использовать данный контент нельзя
Подрядчик: Voiko

Руководство по созданию карт

В рядах Империи Celadon новое пополнение? Отлично! Представляю к вашему вниманию универсальный гайд для повышения квалификации!

Выбор программы

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

"StrongDMM" - это один исполняемый файл, не требующий установки.
  1. StrongDMM - это самый наилучший вариант из всех возможных. Программа имеет удобный интерфейс и также возможность работать с несколькими картами одновременно.
  2. Fastdmm2 - сайт, который позволяет редактировать карты без необходимости скачивания, есть возможность просто указать ссылку на GitHub. По большей части имеет не особо удобный интерфейс, данный вариант подойдёт больше для быстрого просмотра карт, чем для серьёзного маппинга.
  3. Dream Maker - самый худший выбор для маппинга, интерфейс неудобный, в добавок отсутствует возможность полноценно редактировать все типы кораблей/руин. Просто забудь об этом варианте, ладно? Выкинь его из головы.

В данном гайде мы будем ориентироваться на функционал программы "StrongDMM", однако перед этим нам потребуется загрузить сердце нашего проекта, определится с выбором билда и загрузить его.
Подразумевается, что вы уже ознакомлены с руководством по установке локального сервера и имеете на компьютере загруженный билд.
Важно! НЕЛЬЗЯ, ЧТОБЫ НА ПУТИ ПРОГРАММЫ БЫЛА КИРИЛИЦА.

Путеводитель по SDMM

Мы определились с программой и установили билд. Теперь смело открываем программу и первым делом нам требуется изменить Save Format на TGM, при работе с другим форматом вас будет ожидать целый легион ошибок, а нам это не нужно. Заходим во вкладку File => Preferences и меняем Save Format на TGM.



Далее нужно открыть рабочее пространство (environment), т.е. мы находим папку с нашим установленным билдом, открываем и выбираем главный файл с форматом .dme, название может отличаться в зависимости от билда.
К примеру "shiptest.dme" или "baystation12.dme". Внимание! Карты созданные с другими ресурсами билда, могут некорректно работать в другом билде из-за разных ресурсов!



Все изменения обязательно проводите в модульной папке - _maps/_mod_celadon! Всё остальное, что находится в папке _maps, отключено или может создать проблем.

После загрузки рабочего пространства будет возможность открыть любую из карт. Соответственно карты (_maps/_mod_celadon) отсортированы по папкам:

  1. _maps/_mod_celadon/configs - именно здесь происходит инициализация корабликов с помощью конфигов.
  2. _maps/_mod_celadon/map_files - главные карты (ЦК).
  3. _maps/_mod_celadon/outpost - различные карты аванпостов.
  4. _maps/_mod_celadon/RandomRuins - различные руины, они также рассортированы по типам планет.
  5. _maps/_mod_celadon/shuttles - космические корабли, внутри папки распределены по фракциям.
  6. _maps/_mod_celadon/templates - шаблоны.

Основное рабочее пространство состоит из нескольких окон:

  1. Режим курсора - именно здесь происходит инициализация корабликов с помощью конфигов.
  2. Область карты (синий фон - область за пределами карты).
  3. Все доступные в игре вещи, структуры и не только.
  4. Префабы - варианты одного и того же объекта с измененными параметрами.
  5. Поиск предметов по типу.
  6. Параметры объекта. Подробнее об этом будет ниже.



Все окна удобно настраиваются по вашему желанию.
Для этого нужно удерживая нужное окно подвигать его по экрану. Всё интуитивно понятно.



Скриншоты карт делаются самим StrongDMM:

  1. Открыть панель шестерни.
  2. Создать скриншот.
  3. Создать скриншот выбранной зоны.
  4. Сохранить скриншот в буфер обмена.

Хоткеи

  1. Передвигать карту на СКМ (нажатие колёсика), зум на колёсико.
  2. CTRL+1 - переключает слой зон.
  3. CTRL+2 - переключает слой покрытий (turf).
  4. CTRL+3 - переключает слой объектов.
  5. CTRL+4 - переключает слой мобов.
  6. Удерживание S + ЛКМ – пипетка.
  7. Удерживание D + ЛКМ - удалить подсвеченный красным объект.
  8. Удерживание R + ЛКМ - замена тайла выбранным объектом.
  9. CTRL + N - новое рабочее пространство(environment).
  10. CTRL + O - открыть карту.
  11. CTRL + Q - выход из программы.
  12. CTRL + Z - отменить последнее действие.
  13. CTRL + SHIFT + Z - вернуть последнее отмененное действие.
  14. CTRL + C - копирование; CTRL + V - вставить; CTRL + X - вырезать; DEL - очистить (как правило, речь идет о выбранной области через 3 режим, при этом, очищается области по периметру выделенной зеленым).
  15. CTRL + D - отменить выделение.
  16. CTRL + S - сохраняет карту.
  17. CTRL + F - открыть строку поиска объекта.
  18. F5 - обновить слой
  19. + - приблизить масштаб
  20. - - отдалить масштаб

Маппинг

A.T.O.M. - Area - Turf - Object - Mob
В маппинге, в основном мы рассматриваем 4 типа:

1. Зоны. Покрывают область и карты и говорят коду что это за территория и её свойства. От зоны работает вся электроника, зону запитывает АЦП и т.д. Свойства у зон бывают самые различные. От звуков и сообщений в чате до запрета телепортации.

2. Турфы. Пол и стены. Полы определяют какой в тайле будет газ, температура, скорость, гравитация, а стены понятно, надеюсь, что делают. Нельзя в один тайл (условная игровая клетка) поставить и пол и стену. Под стеной при разборе всегда будет базовый пол, если в коде не прописано иного.

3. Предметы . Всё, что не было указано ранее. В том числе, но не заканчивая ими: лендмарки (точки спавна), простые предметы (столы, стулья), декали (и прочий декор типо мелковых рисунков), рандом спавнеры, машинерия (от лампочки, до консолей и всех труб), провода, и прочее.

4. Мобы. Все НПС. С мобами можно по-разному играться задавая им скорость, здоровье, урон и лутдпроп (для продвинутых).

Список переменных

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

pix_x | pix_y - Задают смещение от центра тайла. Вся настенная машинерия ставится над/под/слева/справа от нужного расположения на стене и поднимается в нужную сторону на 28-32 пикселя. (1 тайл - 32х32 пикселя)

Наглядный пример направлений

dir - Направление. 2 - на игрока 1 - от игрока 4 - вправо 8 - влево. Если направлений больше, то и другие значения до 16.

anchored - Закрепление. Объект нельзя потянуть или сдвинуть если TRUE

Id и id_tag - Кнопочная машинерия. Для кнопки задается id, для объекта id tag определяет поведение для дверей(болты, открыть, доступ и т.д)
Если вам нужно, чтобы кнопка(id) открывала дверь/поддур и тд с 1 id_tag - прописывайте в id так “ВАШ ID_TAG”
Если Вам нужно, чтобы кнопка(id) открывала дверь/поддур и тд с множеством id_tag - прописывайте в id так list(“ID_TAG1”,”ID_TAG2”). Вписывать можно сколько вашей душе угодно, главное соблюдайте синтаксис.

req_access (list) - Проверка на доступ любая машинерия и двери. Таблица доступов есть в руководстве по маппингу. Несколько доступов пишутся через запятую без пробелов. Если вы хотите привязать мультидоступ, то прописывайте его через запятую, например: req_access = list(1,19,43)

Icon и icon_state - Первый указывает путь до дми файла с кучей иконок, второй указывает какая именно иконка из кучи в этом файле будет показываться.

Каждое новое помещение начинается с зоны

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

Зоны на станциях не должны повторяться. Дело в том, что зона не обязательно должна располагаться близко, чтобы передавать всю информацию внутри себя. Если разместить одну и ту же зону на разных концах карты, то пожарная сигнализация будет срабатывать в обоих, даже если вторая вообще не имеет атмосферы. Это работает даже на разных Z уровнях!

Помните, что настраивать и изменять свойства зоны необходимо исключительно в коде!

Подробнее про Variables

Область управления переменными

Данная область позволит вам творить самые настоящие тёмные колдунства при наличии хотя бы минимальных знаний понимания работы кода/переменных. Зона Variables состоит из двух вкладок: Instance и Prefab. Instance - Позволяет смотреть и менять параметры у одного объекта на карте. Prefab - Также позволяет проверять параметры, однако менять параметры будет у всех таких же объектов на карте. У вас также имеется возможность использовать некоторые параметры, чтобы показать только изменённые переменные.

  1. Ctrl+1 - Show modified only - Покажет только те переменные, что уже были изменены.
  2. Ctrl+2 - Show types - Покажет переменные не только объекта, но и также его родителей.
  3. Ctrl+3 - Show pins - Позволит закрепить необходимую переменную, чтобы не потерять её из виду. Она будет показываться в самом верху.
  4. Ctrl+4 - Show tmp, const, and static - Наши тёмные маги ещё не познали такую сильную магию. Об этом параметре особо ничего не известно.

Создание кораблей и руин

Все текущие корабли находятся в папке _maps/_mod_celadon/shuttles и имеют сортировку по фракциями, а также там имеется отдельная папка для субшаттлов - _maps/_mod_celadon/shuttles/subshuttles. В этих папках хранятся сами карты, однако инициализация кораблей происходит благодаря папке _maps/_mod_celadon/configs.

Конфиг корабля

В папке с конфигами вы можете ознакомиться со структурой и перенести её в ваш новый файл.
Вы также можете изучить саму структуру и пример конфигурационного файла.

Пройдёмся по переменным:

  1. map_name - Полное название корабля. Именно с таким названием игроки увидят ваш корабль в общем списке в лобби.
  2. map_short_name - Краткое название карты. Обозначает класс корабля. Будет отображаться в манифесте. Не может содержать пробелы. Кроме букв доступны только дефис и нижнее подчёркивание.
  3. description - Описание корабля. Будет отображаться при выборе корабля в лобби. Содержит в себе лор корабля.
  4. map_path - Путь к файлу карты корабля. Например: "_maps\shuttles\inteq\inteq_colossus.dmm"
  5. enabled - Если "true" - доступно для покупки игроками. Если "false" - только для щитспавна.
  6. limit - Допустимое количество для покупки корабля игроками.
  7. space_spawn - По умолчанию корабль спавнится на аванпосту. Если "true", то корабль заспавнится в космосе.
  8. prefix - Указывается префикс фракции. Доступные префиксы можно найти на этой странице.
  9. faction - Путь к датуму фракции. Доступные фракции находятся в этом файле: mod_celadon/faction/code/faction.dm, если нет необходимой - можно найти в другом файле: code/modules/faction/faction_datum.dm.
  10. tags - Указываются теги корабля. Их можно найти в этом файле: _maps/ship_tags_descriptions_guide.txt. На данный момент не используется. В будущем планируется использовать для сортировки кораблей.
  11. namelists - Указываются кодовые названия списков, из которых корабль будет генерировать название корабля при его создании. Ознакомиться с доступными списками и названиями можно в этом файле:strings/ship_names.json.
  12. job_slots - Состоит из 3 частей. Название (название профессии при заходе на корабль), outfit (путь к снаряжению в коде), slots (количество доступных профессий). Доступный список снаряжений можно найти по пути mod_celadon/outfit/code, они имеют примерно такую структуру: /datum/outfit/job/фракция/профессия.

Создание субшаттла

Пример датума субшаттла

Субшаттлы инициализируются не так, как обычные корабли, им не нужен конфиг. Они недоступны для покупки в общем списке лобби, но могут быть использованы в качестве дополнительного корабля внутри самого корабля или для отправки к примеру ЕРТ отряда с помощью администрации. Они создаются в отдельном файле: mod_celadon/maps/code/subshuttles.dm.

Путь к картам субкораблей: _maps/_mod_celadon/shuttles/subshuttles.

Создание руины

Руинки - это дополнительные локации, которые спавнятся на планетах. На одной планете может быть максимум одна руина.

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

Чтобы инициализировать руину вам потребуется закинуть карту в папку с руинами для необходимой планеты по пути: _maps/_mod_celadon/RandomRuins/.

Затем перейдите к файлу mod_celadon/maps/code/ruins/ruin.dm и пропишите датум, по примеру других руин в файле. Датум может иметь такие параметры:

  1. Datum - [Обязательно] /datum/map_template/ruin/Планета/Название
  2. name - [Обязательно] Полное название вашей руины
  3. id - [Обязательно] Уникальное и краткое название руины, без нижних подчёркиваний. Используется функционирования для чёрного листа.
  4. suffix - [Обязательно] Название вашего файла. Пример: anima_heirophant.dmm
  5. description - [Обязательно] Описание вашей руины, лёгкий лор. Используется для страницы с информацией о руинах (в разработке).
  6. cost - Влияет на вероятность спавна вашей руины. Чем выше стоимость, тем реже она может встретиться.
  7. allow_duplicates - Если значение "False", то на весь раунд сможет появится только одна руинка.
  8. ruin_tags - Используется для краткого описания руины. Теги можно найти здесь: code/__DEFINES/ruins.dm.
  9. never_spawn_with - Не заспавнит руинку, если уже имеется указанная руина из вашего списка.

После создания датума перейдите к текстовому файлу map_catalogue_key.txt по пути: _maps/_mod_celadon/map_catalogue.txt и оставьте запись о руинке с размерами, тегами и путями.

Важная дополнительная информация

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

[Wideband] На корабля обязательно должно присутствовать средство связи с другими кораблями.

Если вы хотите, чтобы ваша карта была добавлена на вебкарту, то нужно обращаться непосредственно к хосту Celadon`a - Voiko.

Максимальные размеры руин: 121x75. Максимальный размер корабля равен максимальному размеру ангара 56x40.

Список кодов доступа (access) к шлюзам и так далее находится в файле code/_DEFINES/access.dm.

При создании атмосферы на шипе не используйте стационарные танки с газами.

Проверка перед публикацией

  1. Полы с воздухом или без него, как и должно быть? (обычный или безвоздушный)
  2. [APC] - Есть ли в этой зоне ЛКП?
  3. [Air Alarm] - Есть ли в этой зоне воздушная сигнализация?
  4. [Outpost Communications Console] - Есть ли в этой зоне консоль запросов?
  5. [Light] - Есть ли на территории освещение?
  6. [Light Switch] - Есть ли в этом помещении выключатель света?
  7. [Intercom] - Достаточно ли в этом зоне интеркомов?
  8. [Camera] - Достаточно ли в этом зоне камер видеонаблюдения?
  9. [Vent Scrubber] - Подключена ли зона к вентиляционному очистителю?
  10. [Vent Pump] - Подключена ли зона к вентиляционному насосу?
  11. [Fire Alarm & Fire Doors] - Есть ли на территории пожарная сигнализация и противопожарные шлюзы?
  12. [Holopad] - Имеется ли голопад на вашем судне?
  13. Все ли подключено правильно?
  14. Все ли двери работают правильно?
  15. Правильно ли настроены доступы на дверях, кнопках и т. д.?
  16. Все ли предметы размещены правильно? (не ниже вентиляционных отверстий, скрубберов, столов)?
  17. Правильно ли работает система мусоропровода?
  18. Проверьте наличие неуместных или наложенных частей труб (воздушных и отводящих).
  19. Проверьте, нет ли неуместного или наложенного куска провода.
  20. Определите, насколько сложно проникнуть в эту область и где находятся слабые места, и соответствующим образом сбалансируйте область (например, Хранилище должно быть сделано из усиленных конструкций и электрифицированных окон, Кухня не должна быть сделана из этих материалов, а из обычных стен)
  21. Проверьте, не слишком ли много пустого пространства. Если да, уменьшите его и замените остальные туннелями для обслуживания.
  22. Есть ли нерушимые турфы там, где их не должно быть?