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

м Pok переименовал страницу SS14:Файлы в SS14W:Файлы
Нет описания правки
Строка 11: Строка 11:
Вы не станете мастером, если не будете иметь под рукой небольшой набор инструментов :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
* [[:Шаблон:Entity Sprite/Image]] — база данных, для нахождения путей спрайтов всех вещей игры по их id или имени. Обновляется автоматически. Для составных спрайтов или apng, зачастую, также придётся искать yml сущности.
* '''[https://ezgif.com ezgif.com]''' — Крутой сайт, имеющий весь инструментарий для создания гифок и обрезки спрайтов (да-да, не удивляйтесь, скоро всё поймёте).
* '''[https://ezgif.com ezgif.com]''' — Крутой сайт, имеющий весь инструментарий для создания гифок и обрезки спрайтов (да-да, не удивляйтесь, скоро всё поймёте).


Строка 20: Строка 21:
Некоторые спрайты, хоть и являются статичными, но собираются из нескольких отдельных спрайтов. Примерами таких спрайтов являются: Ключи шифрования (на самом деле они состоят из спрайта «основы» разных цветов и значка отдела, который накладывается поверх спрайта «основы») или светящиеся палочки (у которых одна и та же «основа» сверху и снизу, но разный цвет у самой палочки).<br>
Некоторые спрайты, хоть и являются статичными, но собираются из нескольких отдельных спрайтов. Примерами таких спрайтов являются: Ключи шифрования (на самом деле они состоят из спрайта «основы» разных цветов и значка отдела, который накладывается поверх спрайта «основы») или светящиеся палочки (у которых одна и та же «основа» сверху и снизу, но разный цвет у самой палочки).<br>
# Найдите все нужные части сложного спрайта по папкам в Resources/Textures.
# Найдите все нужные части сложного спрайта по папкам в Resources/Textures.
# Откройте самый нижний слой спрайта вашим любимым редактор изображений с поддержкой нескольких слоёв.
# Откройте самый нижний слой спрайта вашим любимым редакторе изображений с поддержкой нескольких слоёв.
# Накиньте следующими слоями всё остальное. Если что-то выглядит не так, как должно — попробуйте поперемещать слои, возможно вы просто разместили их не в том порядке.
# Накиньте следующими слоями всё остальное. Если что-то выглядит не так, как должно — попробуйте поперемещать слои, возможно вы просто разместили их не в том порядке.
# Когда вы уверены что изображение выглядит так, как должно — сохраните его как новое изображение в удобном вам месте.
# Когда вы уверены что изображение выглядит так, как должно — сохраните его как новое изображение в удобном вам месте.
Строка 30: Строка 31:


==== Разделение spritesheet на отдельные изображения ====
==== Разделение spritesheet на отдельные изображения ====
# Откройте файл meta.json в .rsi папке с вашим спрайтом и найдите строчку «size». В этом параметре вы найдёте размеры спрайта по x и по y (чаще всего они равны и спрайт представлют из себя квадраты, но никогда нельзя быть уверенным в чём-то на 100 %).
# Откройте файл meta.json в .rsi папке с вашим спрайтом и найдите строчку «size». В этом параметре вы найдёте размеры спрайта по x и по y (чаще всего они равны и спрайт представляют из себя квадраты, но никогда нельзя быть уверенным в чём-то на 100 %).
# Зайдите на сайт https://ezgif.com, после чего в разделе «split» выберите «Sprite sheet cutter».
# Зайдите на сайт https://ezgif.com, после чего в разделе «split» выберите «Sprite sheet cutter».
# Загрузите ваш spritesheet на сайт
# Загрузите ваш spritesheet на сайт
# Поставьте галочку напротив «By tile size» и в появившихся полях впишите размеры спрайта <nowiki>(помните, что width = ширина = x, а height = высота = y)</nowiki>. Формат изображений менять не рекомендуется во избежании шакалов
# Поставьте галочку напротив «By tile size» и в появившихся полях впишите размеры спрайта <nowiki>(помните, что width = ширина = x, а height = высота = y)</nowiki>. Формат изображений менять не рекомендуется во артефактов
# Нажмите кнопку «Cut!»
# Нажмите кнопку «Cut!»
<br>Вот и всё! Снизу у вас появились нужные вам кадры, которые вы можете скачать в виде zip-архива, или создать gif анимацию!
<br>Вот и всё! Снизу у вас появились нужные вам кадры, которые вы можете скачать в виде zip-архива, или создать gif анимацию!
Строка 40: Строка 41:
==== Преобразование кадров в 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>.
Строка 47: Строка 48:
----
----
<br>'''Если вы скачали кадры архивом и ушли с сайта ИЛИ у вас уже есть готовый набор вырезанных кадров:'''
<br>'''Если вы скачали кадры архивом и ушли с сайта ИЛИ у вас уже есть готовый набор вырезанных кадров:'''
# Распаковывам архив с нашими кадрами, если вы этого ещё не сделали
# Распаковываем архив с нашими кадрами, если вы этого ещё не сделали
# На сайте выбираем раздел «APNG maker» и загружаем туда все нужные нам кадры
# На сайте выбираем раздел «APNG maker» и загружаем туда все нужные нам кадры
# В пункте «APNG options» вы можете настроить Delay <u>для каждого кадра в анимации</u>.
# В пункте «APNG options» вы можете настроить Delay <u>для каждого кадра в анимации</u>.
Строка 59: Строка 60:
# Добавляем нашу статичную часть спрайта в папку с кадрами анимации, которая будет наложена поверх спрайта. Если в анимации есть лишние кадры (например спрайт для повёрнутой версии предмета, или для особого стейта) — удаляем их.
# Добавляем нашу статичную часть спрайта в папку с кадрами анимации, которая будет наложена поверх спрайта. Если в анимации есть лишние кадры (например спрайт для повёрнутой версии предмета, или для особого стейта) — удаляем их.
# Зайдите на сайт 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» означает что наш «фон» никогда не появится отдельным от всех кадром, то есть он всегда будет показан фоном и не будет показан отдельным от остального кадром.
Строка 66: Строка 67:


