Открыть меню
Переключить меню настроек
Открыть персональное меню
Вы не представились системе
Ваш IP-адрес будет виден всем, если вы внесёте какие-либо изменения.
Страница-заготовка. Контент страницы находится в разработке и недоступен

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

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

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

Терминология

Перед процессом спрайтингом нам предстоит немного ознакомиться с основными терминами.

  1. Билд - папка, которую вы скачали с нашего репозитория, хранит в себе кодовую структуру и конечно же DMI файлики с нашими спрайтами.
  2. DMI (Атлас) - формат файла .dmi, также может называться как Атлас. Грубо говоря это файл, который имеет в себе спрайты от одного до целого множества. Обычно именно их вы встретите в билде.
  3. Спрайт - картинка, что находится в атласе.
  4. VSC (Visual Studio Code) - программа, в которой мы можем просматривать код и спрайты, а также делать изменения. (Для редактирования спрайтов программа не годится, только для просмотра).
  5. Dream Maker - стандартная программа, появляется при установке BYOND, через которую вы можете открыть атлас, импортировать или экспортировать файлы, а также редактировать сам спрайт. Будьте осторожны. При открытии спрайтов могут сгенерироваться изменения в коде, которые могут помешать запуску билда.

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

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

"Aseprite" - стандартная программа для редактирования DMI файлов.
  1. Aseprite - отличный выбор, используется очень часто. Вы можете получить его бесплатно, скомпилировав исходный код, или купить. Отдельно можно установить плагин для поддержки DMI.
  2. Piskel - бесплатный сайт, который позволяет редактировать спрайты без необходимости скачивания. Простенький интерфейс, с отсутствием поддержки DMI файлов/атласов.
  3. GIMP - бесплатный вариант, не особо модный, требует скачивания. Имеет интерфейс немного лучше, чем обычный Paint. Поддержка DMI отсутствует.
  4. Adobe Photoshop - платный вариант, но возможно для кого-то покажется удобным инструментом для редактирования PNG картинок. Поддержка DMI отсутствует.

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

