SS14W:Файлы: различия между версиями

Материал из Space Station 14 Вики
 
(не показано 19 промежуточных версий 2 участников)
Строка 1: Строка 1:
== Спрайты ==
== Спрайты ==
Эта часть сугубо для файлов из репозитория.
Эта часть сугубо для файлов из репозитория.
Все файлы из репозитория следует загружать в формате png или apng. (Данные форматы взаимозаменяемы)
Все файлы из репозитория следует загружать в формате png или apng. (Данные форматы взаимозаменяемы)
===Инструменты===
 
=== Инструменты ===
Вы не станете мастером, если не будете иметь под рукой небольшой набор инструментов :Cat_nerd:, поэтому вот вам список всего, что мы сегодня будем использовать:
Вы не станете мастером, если не будете иметь под рукой небольшой набор инструментов :Cat_nerd:, поэтому вот вам список всего, что мы сегодня будем использовать:
*'''[https://github.com/space-syndicate/space-station-14/tree/master| Файлы игры ]''' - Источник всех спрайтов для ваших злодеяний. Все спрайты находятся в space-station-14/Resources/Textures  
* [https://github.com/space-syndicate/space-station-14/tree/master| Файлы игры ] — Источник всех спрайтов для ваших злодеяний. Все спрайты находятся в space-station-14/Resources/Textures
*'''[https://ezgif.com ezgif.com]''' - Крутой сайт, имеющий весь инструментарий для создания гифок и обрезки спрайтов (да-да, не удивляйтесь, скоро всё поймёте).
* [[:Шаблон:Entity Sprite/Image]] — база данных, для нахождения путей спрайтов всех вещей игры по их id или имени. Обновляется автоматически. Для составных спрайтов или apng, зачастую, также придётся искать yml сущности.
* [https://ezgif.com ezgif.com] — Крутой сайт, имеющий весь инструментарий для создания гифок и обрезки спрайтов (да-да, не удивляйтесь, скоро всё поймёте).
 
== Обработка материала ==


==Обработка материала==
=== Создание статичных спрайтов ===
===Создание статичных спрайтов===
 
====Создание сложного статичного спрайта====
==== Создание сложного статичного спрайта ====
Некоторые спрайты, хоть и являются статичными, но собираются из нескольких отдельных спрайтов. Примерами таких спрайтов являются: Ключи шифрования (на самом деле они состоят из спрайта "основы" разных цветов и значка отдела, который накладывается поверх спрайта "основы") или светящиеся палочки (у которых одна и та же "основа" сверху и снизу, но разный цвет у самой палочки).<br>
Некоторые спрайты, хоть и являются статичными, но собираются из нескольких отдельных спрайтов. Примерами таких спрайтов являются: Ключи шифрования (на самом деле они состоят из спрайта «основы» разных цветов и значка отдела, который накладывается поверх спрайта «основы») или светящиеся палочки (у которых одна и та же «основа» сверху и снизу, но разный цвет у самой палочки).<br>
#Найдите все нужные части сложного спрайта по папкам в Resources/Textures.
# Найдите все нужные части сложного спрайта по папкам в Resources/Textures.
#Откройте самый нижний слой спрайта вашим любимым редактор изображений с поддержкой нескольких слоёв.
# Откройте самый нижний слой спрайта вашим любимым редакторе изображений с поддержкой нескольких слоёв.
#Накиньте следующими слоями всё остальное. Если что-то выглядит не так, как должно - попробуйте поперемещать слои, возможно вы просто разместили их не в том порядке.
# Накиньте следующими слоями всё остальное. Если что-то выглядит не так, как должно — попробуйте поперемещать слои, возможно вы просто разместили их не в том порядке.
#Когда вы уверены что изображение выглядит так, как должно - сохраните его как новое изображение в удобном вам месте.
# Когда вы уверены что изображение выглядит так, как должно — сохраните его как новое изображение в удобном вам месте.
<br>'''НИКОГДА НЕ СОХРАНЯЙТЕ ИЗОБРАЖЕНИЕ ЧЕРЕЗ ОПЦИЮ "Сохранить", ТАК КАК ВЫ РИСКУЕТЕ ПОТЕРЯТЬ ВАШ ИЗНАЧАЛЬНЫЙ СПРАЙТ. ВСЕГДА ИСПОЛЬЗУЙТЕ ОПЦИЮ "Сохранить как..."''''
<br>'''НИКОГДА НЕ СОХРАНЯЙТЕ ИЗОБРАЖЕНИЕ ЧЕРЕЗ ОПЦИЮ «Сохранить», ТАК КАК ВЫ РИСКУЕТЕ ПОТЕРЯТЬ ВАШ ИЗНАЧАЛЬНЫЙ СПРАЙТ. ВСЕГДА ИСПОЛЬЗУЙТЕ ОПЦИЮ «Сохранить как…»''''
<hr>
----
===Создание анимированных спрайтов===
 
Все анимированные спрайты в игре хранятся в виде spritesheets - изображения, на котором все спрайты объекта (его повороты, анимации и прочее) склеены в одно большое изображение.
=== Создание анимированных спрайтов ===
====Разделение spritesheet на отдельные изображения====
Все анимированные спрайты в игре хранятся в виде spritesheets — изображения, на котором все спрайты объекта (его повороты, анимации и прочее) склеены в одно большое изображение.
#Откройте файл meta.json в .rsi папке с вашим спрайтом и найдите строчку "size". В этом параметре вы найдёте размеры спрайта по x и по y (чаще всего они равны и спрайт представлют из себя квадраты, но никогда нельзя быть уверенным в чём-то на 100%).
 
#Зайдите на сайт https://ezgif.com, после чего в разделе "split" выберите "Sprite sheet cutter".
==== Разделение spritesheet на отдельные изображения ====
#Загрузите ваш spritesheet на сайт
# Откройте файл meta.json в .rsi папке с вашим спрайтом и найдите строчку «size». В этом параметре вы найдёте размеры спрайта по x и по y (чаще всего они равны и спрайт представляют из себя квадраты, но никогда нельзя быть уверенным в чём-то на 100 %).
#Поставьте галочку напротив "By tile size" и в появившихся полях впишите размеры спрайта <nowiki>(помните, что width = ширина = x, а height = высота = y)</nowiki>. Формат изображений менять не рекомендуется во избежании шакалов
# Зайдите на сайт https://ezgif.com, после чего в разделе «split» выберите «Sprite sheet cutter».
#Нажмите кнопку "Cut!"
# Загрузите ваш spritesheet на сайт
# Поставьте галочку напротив «By tile size» и в появившихся полях впишите размеры спрайта <nowiki>(помните, что width = ширина = x, а height = высота = y)</nowiki>. Формат изображений менять не рекомендуется во артефактов
# Нажмите кнопку «Cut!»
<br>Вот и всё! Снизу у вас появились нужные вам кадры, которые вы можете скачать в виде zip-архива, или создать gif анимацию!
<br>Вот и всё! Снизу у вас появились нужные вам кадры, которые вы можете скачать в виде zip-архива, или создать gif анимацию!
<hr>
----
====Преобразование кадров в apng====
 
==== Преобразование кадров в apng ====
'''Если вы никуда не уходили с сайта с прошлого этапа и до сих пор находитесь на странице с вашими нарезанными кадрами:'''<br>
'''Если вы никуда не уходили с сайта с прошлого этапа и до сих пор находитесь на странице с вашими нарезанными кадрами:'''<br>
#Нажмите кнопку "Create APNG animation". Вас должно перевести на страницу создания анимации. Перед вами будут представлены все кадры, полученные в прошлом параграфе.
# Нажмите кнопку «Create APNG animation». Вы перейдёте на страницу создания анимации. Перед вами будут представлены все кадры, полученные в прошлом параграфе.
#Скорее всего в вашем спрайте есть много вариантов одного и того же существа (или предмета) под разные игровые ситуации, поэтому вам необходимо отключить ненужные кадры. Делается это во вкладке "Toggle a range of frames" чуть ниже полученных кадров. Вписываете номер начального и конечного кадров (включительно), с которыми вам нужно провести манипуляции и нажимаете "Skip" или "Enable", в зависимости от того, что вы хотите сделать. Эти кадры останутся здесь, но будут пропущены при создании анимации и вы их не увидите на апнг.
# Скорее всего в вашем спрайте есть много вариантов одного и того же существа (или предмета) под разные игровые ситуации, поэтому вам необходимо отключить ненужные кадры. Делается это во вкладке «Toggle a range of frames» чуть ниже полученных кадров. Вписываете номер начального и конечного кадров (включительно), с которыми вам нужно провести манипуляции и нажимаете «Skip» или «Enable», в зависимости от того, что вы хотите сделать. Эти кадры останутся здесь, но будут пропущены при создании анимации и вы их не увидите на апнг.
#В пункте "APNG options" вы можете настроить Delay <u>для каждого кадра в анимации</u>.  
# В пункте «APNG options» вы можете настроить Delay <u>для каждого кадра в анимации</u>.
#Нажимаем галочку "don't stack frames" (каждый новый кадр будет рисоваться чистым, без остатков предыдущих кадров) и затем нажимаем на кнопку "Make a APNG".
# Нажимаем галочку «don’t stack frames» (каждый новый кадр будет рисоваться чистым, без остатков предыдущих кадров) и затем нажимаем на кнопку «Make a APNG».
<br>'''НЕ ЗАБУДЬТЕ СКАЧАТЬ ВАШУ ПНГ С ПОМОЩЬЮ КНОПКИ save СНИЗУ.'''  
<br>'''НЕ ЗАБУДЬТЕ СКАЧАТЬ ВАШУ ПНГ С ПОМОЩЬЮ КНОПКИ save СНИЗУ.'''
<hr>
----
<br>'''Если вы скачали кадры архивом и ушли с сайта ИЛИ у вас уже есть готовый набор вырезанных кадров:'''
<br>'''Если вы скачали кадры архивом и ушли с сайта ИЛИ у вас уже есть готовый набор вырезанных кадров:'''
#Распаковывам архив с нашими кадрами, если вы этого ещё не сделали
# Распаковываем архив с нашими кадрами, если вы этого ещё не сделали
#На сайте выбираем раздел "APNG maker" и загружаем туда все нужные нам кадры
# На сайте выбираем раздел «APNG maker» и загружаем туда все нужные нам кадры
#В пункте "APNG options" вы можете настроить Delay <u>для каждого кадра в анимации</u>.
# В пункте «APNG options» вы можете настроить Delay <u>для каждого кадра в анимации</u>.
#Нажимаем галочку "don't stack frames" (каждый новый кадр будет рисоваться чистым, без остатков предыдущих кадров) и затем нажимаем на кнопку "Make a APNG".
# Нажимаем галочку «don’t stack frames» (каждый новый кадр будет рисоваться чистым, без остатков предыдущих кадров) и затем нажимаем на кнопку «Make a APNG».
<br>'''НЕ ЗАБУДЬТЕ СКАЧАТЬ ВАШУ ПНГ С ПОМОЩЬЮ КНОПКИ save СНИЗУ.'''  
<br>'''НЕ ЗАБУДЬТЕ СКАЧАТЬ ВАШУ ПНГ С ПОМОЩЬЮ КНОПКИ save СНИЗУ.'''
<hr>
----


====Наложение анимированной части спрайта на статичную====
==== Наложение анимированной части спрайта на статичную ====
Если вам нужно наложить что-то движущееся (например анимацию монитора консоли) на что-то статичное (например на пнг изображение консоли):
Если вам нужно наложить что-то движущееся (например анимацию монитора консоли) на что-то статичное (например на пнг изображение консоли):
#Вырезаем анимированную и статичную часть спрайта (или [[#Создание_сложного_статичного_спрайта|склеиваем]] составную статичную часть спрайта) по [[#Разделение_spritesheet_на_отдельные_изображения|инструкции]] и скачиваем полученные кадры в формате архива.
# Вырезаем анимированную и статичную часть спрайта (или [[#Создание сложного статичного спрайта|склеиваем]] составную статичную часть спрайта) по [[#Разделение spritesheet на отдельные изображения|инструкции]] и скачиваем полученные кадры в формате архива.
#Добавляем нашу статичную часть спрайта в папку с кадрами анимации, которая будет наложена поверх спрайта. Если в анимации есть лишние кадры (например спрайт для повёрнутой версии предмета, или для особого стейта) - удаляем их.
# Добавляем нашу статичную часть спрайта в папку с кадрами анимации, которая будет наложена поверх спрайта. Если в анимации есть лишние кадры (например спрайт для повёрнутой версии предмета, или для особого стейта) — удаляем их.
#Зайдите на сайт https://ezgif.com, и выбираем раздел "APNG maker". Загружаем туда все наши кадры и статичную часть спрайта, которую мы добавили в ту же папку ранее.
# Зайдите на сайт https://ezgif.com, и выбираем раздел «APNG maker». Загружаем туда все наши кадры и статичную часть спрайта, которую мы добавили в ту же папку ранее.
#В списке кадров наводимся на наш кадр со статичной частью анимации и перетаскиваем его перед всеми кадрами
# В списке кадров наводимся на наш кадр со статичной частью анимации и перетаскиваем в самое начало списка кадров
#В пункте "APNG options" вы можете настроить Delay <u>для каждого кадра в анимации</u>.  
# В пункте «APNG options» вы можете настроить Delay <u>для каждого кадра в анимации</u>.
#Нажимаем галочку "don't stack frames", галочку "use first frame as background" и галочку "0 delay for the first frame". Галочка "don't stack frames" означает что старые кадры будут очищаться с гифки при проигрывании и у нас не будет их "следов" (выглядит это конечно красиво, но нам это не нужно). Галочка "use first frame as background" заставит первый кадр во всей анимации стать фоном этой анимации (то есть все следующие кадры будут накладываться на него). Галочка "0 delay for the first frame" означает что наш "фон" никогда не появится отдельным от всех кадром, то есть он всегда будет показан фоном и не будет показан отдельным от остального кадром.
# Нажимаем галочку «don’t stack frames», галочку «use first frame as background» и галочку «0 delay for the first frame». Галочка «don’t stack frames» означает что старые кадры будут очищаться с гифки при проигрывании и у нас не будет их «следов» (выглядит это конечно красиво, но нам это не нужно). Галочка «use first frame as background» заставит первый кадр во всей анимации стать фоном этой анимации (то есть все следующие кадры будут накладываться на него). Галочка «0 delay for the first frame» означает что наш «фон» никогда не появится отдельным от всех кадром, то есть он всегда будет показан фоном и не будет показан отдельным от остального кадром.
#Нажимаем на кнопку "Make a APNG" и проверяем работоспособность гифки.
# Нажимаем на кнопку «Make a APNG» и проверяем работоспособность гифки.
<br>'''НЕ ЗАБУДЬТЕ СКАЧАТЬ ВАШУ ПНГ С ПОМОЩЬЮ КНОПКИ save СНИЗУ.'''
<br>'''НЕ ЗАБУДЬТЕ СКАЧАТЬ ВАШУ ПНГ С ПОМОЩЬЮ КНОПКИ save СНИЗУ.'''


=== Использование меты ===
=== Использование меты ===
Файлы meta.json, находятся в каждой папке со спрайтами и используется игрой для правильного проигрывания анимаций, соответственно может быть использован и нами для выставления времени кадров в анимированных картинках.
Файлы '''meta.json''', находятся в каждой папке со спрайтами и используется игрой для правильного проигрывания анимаций, соответственно может быть использован и нами для выставления времени кадров в анимированных картинках.
<br>Пример файла meta.json:
<br>Пример файла meta.json:
<div style=" text-align:left; box-shadow: 0 0 .3em #999; border-radius: .2em; margin: 1em 0 1em 0; padding: 1px; width: 300px; height: 640px ">
<syntaxhighlight lang="json">
   "version": 1,
   "version": 1,
   "license": "CC-BY-SA-3.0",
   "license": "CC-BY-SA-3.0",
Строка 83: Строка 91:
           0.2
           0.2
           ]
           ]