=== Использование меты ===
=== Использование меты ===
Файлы 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",
Строка 94: Строка 95:
           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).
Строка 100: Строка 101:
=== Использование прототипов ===
=== Использование прототипов ===
Прототипы (файлы с расширением .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
Строка 111: Строка 112:
   - type: DeviceNetwork
   - type: DeviceNetwork
     deviceNetId: Wired
     deviceNetId: Wired
   <span  style="color: red">  - type: Sprite
   - type: Sprite
     layers:
     layers:
     - map: ["computerLayerBody"]
     - map: ["computerLayerBody"]
Строка 120: Строка 121:
       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:30%;">Файл.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:30%;">HydroponicsTray.png</pre>
В случае нескольких предметов с одинаковыми ID, следует добавлять к названию указание состояния или цифру
В случае нескольких предметов с одинаковыми ID, следует добавлять к названию указание состояния или цифру
<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 ">HydroponicsTray1.png</div>
<pre style="width:30%;">HydroponicsTray1.png</pre>
<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:30%;">HydroponicsTray2.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:30%;">Папка-файл.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 ">Onion-harvest.png</div>
<pre style="width:30%;">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:30%;">Конструкция.png</pre>


== Шаблон файл ==
== Шаблон файл ==
Строка 186: Строка 160:
|Источник = <!--Ссылка на источник (При написании Id заполняется автоматически)-->
|Источник = <!--Ссылка на источник (При написании Id заполняется автоматически)-->
|Путь    = <!--Путь к файлу, начиная с Resources (При написании Id заполняется автоматически)-->
|Путь    = <!--Путь к файлу, начиная с Resources (При написании Id заполняется автоматически)-->
|Теги    = <!--(При написании Id заполняется автоматически)-->
}}
}}
</pre>
</pre>


=== Пример использования ===
{{начало цитаты}}
<pre>
== Краткое описание ==
{{Файл
|Описание =
|Id      = CableApcStack
|Проект  = {{abb|SS14}}
|Автор    =
|Источник =
|Путь    =
}}
== Лицензирование ==
{{CC-BY-SA-3.0}}
</pre>
{{оригинальный текст||
== Краткое описание ==
{{Файл
|Описание =
|Id      = CableApcStack
|Проект  = {{abb|SS14}}
|Автор    =
|Источник =
|Путь    =
}}
== Лицензирование ==
{{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}} — основная лицензия нашей Вики. Применяется для изображений, не защищённых авторским правом, или по желанию автора собственного произведения.
Пример: [[:Файл:Logo-NEW.png]]}}
{{pre|{{шс|добросовестное использование}} — для изображений или скриншотов произведений, защищённых авторским правом.
Пример: [[:Файл:Lizzard lore 3.gif]]}}
{{pre|{{шс|несвободная лицензия}} — для работ, созданных для нашей Вики, авторы которых не хотят распространять их на условиях свободной лицензии или пока не указали её.
Пример: [[:Файл:DarkCentcom dep.png]]}}
{{pre|{{tls|No license}} — лицензия по умолчанию при загрузке файлов. Является заглушкой, указывающей на необходимость выбрать другую лицензию, иначе файл может быть удалён.}}


=== Лицензии ===
Все остальные лицензии находятся здесь — [[:Категория:Шаблоны:Лицензии файлов]]. Они могут пригодиться при портировании произведений, имеющих одну из этих лицензий.
Лицензии также является обязательным пунктом в статье файла.
Обычно используются следующие лицензии
<pre>{{CC-BY-SA-3.0}} - Для файлов из репозитория игры</pre>
<pre>{{CC-BY-SA-4.0}}- Для скриншотов</pre>
<pre>{{NoLicense}} - Для файлов с неизвестным источником</pre>


== Стандартизация файлов ==
== Стандартизация файлов ==
В этом разделе будут описаны несколько правил которые желательно соблюдать.
В этом разделе будут описаны несколько правил которые желательно соблюдать.
* При загрузке спрайтов персонажей стоит указывать в графе "|Источник =" имя и должность персонажа и ник игрока в граве "|Автор =". <ref>Если картинка отображает персонажа определённого игрока</ref>  
* При загрузке спрайтов персонажей стоит указывать в графе «|Источник =» имя и должность персонажа и ник игрока в графе «|Автор =».<ref>Если картинка отображает персонажа определённого игрока</ref>
* Не рекомендуется изменять спрайты персонажей закреплённые за игроками, без согласия человека загрузившего оригинальный спрайта или куратора вики.
* Не рекомендуется изменять спрайты персонажей закреплённые за игроками, без согласия человека загрузившего оригинального спрайта или куратора вики.
* Спрайты предметов имеющие много сменяющихся состояний следует загружать с интервалом в 1 секунду на состояние.
* Спрайты предметов имеющие много сменяющихся состояний следует загружать с интервалом в 1 секунду на состояние.
* Спрайты мобов имеющие состояние вращения стоит загружать с вращением против часовой стрелки и с интервалом по 1 секунде на каждый поворот.
* Спрайты мобов имеющие состояние вращения стоит загружать с вращением против часовой стрелки и с интервалом в 1 секунду на каждый поворот.