Документация

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

  • Gas13 - Базовый гайд на русском языке, рекомендуется ознакомиться для начинающих спрайтеров.
  • Gamin.me - Pixel Art для начинающих, на русском.
  • Hackmd.oi/@Partheo - Очень хороший гайд на английском, в целом по сске.
  • Гайд по спрайтингу с Tau Ceti Station Wiki
  • Гайд по спрайтингу с TGStation13 Wiki
    • Хоткеи

        • ⁠В каждом цветовом поле, например, в основном, фоновом, а также в полях замены цвета (ctrl+r), можно щелкнуть и перетащить нужный цвет в любое место окна - интерфейс, изображение, изменяемое поле выбора цвета. • ⁠Основные сочетания клавиш, чтобы рука рисовала: b (карандаш), m (выделение), g (заливка), n (пипетка), e (ластик),… Не стесняйтесь пробовать новые клавиши. Ctrl+z работает очень хорошо. • ⁠Сочетания клавиш с CTRL+что-то, которые я использую чаще всего: c+v (копировать/вставить), r (заменить цвет), u (оттенок/насыщенность), a (выделить все), а еще есть одна для отображения/скрытия сетки. Очень удобно, но я переназначил ее, не знаю по умолчанию. • ⁠Сочетания клавиш с Shift+что-то: h (отразить по горизонтали), v (отразить по вертикали).
      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. - - отдалить масштаб

      Спрайты важны, понимаешь? Если бы у нас не было спрайтов, мы бы сделали действительно дерьмовую текстовую ролевую игру Roblox 2010. Или, может быть, одна из тех DOS-игр, но многопользовательская. Вы вообще видели эти темы о ролевых играх на форумах? Вот это оно и есть. Очень старое и грустное. Таким образом, спрайтеры являются важными художниками в игре. Они заставляют мапперов ставить стены и полы, а кодеров использовать модульную организацию, а картинки мы бессовестно крадем и помещаем в вики, хехехе. У них великая цель, и они также могут хорошо развлечься — вы когда-нибудь видели спрайты, которые они кидают в дискорд? Это круто. Это действительно ахуенно. Искусство сложно, и люди выходят за рамки этого, чтобы создавать офигенные спрайты. Это работа со страстью. Я не могу выразить словами, насколько важно создание спрайтов (да, это пишет и переводит вики-редактор, который по совместительству спрайтер xdd). Упрощенные визуальные эффекты очень необходимы в игре, и работа спрайтеров, проделанная для того, чтобы это произошло, заслуживает высокой оценки.

      О, вы искали настоящего гида. Извините. идите спрашивайте в #dev-спрайт дискорда.

      Основы

      Спрайты в SS13 хранятся в файлах dmi. По сути, это атлас-спрайтов в определенном формате. Вы помещаете в него PNG и даете ему имя — это состояние значка. Большинство dmis имеют размер 32x32. У вас может быть растровое изображение, представляющее собой статический спрайт, а гифки можно анимировать. BYOND также работает с 8 направлениями движения, но обычно вам понадобится только 4 или 1.

      ПО

      Aseprite используется очень часто. Вы можете получить его бесплатно, скомпилировав исходный код, или купить. Некоторые люди также используют Piskel. Вы также можете использовать другое программное обеспечение для обработки изображений, например Paint.net. От себя ещё могу порекомендовать бесплатный GIMP, или платный Adobe Photoshop, хотя ни в том ни в другом нет функции работы с DMI

      Обзор объекта

      В игре 4 типа объектов:

      • Область – нас это не будет интересовать, так как вы не увидите ее в игре и достаточно wip-графики,
      • Моб – люди, обезьяны, киборги, инопланетяне и другая живность на станции / кораблях / планетах,
      • Объекты – машины, двери, предметы и все остальное в игре,
      • Турф – стены, полы и пространство

      Формат файла DMI

      Спрайты в SS13 упакованы в файлы .dmi. Чтобы создать новый файл dmi, откройте Dream Maker, выберите «Файл» > «Новый» и выберите «Файл значка (dmi)» в раскрывающемся меню. Напишите для него путь к файлу и нажмите ОК.

      Откроется новое окно с пустым файлом. в правом верхнем углу есть два места для размеров спрайта. Большинство спрайтов имеют размер 32x32 пикселя. К сожалению, один dmi-файл не может содержать спрайты разных размеров.

      Теперь щелкните правой кнопкой мыши где-нибудь на белизне. Существует два типа спрайтов: растровое изображение и фильм. Растровое изображение статично, а фильм можно анимировать и смотреть в разных направлениях, вот и вся разница. Давайте создадим спрайт фильма. (Новый фильм)

      Откроется окно с четырьмя стрелками направления и тремя рамками для каждой из них, все серого цвета. Байонд понимает 8 направлений. Вы можете выбрать, сколько кадров вы хотите использовать, под самими спрайтами: 1, 4 или 8. Вы также можете выбрать, сколько кадров вы хотите иметь в анимации. Если вы создаете разнонаправленный статический спрайт, создайте фильм с 1 кадром, без анимации, но с 4 или 8 направлениями, в зависимости от того, сколько вам нужно. Если вы хотите анимировать спрайт, вас также может заинтересовать возможность установить задержку в 1/10 секунды над конкретным кадром. Хорошо, надеюсь, отсюда вы поймете, что делать. Встроенный инструмент редактирования спрайтов очень примитивен и единственное, о чем в нем стоит упомянуть, это о том, как применять альфа-фильтр. Если вы дважды щелкните любое изображение, вы попадете в редактор спрайтов, а справа от него находится вертикальный ползунок, управляющий альфа-каналом. Также стоит отметить, что копирование из редактора может вести себя немного странно, поскольку фон создается полностью, несмотря на установленный альфа-фильтр. Просто «залейте» фон цветом со значением альфа 0 или используйте «импорт», который отлично работает.

      Теперь предположим, что мы сделали ваши спрайты спрайтами, вернитесь к файлу dmi (экран, который появился, когда вы впервые создали файл). Предполагая, что вы создали спрайт, вы увидите его в списке. Дважды щелкните чуть ниже фактического спрайта, и откроется окно переименования. Альтернативно выберите спрайт и нажмите F2 на клавиатуре. Дайте имя вашему спрайту. Это имя часто называют icon_state, поскольку это имя переменной, которая определяет его в коде.

      Также обратите внимание, что вы можете импортировать и экспортировать файлы изображений разных типов, выбрав файлы, которые вы хотите экспортировать, в редакторе (удерживайте Ctrl, чтобы выбрать несколько), щелкнув правой кнопкой мыши и выбрав экспорт, или щелкнув правой кнопкой мыши в любом месте и выбрав импорт, чтобы импортировать. DMI похож на PNG, поэтому, если вы переименуете расширение DMI в PNG, оно должно работать во всех программах графического редактирования. Обычно это работает и в обратную сторону. Это ускоряет перекрашивание.

      Надеюсь, это вся информация, которая вам нужна для создания спрайтов и файлов dmi.

      Требуемые спрайты по категориям объектов

      Теперь расскажу вам, какие спрайты нужны различным типам предметов:

      Мобы

      • Спрайты мобов по большей части требуют четырех направлений.
      • Спрайты мобов требуют спрайтов мертвых мобов .
      • Если вы захотите, вы можете создать спрайт моба, который лежит.
      • Если вы создаете моба, который может носить одежду, вы можете использовать Pixel_y, Pixel_x для смены одежды при кодировании моба.

      Мобы с конечностями

      • Человек и человеческий вид состоят из конечностей – головы, груди, двух рук и двух ног.
      • Файлы находятся в icon/mob/human_parts.dmi для конечностей, имеющих заданный цвет, и в icon/mob/human_parts_greyscale.dmi для конечностей, которые можно перекрасить и начать использовать оттенки серого.
      • Конечности имеют 4 кадра, как и полноценные иконки.
      • Конечности также используются в качестве иконок предметов на случай расчленения.
      • Именование следующее:
        • [race]_l/r_arm/leg для рук и ног.
        • [race]_chest(_m/f) для торса (м/ж для мужских/женских вариантов, необязательно)
        • [race]_head(_m/f) для головы (м/ж для мужского/женского вариантов, необязательно)
      • Дополнительные части тела, такие как хвосты ящерицы, помещаются в mutant_bodyparts.dmi.

      Турфы

      • Полы находятся в файле icon/turf/floors.dmi.
      • Стены находятся в файле icon/turf/walls.dmi.
      • Стены и полы шаттла находятся в файле icon/turf/shuttle.dmi.
      • Космические плитки находятся в файле icon/turf/space.dmi.

      Объекты

      • Спрайты объектов находятся в папке icon/obj.
      • Спрайты предметов разбросаны по всей папке.
      • Спрайты предметов по большей части требуют наличия собственных спрайтов. Их можно найти в разделах icon/mob/items_lefthand.dmi и icon/mob/items_righthand.dmi.
      • Спрайты одежды находятся в папке icon/obj/clothing.
      • Спрайты одежды на мобах можно найти в папке icon/mob.
      • Спрайты одежды по большей части требуют спрайтов, находящихся в руках. Их можно найти в разделах icon/mob/items_lefthand.dmi и icon/mob/items_righthand.dmi.
      • Спрайты техники находятся в папке images/obj/machines. Хотя значительная их часть находится в папке icon/obj.
      • Спрайты дверей расположены в папке icon/obj/door.
      • Обычный спрайт двери требует Door_closed, Door_locked, Door_opening, Door_deny, Door_Closing, Door_open, Door_spark, o_door_opening, o_door_Closing, Panel_open, Welded и Elights. Предлагаю осмотреть door.dmi
      • Укреплённым дверям требуются только спрайты открытия и закрытия, а также спрайты, когда они открыты и закрыты.









      Маппинг

      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. Есть ли нерушимые турфы там, где их не должно быть?