</div>
</syntaxhighlight>
В мете нас интересует 2 значения. Size — указывается 2 координатами по x и y и указывает размер спрайта (как нужно его нарезать).  
В мете нас интересует 2 значения. Size — указывается 2 координатами по x и y и указывает размер спрайта (как нужно его нарезать).
<br>Delays указывает длительность кадров анимации, 1.0 (в мете) = 1 секунда = 100 Delay (в ezgif).
<br>Delays указывает длительность кадров анимации, 1.0 (в мете) = 1 секунда = 100 Delay (в ezgif).


=== Использование прототипов ===
=== Использование прототипов ===
Прототипы (файлы с расширением .yml) содержат в себе информацию о свойствах предметов. В частности нас интересует информация о спрайте, последовательности слоёв, и их цветокоррекции.
Прототипы (файлы с расширением .yml) содержат в себе информацию о свойствах предметов. В частности нас интересует информация о спрайте, последовательности слоёв, и их цветокоррекции.
<div style=" text-align:left; box-shadow: 0 0 .3em #999; border-radius: .2em; margin: 1em 0 1em 0; padding: 1px; width: 1100px; height: 1160px ">
<syntaxhighlight lang="yaml">
  - type: entity
  - type: entity
   parent: BaseComputer
   parent: BaseComputer
Строка 100: Строка 108:
   - type: DeviceNetwork
   - type: DeviceNetwork
     deviceNetId: Wired
     deviceNetId: Wired
   <span  style="color: red">  - type: Sprite
   - type: Sprite
     layers:
     layers:
     - map: ["computerLayerBody"]
     - map: ["computerLayerBody"]
Строка 109: Строка 117:
       state: dna
       state: dna
     - map: ["computerLayerKeys"]
     - map: ["computerLayerKeys"]
       state: generic_keys</span >
       state: generic_keys
  - type: ApcPowerReceiver
...
    powerLoad: 3100 #We want this to fail first so I transferred most of the scanner and pod's power here. (3500 in total)
</syntaxhighlight>
  - type: Computer
Нужны нам параметры компонента <code>- type: Sprite</code>. Для правильной сборки надо просто соединить указанные спрайты последовательно.
    board: CloningConsoleComputerCircuitboard
  - type: PointLight
    radius: 1.5
    energy: 1.6
    color: "#1f8c28"
  - type: DeviceLinkSource
    range: 4
    ports:
      - MedicalScannerSender
      - CloningPodSender
  - type: ActivatableUI
    key: enum.CloningConsoleUiKey.Key
  - type: UserInterface
    interfaces:
        enum.CloningConsoleUiKey.Key:
          type: CloningConsoleBoundUserInterface
  - type: Speech
    speechVerb: Robotic
    speechSounds: Pai
  - type: Damageable
    damageContainer: Inorganic
    damageModifierSet: StrongMetallic
  - type: GuideHelp
    guides:
    - Cloning
</div>
Красным цветом выделена часть описывающая последовательность слоёв. Для правильной сборки надо просто соединить указанные спрайты последовательно.


== Наименование файлов ==
== Наименование файлов ==
Все файлы следует называть в соответствии с данным шаблоном:
Все файлы следует называть в соответствии с данным шаблоном:
<div style=" text-align:center; box-shadow: 0 0 .3em #999; border-radius: .2em; margin: 1em 0 1em 0; padding: 1px; width: 200px; height: 25px ">Название.формат</div>
<code>Название.формат</code><br>
<br>Пример:
Пример:
<div style=" text-align:center; box-shadow: 0 0 .3em #999; border-radius: .2em; margin: 1em 0 1em 0; padding: 1px; width: 200px; height: 25px ">Файл.png</div>
<pre style="width:200px;">Файл.png</pre>


=== Файлы репозитория ===
=== Файлы репозитория ===
Файлам из репозитория игры следует давать названия согласно их ID в игре. Не следует как либо изменять название во избежание поломок ботов работающих ID.
Файлам из репозитория игры следует давать названия согласно их ID в игре. Не следует как либо изменять название во избежание поломок ботов работающих ID.
ID можно найти в самом репозитории.
ID можно найти в самом репозитории.<br>
Пример:
Пример:
<div style=" text-align:center; box-shadow: 0 0 .3em #999; border-radius: .2em; margin: 1em 0 1em 0; padding: 1px; width: 200px; height: 25px ">HydroponicsTray.png</div>
<pre style="width:200px;">HydroponicsTray.png</pre>
В случае нескольких предметов с одинаковыми ID, следует добавлять к названию указание состояния или цифру
 
<br>Примеры:
В случае нескольких состояний предмета с одинаковыми ID, следует добавлять к названию указание состояния разделённым дефисом.<br>
<div style=" text-align:center; box-shadow: 0 0 .3em #999; border-radius: .2em; margin: 1em 0 1em 0; padding: 1px; width: 200px; height: 25px ">HydroponicsTray1.png</div>
Примеры:
<div style=" text-align:center; box-shadow: 0 0 .3em #999; border-radius: .2em; margin: 1em 0 1em 0; padding: 1px; width: 200px; height: 25px ">HydroponicsTray2.png</div>
<pre style="width:200px;">HydroponicsTray-alert3.png</pre>
<pre style="width:200px;">HydroponicsTray-harvest3.png</pre>
 
В том случае если ID предмета не существует в игре, следует давать название по папке и файлу спрайта в репозитории следующим образом.
В том случае если ID предмета не существует в игре, следует давать название по папке и файлу спрайта в репозитории следующим образом.
<div style=" text-align:center; box-shadow: 0 0 .3em #999; border-radius: .2em; margin: 1em 0 1em 0; padding: 1px; width: 200px; height: 25px ">Папка-файл.png</div>
<pre style="width:200px;">Папка-файл.png</pre>
<br>Пример:
Пример:
<div style=" text-align:center; box-shadow: 0 0 .3em #999; border-radius: .2em; margin: 1em 0 1em 0; padding: 1px; width: 200px; height: 25px ">Onion-harvest.png</div>
<pre style="width:200px;">Onion-harvest.png</pre>


=== Файлы не из репозитория ===
=== Файлы не из репозитория ===
В случае файлов не из репозитория, следует давать названия на русском языке. Для разделения слов следует использовать тире.
В случае файлов не из репозитория, следует давать названия на русском языке. Для разделения слов следует использовать пробел.
<br>Пример:
<br>Пример:
<div style=" text-align:center; box-shadow: 0 0 .3em #999; border-radius: .2em; margin: 1em 0 1em 0; padding: 1px; width: 200px; height: 25px ">Конструкция.png</div>
<pre style="width:200px;">Конструкция.png</pre>


== Шаблон файл ==
== Шаблон файл ==
См. документацию [[:Шаблон:Файл]].
Шаблон файл является обязательным к заполнению для всех файлов загружающихся на Вики.
Шаблон файл является обязательным к заполнению для всех файлов загружающихся на Вики.
<pre>{{Файл
|Описание = <!--Название изображения здесь-->
|Id      = <!--Id из кода игры-->
|Проект  = <!--Смотрим Шаблон:abb-->
|Источник = <!--Ссылка на источник, если указан путь, заполняется автоматически-->
|Путь    = <!--Путь к файлу, начиная с Resources, обязательно для спрайтов из репозитория-->
|Теги    = <!--Только для файлов не из репозитория (скриншот, иконка, рендер, лор)-->
}}</pre>


=== Лицензии ===
=== Пример использования ===
Лицензии также является обязательным пунктом в статье файла.
На основе [[:Файл:CableApcStack.png]].
Обычно используются следующие лицензии
{{начало цитаты}}
<pre>{{CC-BY-SA-3.0}} - Для файлов из репозитория игры</pre>
<pre>
<pre>{{CC BY-NC-SA 4.0}} - Для скриншотов</pre>
== Краткое описание ==
<pre>{{NoLicense}} - Для файлов с неизвестным источником</pre>
{{Файл
|Описание =
|Id      = KitchenKnife
|Источник =
|Путь    =
}}
 
== Лицензирование ==
{{CC-BY-SA-3.0}}
</pre>
{{оригинальный текст||
== Краткое описание ==
{{Файл
|Описание =
|Id      = KitchenKnife
|Источник =
|Путь    =
}}
 
== Лицензирование ==
{{CC-BY-SA-3.0}}
 
}}
{{конец цитаты}}
 
== Лицензии ==
Самые частые лицензии, с которыми будет сталкиваться редактор при загрузке файлов:
 
{{pre|{{шс|CC-BY-SA-3.0}} — для большинства файлов из репозитория игры.
Пример: [[:Файл:MopItem.png]]}}
 
{{pre|{{шс|CC-BY-SA-4.0}} — для скриншотов игры.
Пример: [[:Файл:Kitchen.png]]}}
 
{{pre|{{шс|CC-BY-NC-SA-4.0}} — основная лицензия нашей Вики. Применяется для изображений, не защищённых авторским правом, или по желанию автора собственного произведения.
Пример:
[[:Файл:12.png]] (не обладает авторским правом)
[[:Файл:Logo-NEW.png]] (контент нашего проекта)
}}
 
{{pre|{{шс|добросовестное использование}} — для изображений или скриншотов произведений, защищённых авторским правом.
Пример: [[:Файл:Lizzard lore 3.gif]]}}
 
{{pre|{{шс|несвободная лицензия}} — для работ, созданных для нашей Вики, авторы которых не хотят распространять их на условиях свободной лицензии или пока не указали её.
Пример: [[:Файл:DarkCentcom dep.png]]}}
 
{{pre|{{tls|No license}} — лицензия по умолчанию при загрузке файлов. Является заглушкой, указывающей на необходимость выбрать другую лицензию, иначе файл может быть удалён.
Категория для отслеживания: [[:Категория:SS14W:Просроченные подведения итогов по уточнению лицензионных статусов файлов|просроченные подведения итогов по уточнению лицензионных статусов файлов]]}}
 
Все остальные лицензии находятся здесь — [[:Категория:Шаблоны:Лицензии файлов]]. Они могут пригодиться при портировании произведений, имеющих одну из этих лицензий.
 
Категории для отслеживания файлов с лицензиями — [[:Категория:Файлы:Классификация по лицензиям]].
 
== Стандартизация файлов ==
В этом разделе будут описаны несколько правил которые желательно соблюдать.
* При загрузке спрайтов персонажей стоит указывать в графе «|Источник =» имя и должность персонажа и ник игрока в графе «|Автор =».<ref>Если картинка отображает персонажа определённого игрока</ref>
* Не рекомендуется изменять спрайты персонажей закреплённые за игроками, без согласия человека загрузившего оригинального спрайта или куратора вики.
* Спрайты предметов имеющие много сменяющихся состояний следует загружать с интервалом в 1 секунду на состояние.
* Спрайты мобов имеющие состояние вращения стоит загружать с вращением против часовой стрелки и с интервалом в 1 секунду на каждый поворот.

Текущая версия от 13:11, 11 ноября 2025

Спрайты

Эта часть сугубо для файлов из репозитория. Все файлы из репозитория следует загружать в формате png или apng. (Данные форматы взаимозаменяемы)

Инструменты

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

  • Файлы игры  — Источник всех спрайтов для ваших злодеяний. Все спрайты находятся в space-station-14/Resources/Textures
  • Шаблон:Entity Sprite/Image — база данных, для нахождения путей спрайтов всех вещей игры по их id или имени. Обновляется автоматически. Для составных спрайтов или apng, зачастую, также придётся искать yml сущности.
  • ezgif.com — Крутой сайт, имеющий весь инструментарий для создания гифок и обрезки спрайтов (да-да, не удивляйтесь, скоро всё поймёте).

Обработка материала

Создание статичных спрайтов

Создание сложного статичного спрайта

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

  1. Найдите все нужные части сложного спрайта по папкам в Resources/Textures.
  2. Откройте самый нижний слой спрайта вашим любимым редакторе изображений с поддержкой нескольких слоёв.
  3. Накиньте следующими слоями всё остальное. Если что-то выглядит не так, как должно — попробуйте поперемещать слои, возможно вы просто разместили их не в том порядке.
  4. Когда вы уверены что изображение выглядит так, как должно — сохраните его как новое изображение в удобном вам месте.


НИКОГДА НЕ СОХРАНЯЙТЕ ИЗОБРАЖЕНИЕ ЧЕРЕЗ ОПЦИЮ «Сохранить», ТАК КАК ВЫ РИСКУЕТЕ ПОТЕРЯТЬ ВАШ ИЗНАЧАЛЬНЫЙ СПРАЙТ. ВСЕГДА ИСПОЛЬЗУЙТЕ ОПЦИЮ «Сохранить как…»'


Создание анимированных спрайтов

Все анимированные спрайты в игре хранятся в виде spritesheets — изображения, на котором все спрайты объекта (его повороты, анимации и прочее) склеены в одно большое изображение.

Разделение spritesheet на отдельные изображения

  1. Откройте файл meta.json в .rsi папке с вашим спрайтом и найдите строчку «size». В этом параметре вы найдёте размеры спрайта по x и по y (чаще всего они равны и спрайт представляют из себя квадраты, но никогда нельзя быть уверенным в чём-то на 100 %).
  2. Зайдите на сайт https://ezgif.com, после чего в разделе «split» выберите «Sprite sheet cutter».
  3. Загрузите ваш spritesheet на сайт
  4. Поставьте галочку напротив «By tile size» и в появившихся полях впишите размеры спрайта (помните, что width = ширина = x, а height = высота = y). Формат изображений менять не рекомендуется во артефактов
  5. Нажмите кнопку «Cut!»


Вот и всё! Снизу у вас появились нужные вам кадры, которые вы можете скачать в виде zip-архива, или создать gif анимацию!


Преобразование кадров в apng

Если вы никуда не уходили с сайта с прошлого этапа и до сих пор находитесь на странице с вашими нарезанными кадрами:

  1. Нажмите кнопку «Create APNG animation». Вы перейдёте на страницу создания анимации. Перед вами будут представлены все кадры, полученные в прошлом параграфе.
  2. Скорее всего в вашем спрайте есть много вариантов одного и того же существа (или предмета) под разные игровые ситуации, поэтому вам необходимо отключить ненужные кадры. Делается это во вкладке «Toggle a range of frames» чуть ниже полученных кадров. Вписываете номер начального и конечного кадров (включительно), с которыми вам нужно провести манипуляции и нажимаете «Skip» или «Enable», в зависимости от того, что вы хотите сделать. Эти кадры останутся здесь, но будут пропущены при создании анимации и вы их не увидите на апнг.
  3. В пункте «APNG options» вы можете настроить Delay для каждого кадра в анимации.
  4. Нажимаем галочку «don’t stack frames» (каждый новый кадр будет рисоваться чистым, без остатков предыдущих кадров) и затем нажимаем на кнопку «Make a APNG».


НЕ ЗАБУДЬТЕ СКАЧАТЬ ВАШУ ПНГ С ПОМОЩЬЮ КНОПКИ save СНИЗУ.



Если вы скачали кадры архивом и ушли с сайта ИЛИ у вас уже есть готовый набор вырезанных кадров:

  1. Распаковываем архив с нашими кадрами, если вы этого ещё не сделали
  2. На сайте выбираем раздел «APNG maker» и загружаем туда все нужные нам кадры
  3. В пункте «APNG options» вы можете настроить Delay для каждого кадра в анимации.
  4. Нажимаем галочку «don’t stack frames» (каждый новый кадр будет рисоваться чистым, без остатков предыдущих кадров) и затем нажимаем на кнопку «Make a APNG».


НЕ ЗАБУДЬТЕ СКАЧАТЬ ВАШУ ПНГ С ПОМОЩЬЮ КНОПКИ save СНИЗУ.


Наложение анимированной части спрайта на статичную

Если вам нужно наложить что-то движущееся (например анимацию монитора консоли) на что-то статичное (например на пнг изображение консоли):

  1. Вырезаем анимированную и статичную часть спрайта (или склеиваем составную статичную часть спрайта) по инструкции и скачиваем полученные кадры в формате архива.
  2. Добавляем нашу статичную часть спрайта в папку с кадрами анимации, которая будет наложена поверх спрайта. Если в анимации есть лишние кадры (например спрайт для повёрнутой версии предмета, или для особого стейта) — удаляем их.
  3. Зайдите на сайт https://ezgif.com, и выбираем раздел «APNG maker». Загружаем туда все наши кадры и статичную часть спрайта, которую мы добавили в ту же папку ранее.
  4. В списке кадров наводимся на наш кадр со статичной частью анимации и перетаскиваем в самое начало списка кадров
  5. В пункте «APNG options» вы можете настроить Delay для каждого кадра в анимации.
  6. Нажимаем галочку «don’t stack frames», галочку «use first frame as background» и галочку «0 delay for the first frame». Галочка «don’t stack frames» означает что старые кадры будут очищаться с гифки при проигрывании и у нас не будет их «следов» (выглядит это конечно красиво, но нам это не нужно). Галочка «use first frame as background» заставит первый кадр во всей анимации стать фоном этой анимации (то есть все следующие кадры будут накладываться на него). Галочка «0 delay for the first frame» означает что наш «фон» никогда не появится отдельным от всех кадром, то есть он всегда будет показан фоном и не будет показан отдельным от остального кадром.
  7. Нажимаем на кнопку «Make a APNG» и проверяем работоспособность гифки.


НЕ ЗАБУДЬТЕ СКАЧАТЬ ВАШУ ПНГ С ПОМОЩЬЮ КНОПКИ save СНИЗУ.

Использование меты

Файлы meta.json, находятся в каждой папке со спрайтами и используется игрой для правильного проигрывания анимаций, соответственно может быть использован и нами для выставления времени кадров в анимированных картинках.
Пример файла meta.json:

  "version": 1,
  "license": "CC-BY-SA-3.0",
  "size": {
    "x": 32,
    "y": 32
  },
  "states": [
    {
      "name": "icon",
      "delays": [
        [
          0.2,
          0.2,
          0.2
        ]
      ]
    },
    {
      "name": "icon_blue",
      "delays": [
        [
          0.2,
          0.2,
          0.2
          ]

В мете нас интересует 2 значения. Size — указывается 2 координатами по x и y и указывает размер спрайта (как нужно его нарезать).
Delays указывает длительность кадров анимации, 1.0 (в мете) = 1 секунда = 100 Delay (в ezgif).

Использование прототипов

Прототипы (файлы с расширением .yml) содержат в себе информацию о свойствах предметов. В частности нас интересует информация о спрайте, последовательности слоёв, и их цветокоррекции.

 - type: entity
  parent: BaseComputer
  id: ComputerCloningConsole
  name: cloning console computer
  description: The centerpiece of the cloning system, medicine's greatest accomplishment. It has lots of ports and wires.
  components:
  - type: CloningConsole
  - type: DeviceList
  - type: DeviceNetwork
    deviceNetId: Wired
  - type: Sprite
    layers:
    - map: ["computerLayerBody"]
      state: computer
    - map: ["computerLayerKeyboard"]
      state: generic_keyboard
    - map: ["computerLayerScreen"]
      state: dna
    - map: ["computerLayerKeys"]
      state: generic_keys
...

Нужны нам параметры компонента - type: Sprite. Для правильной сборки надо просто соединить указанные спрайты последовательно.

Наименование файлов

Все файлы следует называть в соответствии с данным шаблоном: Название.формат
Пример:

Файл.png

Файлы репозитория

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

HydroponicsTray.png

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

HydroponicsTray-alert3.png
HydroponicsTray-harvest3.png

В том случае если ID предмета не существует в игре, следует давать название по папке и файлу спрайта в репозитории следующим образом.

Папка-файл.png

Пример:

Onion-harvest.png

Файлы не из репозитория

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

Конструкция.png

Шаблон файл

См. документацию Шаблон:Файл. Шаблон файл является обязательным к заполнению для всех файлов загружающихся на Вики.

Пример использования

На основе Файл:CableApcStack.png.

== Краткое описание ==
{{Файл
|Описание = 
|Id       = KitchenKnife
|Источник = 
|Путь     = 
}}

== Лицензирование ==
{{CC-BY-SA-3.0}}

Лицензии

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

{{CC-BY-SA-3.0}} — для большинства файлов из репозитория игры.
Пример: Файл:MopItem.png
{{CC-BY-SA-4.0}} — для скриншотов игры.
Пример: Файл:Kitchen.png
{{CC-BY-NC-SA-4.0}} — основная лицензия нашей Вики. Применяется для изображений, не защищённых авторским правом, или по желанию автора собственного произведения.
Пример: 
Файл:12.png (не обладает авторским правом)
Файл:Logo-NEW.png (контент нашего проекта)
{{добросовестное использование}} — для изображений или скриншотов произведений, защищённых авторским правом.
Пример: Файл:Lizzard lore 3.gif
{{несвободная лицензия}} — для работ, созданных для нашей Вики, авторы которых не хотят распространять их на условиях свободной лицензии или пока не указали её.
Пример: Файл:DarkCentcom dep.png
{{subst:No license}} — лицензия по умолчанию при загрузке файлов. Является заглушкой, указывающей на необходимость выбрать другую лицензию, иначе файл может быть удалён.
Категория для отслеживания: просроченные подведения итогов по уточнению лицензионных статусов файлов

Все остальные лицензии находятся здесь — Категория:Шаблоны:Лицензии файлов. Они могут пригодиться при портировании произведений, имеющих одну из этих лицензий.

Категории для отслеживания файлов с лицензиями — Категория:Файлы:Классификация по лицензиям.

Стандартизация файлов

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

  • При загрузке спрайтов персонажей стоит указывать в графе «|Источник =» имя и должность персонажа и ник игрока в графе «|Автор =».[1]
  • Не рекомендуется изменять спрайты персонажей закреплённые за игроками, без согласия человека загрузившего оригинального спрайта или куратора вики.
  • Спрайты предметов имеющие много сменяющихся состояний следует загружать с интервалом в 1 секунду на состояние.
  • Спрайты мобов имеющие состояние вращения стоит загружать с вращением против часовой стрелки и с интервалом в 1 секунду на каждый поворот.
  1. Если картинка отображает персонажа определённого игрока