Guide to Spriting: различия между версиями

Материал из Tau Ceti Station Wiki
Перейти к навигации Перейти к поиску
(Предметы)
 
(не показаны 4 промежуточные версии этого же участника)
Строка 9: Строка 9:
|cat1 = Community  
|cat1 = Community  
|cat2=Contributing}}
|cat2=Contributing}}
== Кто такой Спрайтер? ==
В контексте Space Station 13 спрайтер - это тот, кто создает и улучшает визуал игры. Создание спрайтов - это всего лишь одна из задач спрайтеров. Вот примерный список того, чем вам может предстоять заниматься:
* Учиться эффективно использовать программы для рисования.
* Улучшать, исправлять или обновлять существующие в билде спрайты.
* Сотрудничать с кодерами, которым всегда нужны спрайты для новых фич.
* Участвовать в разработке и оставлять ревью.
* Общаться с игроками для получения фидбека.
* Помогать другим спрайтерам советами.
* Самостоятельно добавлять свои спрайты в билд SS13 с помощью GitHub.
* Пробовать создавать пиксель арт.


== Что такое Спрайты? ==
== Что такое Спрайты? ==
'''Спрайт''' — это '''двумерное изображение или анимация''', которое используется движком игры для отображения, анимации и взаимодействия.
'''Спрайт''' — это '''двумерное изображение или анимация''', которое используется движком игры для отображения, анимации и взаимодействия.


В [Space Station 13], '''спрайтами''' являются изображения всех объектов: персонажей, предметов, интерьеров, интерфейса. Обычно эти изображения находятся в пределах 32 на 32 пикселя. К примеру:[[File:Orebox.png]]
Важно отметить, что главная цель спрайта - изобразить определенную вещь. Он не обязательно должен быть реалистичным, детальным или красивым (хотя и это тоже неплохо!). Прежде всего, '''должно быть сразу понятно, что представляет собой ваш спрайт в контексте игры.'''
 
В [[Space Station 13]], '''спрайтами''' являются изображения всех объектов: персонажей, предметов, интерьеров, интерфейса. Обычно эти изображения находятся в пределах 32 на 32 пикселя. К примеру:[[File:Orebox.png]]


Спрайты обычно хранят в формате .png, без сжатия. Анимации могут быть сохранены, как .gif, или как в качестве раскадровки размером 32x32 пикселя. Но спрайты, используемые в SS13, хранятся в уникальном для BYOND формате '''DMI (Dream Maker Icon)'''. По сути это измененный формат .png, спрайт-лист, но с парой особенностей:
Спрайты обычно хранят в формате .png, без сжатия. Анимации могут быть сохранены, как .gif, или как в качестве раскадровки размером 32x32 пикселя. Но спрайты, используемые в SS13, хранятся в уникальном для BYOND формате '''DMI (Dream Maker Icon)'''. По сути это измененный формат .png, спрайт-лист, но с парой особенностей:
Строка 33: Строка 47:


'''Хорошие:'''
'''Хорошие:'''
* [https://www.aseprite.org/ Aseprite] - очень хороший редактор, специально созданный для пиксель-арта. Платный, хотя является open-source программой, поэтому вы свободно можете скачать и скомпилировать у себя их код с [https://github.com/aseprite/aseprite репозитория на гитхабе]. Более дружелюбный новичку интерфейс.
* [https://www.aseprite.org/ Aseprite] - сильный и стильный редактор, созданный специально для пиксель-арта. Стоит $20, хотя является open-source программой, поэтому вы свободно можете скачать и скомпилировать у себя их код с [https://github.com/aseprite/aseprite репозитория на гитхабе].
*[https://store.steampowered.com/app/671190/Pro_Motion_NG/ Pro Motion NG] - более дорогой и более профессиональный вариант, чем Aseprite. Менее интуитивный интерфейс, но больше настроек и функций.
*[https://store.steampowered.com/app/671190/Pro_Motion_NG/ Pro Motion NG] - более дорогой и более профессиональный вариант, чем Aseprite. Менее интуитивный интерфейс, но больше настроек и функций. Платный, стоит $25.
* [https://www.gimp.org GIMP] - бесплатный редактор изображений, напоминающий фотошоп. Интерфейс может вызвать у вас трудности.
*[https://www.gimp.org GIMP] - бесплатный редактор изображений, напоминающий фотошоп. Интерфейс может вызвать у вас трудности.
*[https://orama-interactive.itch.io/pixelorama Pixelorama] - бесплатный и простой, но не очень мощный редактор. Также может использоваться в браузере, open-source.
'''Прочее:'''
'''Прочее:'''
* [https://www.piskelapp.com/ Piksel] - Бесплатный онлайн редактор.
*[https://www.piskelapp.com/ Piksel] - Бесплатный онлайн редактор.
* [https://www.adobe.com/uk/products/photoshop.html Adobe Photoshop] - Программа, используемая чаще всего не для пиксель-арта, но может подойти, если вы уже привыкли к ней.
*[https://www.adobe.com/uk/products/photoshop.html Adobe Photoshop] - Программа, используемая чаще всего не для пиксель-арта, но может подойти, если вы уже привыкли к ней.
Если вы используете редактор, специально созданный для спрайтинга, вам, скорее всего, не придется беспокоиться об этом, но есть настройки, на которые следует обратить внимание. В разных программах они различаются, но обычно их называют интерполяцией (interpolation) или сглаживанием (anti-aliasing). При использовании редактора убедитесь, что для параметр интерполяция установлено значение "нет" или "ближайший сосед (nearest neighbor)". Убедитесь, что сглаживание отключено. Это позволит сохранить четкость при редактировании. Вот пример:<gallery mode="packed" widths="200" heights="200" style="border: 1px solid grey; width: 450px; padding: 10px; background-color: hsla(0,100%,0%,0.03);">
Файл:Guide to Spriting 4.gif|Неправильные настройки ❌
Файл:Guide to Spriting 5.gif|Правильные настройки ✅
</gallery>


== Основной стиль ==
==Основной стиль ==
Если вы рисуете спрайты, которые в последствии будут использоваться в нашем билде на постоянной основе, им нужно соответствовать определенному стилю и уровню качества. Это связано не с тем, что мейнтейнеры билда ворчуны - в противном случае визуальная составляющая игры быстро превратилась бы в винегрет из спрайтов разного стиля и качества. Снизу будут перечислены основные моменты, на которые вам стоит обратить внимание.
Если вы рисуете спрайты, которые в последствии будут использоваться в нашем билде на постоянной основе, им нужно соответствовать определенному стилю. Это означает, что ваши новые спрайты должны гармонично сочетаться с уже существующими в игре. Это связано совсем не с тем, что мейнтейнеры билда ворчуны. В противном случае визуальная составляющая игры быстро превратилась бы в винегрет из спрайтов разного стиля и качества. В этом разделе будет кратко указаны основные моменты, на которые стоит обратить внимание, чтобы следовать нашему стилю.
 
'''Берите в пример''' уже существующие спрайты из нашего билда (смотрите [[Guide to Spriting#Приложения|приложения]]), и то, как выглядит игра в данный момент. Сам спрайт может быть хорошим, но когда вы вставите его в игру, он уже может выглядеть иначе. Поэтому, прежде чем делиться, хорошей идеей будет протестировать его в игровом окружении.
[[Файл:Guide to spriting station style example.jpg|без|мини|400x400пкс|Этот скрин можно скачать, чтобы подставить свой спрайт.]]
 
===Перспектива===
Спрайты должны в определенной степени следовать стилю. Ниже перечислены основные моменты, на которые вам стоит обращать внимание во время работы.


=== Перспектива ===
Спрайты, как правило, должны быть в перспективе на '''три четверти (для краткости - 3/4)''', за некоторыми исключениями. Перспектива на 3/4, по сути, означает, что у объектов одна грань и видна верхняя часть, обращенная вверх. В большинстве случаев это относится и к спрайтам предметов. [https://habr.com/ru/articles/242023/ Тут] можно почитать про перспективу чуть подробнее.
Спрайты, как правило, должны быть в перспективе на '''три четверти (для краткости - 3/4)''', за некоторыми исключениями. Перспектива на 3/4, по сути, означает, что у объектов одна грань и видна верхняя часть, обращенная вверх. В большинстве случаев это относится и к спрайтам предметов. [https://habr.com/ru/articles/242023/ Тут] можно почитать про перспективу чуть подробнее.
[[Файл:3by4 spriting perspective example.png|безрамки|410x410пкс]]
[[Файл:3by4 spriting perspective example.png|безрамки|410x410пкс]]


=== Палитра ===
===Палитра ===
У нашего сервера в данный момент существует '''[https://forum.taucetistation.org/t/gajdy-i-referensy-dlya-uspeshnogo-sprajtinga/40387/3?u=richard_jones палитра], которой мы придерживаемся.''' Вы можете выходить за ее пределы, если знаете, что делаете. В целом, старайтесь использовать '''как можно меньше цветов''', и выбирайте более '''контрастные''', если это возможно. Если существующий в игре предмет похож на ваш спрайт (например, если он содержит цвета того же отдела), возьмите цвета этого уже существующего в билде спрайта, чтобы сохранить общую согласованность.
Очень важным моментом в спрайтинге, а также в пиксельной графике в целом, является использование ограниченного набора цветов. Всегда старайтесь использовать цвет, который уже присутствует в вашем спрайте, вместо того, чтобы создавать новый. Чтобы выбрать цвет, который уже есть на вашем рисунке, воспользуйтесь пипеткой. Если ваша программа для рисования спрайтов поддерживает палитру, вы также можете выбрать цвета из существующей палитры. <gallery mode="packed" widths="200" heights="200" style="border: 1px solid grey; width: 650px; padding: 10px; background-color: hsla(0,100%,0%,0.03);">
Файл:Guide to Spriting 1.png|Не выбирайте каждый раз новый цвет…
Файл:Guide to Spriting 2.png|Вместо этого выберите цвет, который уже есть в вашем спрайте!
Файл:Guide to Spriting 3.png|Или выберите из палитры
</gallery>У нашего сервера в данный момент существует '''[https://forum.taucetistation.org/t/gajdy-i-referensy-dlya-uspeshnogo-sprajtinga/40387/3?u=richard_jones палитра], которой мы придерживаемся.''' Вы можете выходить за ее пределы, если знаете, что делаете. В целом, старайтесь использовать '''как можно меньше цветов''', и выбирайте более '''контрастные''', если это возможно. Если существующий в игре предмет похож на ваш спрайт (например, если он содержит цвета того же отдела), возьмите цвета этого уже существующего в билде спрайта, чтобы сохранить общую согласованность.


[[Файл:Choosing colors spriting example.png|безрамки|410x410пкс]]
[[Файл:Choosing colors spriting example.png|безрамки|410x410пкс]]


=== Контуры ===
===Контуры===
Все спрайты должны иметь цветные контуры. Это означает, что спрайты должны иметь контуры, состоящие из более темных оттенков цветов, с которыми они соединяются, вместо одноцветного контура. Контуры также не должны игнорировать свето-тень: становиться темнее в более темных частях объекта и светлее, при выделении более светлых частей.
Все спрайты должны иметь цветные контуры. Это означает, что спрайты должны иметь контуры, состоящие из более темных оттенков цветов, с которыми они соединяются, вместо одноцветного контура. Контуры также не должны игнорировать свето-тень: становиться темнее в более темных частях объекта и светлее, при выделении более светлых частей.


[[Файл:Outline spriting example.png|410x410пкс]]
[[Файл:Outline spriting example.png|410x410пкс]]


=== Предметы ===
===Предметы===
Предмет должен иметь:
Предмет должен иметь:


# '''Спрайт в инвентаре''' - главный спрайт, то, как предмет будет выглядеть у игрока в рюкзаке. Старайтесь не рисовать близко к краю вашего 32х32 холста, а еще всегда размещайте спрайт по центру. Этот спрайт - детальное изображение предмета. Размещается в папке [https://github.com/TauCetiStation/TauCetiClassic/tree/master/icons/obj icons/obj] , там они рассортированы по тематическим файлам. Например, спрайты бургеров вы найдете в [https://github.com/TauCetiStation/TauCetiClassic/blob/master/icons/obj/food.dmi food.dmi].
# '''Спрайт в инвентаре''' - главный спрайт, то, как предмет будет выглядеть у игрока в рюкзаке. Старайтесь не рисовать близко к краю вашего 32х32 холста, а еще всегда размещайте спрайт по центру. Этот спрайт - детальное изображение предмета. Размещается в папке [https://github.com/TauCetiStation/TauCetiClassic/tree/master/icons/obj icons/obj] , там они рассортированы по тематическим файлам. Например, спрайты бургеров вы найдете в [https://github.com/TauCetiStation/TauCetiClassic/blob/master/icons/obj/food.dmi food.dmi].
# '''Спрайт в мире (англ. Inworld)''' - то, как предмет будет выглядеть в игровом окружении, например, на столе повара. Более маленькая версия, чем спрайт в инвентаре, потому что он должен соответствовать пропорциям персонажа, тоесть он должен быть меньше его (бургер же меньше человека). Предмет будет принимать этот спрайт, когда находится вне инвентаря персонажа. Спрайт в мире для предмета лежит в том же файле, что и спрайт в инвентаре.
# '''Спрайт в мире (англ. Inworld)''' - то, как предмет будет выглядеть в игровом окружении, например, на столе повара. Более маленькая версия, чем спрайт в инвентаре, потому что он должен соответствовать пропорциям персонажа, тоесть он должен быть меньше его (бургер же меньше человека). Предмет будет принимать этот спрайт, когда находится вне инвентаря персонажа. Спрайт в мире для предмета лежит в том же файле, что и спрайт в инвентаре. Не забудьте отцентрировать спрайт.
# '''Спрайт в руках (англ. Inhand)''' - нужен, чтобы отображать, что человек держит что-то в руке. У персонажа две руки (правая и левая), и четыре направления - сервер, юг, запад и восток. Соответственно, вам потребуется сделать 8 спрайтов предмета в руках. Не переживайте, их не нужно сильно детализировать (Нужно просто чтобы было видно, что человек держит что-то), а еще, нарисовав одно направление, его легко переиспользовать, чтобы нарисовать остальные. Спрайты в руках хранятся в папке  [https://github.com/TauCetiStation/TauCetiClassic/tree/master/icons/mob/inhands icons/mob/inhands], во время рисования вам также пригодятся спрайты кукол, их можно найти в [[Guide to Spriting#Приложения|приложениях статьи]].
# '''Спрайт в руках (англ. Inhand)''' - {{Anchor|inhands}}нужен, чтобы отображать, что человек держит что-то в руке. У персонажа две руки (правая и левая), и четыре направления - сервер, юг, запад и восток. Соответственно, вам потребуется сделать 8 спрайтов предмета в руках. Не переживайте, их не нужно сильно детализировать (Нужно просто чтобы было видно, что человек держит что-то), а еще, нарисовав одно направление, его легко переиспользовать, чтобы нарисовать остальные. Спрайты в руках хранятся в папке  [https://github.com/TauCetiStation/TauCetiClassic/tree/master/icons/mob/inhands icons/mob/inhands], во время рисования вам также пригодятся спрайты кукол, их можно найти в [[Guide to Spriting#Приложения|приложениях статьи]].


[[Файл:Item spriting example.jpg|безрамки|439x439пкс]]
[[Файл:Item spriting example.jpg|безрамки|439x439пкс]]


=== Одежда ===
===Одежда===
Для создания предмета одежды понадобится нарисовать ему:  
Для создания предмета одежды понадобится нарисовать ему:  


* Вид спереди, сзади и с обоих сторон. - [https://github.com/TauCetiStation/TauCetiClassic/blob/master/icons/mob/uniform.dmi Примеры в билде]
# '''Спрайт в инвентаре''' - то, как вещь будет отображаться в слоте инвентаря, или на земле. - [https://github.com/TauCetiStation/TauCetiClassic/tree/master/icons/obj/clothing Примеры в билде]
* Специальный "спрайт-предмет" - то, как вещь будет отображаться в слоте инвентаря, или на земле. - [https://github.com/TauCetiStation/TauCetiClassic/tree/master/icons/obj/clothing Примеры в билде]
#'''Направление одежды на персонаже''' - сервер, юг, запад, восток. Вся одежда, которая надевается на персонажа должна иметь спрайты всех направлений, вы можете посмотреть [https://github.com/TauCetiStation/TauCetiClassic/blob/master/icons/mob/uniform.dmi примеры в билде] и использовать их за основу. Во время рисования вам также пригодятся спрайты кукол, их можно найти в [[Guide to Spriting#Приложения|приложениях статьи]]. Используйте их, чтобы не нарисовать слишком широкую или узкую одежду. Это связано с тем, что BYOND показывает спрайты один слой поверх другого; каждый спрайт не должен быть шире, чем слой выше. Пример: если вы рисуете униформу, помните, что она должна быть уже, чем спрайт скафандра. В противном случае несколько пикселей из униформы будут отображаться по всему краю скафандра.
* (Необязательно) "In-hand" спрайты - маленькие изображения предмета для того, чтобы они отображались при ношении в руках. Необходимо нарисовать для обоих рук. - [https://github.com/TauCetiStation/TauCetiClassic/tree/master/icons/mob/inhands Примеры в билде]
# '''Спрайт в руках (англ. Inhand)''' -  Аналогично спрайтам в руках предметов {{Anchorlink|inhands|t=из раздела выше}}Спрайты головных уборов, масок, очков, формы, костюмов и обуви рекомендуется рисовать для всех рас и комплекций тела. Особенно это касается расы Воксов.
 
BYOND показывает спрайты один слой поверх другого; каждый спрайт не должен быть шире, чем слой выше. Пример: если вы рисуете униформу, помните, что она должна быть уже, чем спрайт скафандра. В противном случае несколько пикселей из униформы будут отображаться по всему краю скафандра.
 
Спрайты головных уборов, масок, очков, формы, костюмов и обуви рекомендуется рисовать для всех рас и комплекций тела. Особенно это касается расы Воксов.


=== Объекты и Машинерия ===
===Объекты и Машинерия ===
[[File:Floor.png|Плитка|мини]]Большие неперемещаемые объекты обычно занимают весь тайл, подчеркивая их размер. При рисовании объектов старайтесь оставлять у краёв тайла небольшой промежуток (к примеру, 1-2 пикселя), чтобы рядом стоящие объекты не сливались между собой. Машинерия чаще всего анимирована.
Большие неперемещаемые объекты обычно занимают весь тайл, подчеркивая их размер. При рисовании объектов старайтесь оставлять у краёв тайла небольшой промежуток (к примеру, 1-2 пикселя), чтобы рядом стоящие объекты не сливались между собой. Машинерия чаще всего анимирована. Примеры вы можете посмотреть в разделе [[Machine|машинерии]] на нашей вики, либо в билде по [https://github.com/TauCetiStation/TauCetiClassic/tree/master/icons/obj/machines этой ссылке].
== Внедрение ==
==Внедрение==
Чтобы добавить свои спрайты в игру, вам понадобится перенести их в формат '''DMI (Dream Maker Icon)''' - BYOND использует его для хранения изображений (По сути это измененный формат .png). В нашем билде все эти файлы хранятся в [https://github.com/TauCetiStation/TauCetiClassic/tree/master/icons папке "icons"]. В целом, если вы не вносите в билд свои спрайты самостоятельно, потому что не хотите разбираться с [https://wiki.taucetistation.org/Git/GitHub Гитхабом], и нашли раба-кодера, который добавит ваши изменения за вас, эту главу можно проигнорировать. Найти таких людей можно в нашем [https://discord.com/invite/YCWRjkb дискорде], в канале #rnd или #sprites.
Чтобы добавить свои спрайты в игру, вам понадобится перенести их в формат '''DMI (Dream Maker Icon)'''. В нашем билде все эти файлы хранятся в [https://github.com/TauCetiStation/TauCetiClassic/tree/master/icons папке "icons"].  


Если существующий в билде .dmi файл подходит для вашего спрайта, используйте его вместо создания нового. Если же необходимо создать новый файл - процесс довольно прост:
Если существующий в билде .dmi файл подходит для вашего спрайта, используйте его вместо создания нового. Если же необходимо создать новый файл - процесс довольно прост:
#Открываете BYOND-овский Dream Maker.
#Открываете BYOND-овский Dream Maker.
#В меню создаём "New Environment"
#В меню создаём "New Environment"
#*Если у вас уже есть "Environment" в котором работаете, или из-за предыдущего открытия dmi-файлов, вы можете перейти сразу к шагу 5.
#* Если у вас уже есть "Environment" в котором работаете, или из-за предыдущего открытия dmi-файлов, вы можете перейти сразу к шагу 5.
#Укажите каталог файлов, в котором находится файл "среды" (.dme) и связанные с ним файлы будут находиться. Назовите .dme файл.
#Укажите каталог файлов, в котором находится файл "среды" (.dme) и связанные с ним файлы будут находиться. Назовите .dme файл.
#Создайте новый файл через File->New.  (Если вы создали новую среду, программа все сделает за вас.) Выберите "Icon File (.dmi)". Укажите, где .dmi будет находиться относительно папки, в которой хранится файл среды (если вы оставите поле пустым, файл будет находиться в той же папке). Назовите его как-нибудь.
#Создайте новый файл через File->New.  (Если вы создали новую среду, программа все сделает за вас.) Выберите "Icon File (.dmi)". Укажите, где .dmi будет находиться относительно папки, в которой хранится файл среды (если вы оставите поле пустым, файл будет находиться в той же папке). Назовите его как-нибудь.
#Важно: В одном dmi файле - могут быть спрайты только одного размера. Установите размер 32х32.
#Важно: В одном dmi файле - могут быть спрайты только одного размера. Установите размер 32х32.


Эти .dmi файлы, конечно, лишь "контейнеры" для ваших спрайтов. Чтобы наполнить их вашими произведениями искусства, вы можете:
Эти .dmi файлы, конечно, лишь "контейнеры" для ваших спрайтов. Чтобы наполнить их вашими произведениями искусства, вы можете:  
 
#Находясь внутри DMI-файла, откройте меню "Graphic" в самом вверху (или ПКМ по пустому месту) и выберите "Import". Выберите в открывшимся окне ваш спрайт и нажмите "ОК". Выбирайте файлы в заданном DMI-файлом разрешении (обычно это 32х32, как говорилось ранее), иначе программа порежет ваш спрайт на куски.
#ПКМ где угодно в центре экрана, внутри открытого DMI-файла, либо откройте меню "Graphic" в самом вверху и выберите "New State". Открылся редактор, в котором вы увидите пустое ничего. Теперь вы можете делать с ним всё, что угодно, к примеру, скопировать ({{Key|Ctrl}}+ {{Key|C}}, {{Key|Ctrl}}+ {{Key|V}}) туда свой спрайт из любого редактора изображений.
#Не забывайте постоянно сохраняться ({{Key|Ctrl}}+ {{Key|S}})! DM может внезапно вылетить, и в нем отсутствует авто-сохранение и бэкапы.
Дальше придется разбираться с Гитхабом, можно следовать [[Git/GitHub|нашему гайду]]. В целом, вы можете попробовать найти кого-то, кто сделает всю грязную работу с Гитхабом за вас, желающие обычно есть. Найти таких людей можно в нашем [https://discord.com/invite/YCWRjkb дискорде], в канале #rnd или #sprites.
 
===Анимации ===
Чтобы сделать стейт-анимацию, вам понадобится сделать несколько кадров (Нажмите на {{Key|+}} снизу, либо выберите кол-во кадров слева. Теперь вы можете редактировать кадры. Также не забудьте настроить длительность каждого кадра (Delay) - достаточно просто кликнуть на цифры над кадрами, и вуаля! Можете выбрать любое число, даже дробное. Ну и наконец, чтобы посмотреть, что получается, поставьте галочку около надписи "Animate" слева, и вы увидите вашу анимацию в небольшом окошке. Можете там же настроить дальность просмотра.
 
=== Работа с большим количеством спрайтов. ===
Использование метода "копировать - вставить" с помощью Dream Maker позволяет импортировать только один спрайт за раз. Это может быть удобно в начале, но если вы работаете над большим объемом - это может стать проблемой. В некоторых проектах вам может потребоваться редактировать множество файлов с большим количеством спрайтов. Существует более удобный метод, о котором пойдет речь далее.
 
Для начала, создайте копию вашего .dmi файла, она пригодится нам позже. Теперь откройте .dmi файл в вашем редакторе (Например, Aseprite). Как мы узнали ранее, файл .dmi - это просто изображение в формате .png, но с другим расширением. Некоторые программы обнаруживают это и могут открыть файл, как если бы он был обычным .png. Другие их не видят, поэтому вам нужно будет '''переименовать файл, чтобы изменить расширение с .dmi на .png'''. Важно отметить, что этот процесс необратим. Вы можете преобразовать файл .dmi в формат .png, переименовав его, но вы не сможете преобразовать его обратно таким же простым методом. Вы должны увидеть в редакторе спрайт-лист, с которым намного удобнее работать:
 
[[Файл:Guide to Spriting 6.png|безрамки|300x300пкс]]
 
 
После того, как вы завершите работу над спрайт-листом, нам потребуется конвертировать .png обратно в .dmi. Но как же вернуть нужное расширение?
 
В этом нам поможет волшебная программа под названием '''TweakPNG'''. [https://entropymine.com/jason/tweakpng/ Вы можете скачать ее тут.] Это очень легкая программа, которую не нужно устанавливать, чтобы запустить.
 
Поначалу этот процесс может показаться сложным, но со временем это будет занимать у вас всего несколько секунд.
 
Вам потребуется не отредактированная копия вашего файла в формате .dmi, которую мы сохранили в начале, а точнее ее мета-данные. Если у вас больше нет оригинала, вы можете повторно загрузить его из репозитория Github.
 
Сначала откройте оригинал .dmi в TweakPNG. Вы можете сделать это, просто перетащив файл в окно настройки. Файл будет выглядеть следующим образом:
 
[[Файл:TweakPNG 1.png|безрамки|450x450пкс]]
 
Единственное, что нам отсюда понадобится, - это чанк '''zTXt'''. Выделите его и просто нажмите копировать. Сочетание клавиш {{Key|Ctrl}}+ {{Key|C}} тоже сработает:
 
[[Файл:Guide to Spriting 7.png|безрамки|450x450пкс]]
 
Затем откройте через TweakPNG файл .png с вашими изменениями. Опять же, вы можете просто перетащить его в окно.
 
[[Файл:Guide to Spriting 8.png|безрамки|450x450пкс]]
 
Обратите внимание, что в нем нет чанка zTXt. Если он есть, просто удалите его.


# Находясь внутри DMI-файла, откройте меню "Graphic" в самом вверху (или ПКМ по пустому месту) и выберите "Import". Выберите в открывшимся окне ваш спрайт и нажмите "ОК". Выбирайте файлы в заданном DMI-файлом разрешении (обычно это 32х32, как говорилось ранее), иначе программа порежет ваш спрайт на куски.
Теперь выделите любой чанк в середине файла и нажмите "Вставить" или {{Key|Ctrl}}+ {{Key|V}}. Чанк zTXt можно поместить в любом месте после заголовка (IHDR) и перед данными изображения (IDAT). Затем просто нажмите "Сохранить" или {{Key|Ctrl}}+ {{Key|S}}.
# ПКМ где угодно в центре экрана, внутри открытого DMI-файла, либо откройте меню "Graphic" в самом вверху и выберите "New State". Открылся редактор, в котором вы увидите пустое ничего. Теперь вы можете делать с ним всё, что угодно, к примеру, скопировать (Ctrl + C, Ctrl + V) туда свой спрайт из любого редактора изображений.


=== Анимации ===
[[Файл:Guide to Spriting 9.gif|безрамки|450x450пкс]]
Чтобы сделать стейт-анимацию, вам понадобится сделать несколько кадров (Нажмите на "+" снизу, либо выберите кол-во кадров слева. Теперь вы можете редактировать кадры. Также не забудьте настроить длительность каждого кадра (Delay) - достаточно просто кликнуть на цифры над кадрами, и вуаля! Можете выбрать любое число, даже дробное. Ну и наконец, чтобы посмотреть, что получается, поставьте галочку около надписи "Animate" слева, и вы увидите вашу анимацию в небольшом окошке. Можете там же настроить дальность просмотра.


== Советы ==
Теперь все, что нужно сделать, это изменить расширение вашего нового файла с .png на .dmi. Также важно, чтобы у него было то же имя, что и у оригинала (в случае примера он должен быть device.dmi, а не device_new.dmi). Вы также можете сохранить файл в формате .dmi прямо из TweakPNG, как только добавите чанк zTXt. Однако оставьте тип файла в формате .png.


* Отсылки разрешены, но старайтесь делать это ненавязчиво.
Итак, вот все упомянутые шаги, отображенные в виде графика, чтобы вы легче могли понять, что происходит:
* [https://deeunderscore.github.io/dmi/#/ DMI Viewer] - онлайн инструмент, показывающий спрайты внутри DMI файла. Помимо обычной загрузки, умеет открывать файл по ссылке.
* Когда хотите показать кому-то свое творение - не кидайте одежду просто скрином из редактора - так ни вы, ни советчики ничего не увидят. Цепляйте одежду на куклу там же в редакторе, или тестите в игре.


== Что прочесть и где найти помощь? ==
[[Файл:Guide to Spriting 10.jpg|безрамки|504x504пкс]]
 
==Советы==
 
*Отсылки разрешены, но старайтесь делать это ненавязчиво.
*[https://deeunderscore.github.io/dmi/#/ DMI Viewer] - онлайн инструмент, показывающий спрайты внутри DMI файла. Помимо обычной загрузки, умеет открывать файл по ссылке.
*Когда хотите показать кому-то свое творение - не кидайте одежду просто скрином из редактора - так ни вы, ни советчики ничего не увидят. Цепляйте одежду на куклу там же в редакторе, или тестите в игре.
*Давайте спрайтам в .dmi файлах простые названия, которые легко читаются и отличаются от других состояний в файле. Они используются в качестве ключевых слов в коде, поэтому называйте их в нижнем регистре и избегайте использования специальных символов.
 
==Что прочесть и где найти помощь?==
*Вы всегда можете задать вопросы или обсудить свои творения в канале #sprites [https://discordapp.com/invite/YCWRjkb нашего дискорда].
*Вы всегда можете задать вопросы или обсудить свои творения в канале #sprites [https://discordapp.com/invite/YCWRjkb нашего дискорда].
*[https://forum.taucetistation.org/t/gajdy-i-referensy-dlya-uspeshnogo-sprajtinga/40387 Референсы и гайды на нашем форуме]
*[https://forum.taucetistation.org/t/gajdy-i-referensy-dlya-uspeshnogo-sprajtinga/40387 Референсы и гайды на нашем форуме]
*Читайте гайды! На просторах интернета их море, достаточно просто загуглить. Примеры:  
*Читайте гайды! На просторах интернета их море, достаточно просто загуглить. Примеры:


Русские:
Русские:


* http://gas13.ru/v3/tutorials/ru_sywtbapa_almighty_grass_tile.php
*http://gas13.ru/v3/tutorials/ru_sywtbapa_almighty_grass_tile.php
* https://gamin.me/posts/4849
*https://gamin.me/posts/4849


Англоязычные:
Англоязычные:


* https://tgstation13.org/phpBB/viewtopic.php?f=11&t=687
*https://tgstation13.org/phpBB/viewtopic.php?f=11&t=687
* http://androidarts.com/pixtut/pixelart.htm
*http://androidarts.com/pixtut/pixelart.htm
* https://onimille.tumblr.com
*https://onimille.tumblr.com
 
==Приложения==


== Приложения ==
*[https://github.com/TauCetiStation/TauCetiClassic/tree/master/icons/mob/human Папка icons/mob/human] - игровые спрайты кукол людей и разных рас. Сохраните, они точно вам пригодятся.
[[File:MobSpritesFull.png|frame|Игровые спрайты людей. Сохраните, они пригодятся вам.|без]][[File:Spriting_GreyJumpsuit.png|frame|Пример: серая униформа.|без]]
*[https://github.com/TauCetiStation/TauCetiClassic/tree/master/icons/obj Папка icons/obj] - основные объекты игры.
*[https://github.com/TauCetiStation/TauCetiClassic/tree/master/icons/turf Папка icons/turf] - полы и стены.

Текущая версия на 10:52, 21 июня 2025

Итак, вы хотите научиться спрайтингу — искусству создания пиксельной графики, которая оживляет персонажей, предметы и целые миры. Отлично!

В данной статье мы разберем, какую программу лучше выбрать, расскажем про то, как рисовать и добавлять спрайты в игру, и дадим ссылки на полезные статьи. Мы не научим вас рисовать, для этого подойдут многочисленные гайды в интернете и посещение художественной школы. Однако, мы рекомендуем прочитать книгу Майкла Аззи "Pixel Logic". Вот ссылка. (Внимание: гайд на английском)

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

Bucket.png
Спрайтинг для Начинающих

Категории: Community; Contributing;

Кто такой Спрайтер?

В контексте Space Station 13 спрайтер - это тот, кто создает и улучшает визуал игры. Создание спрайтов - это всего лишь одна из задач спрайтеров. Вот примерный список того, чем вам может предстоять заниматься:

  • Учиться эффективно использовать программы для рисования.
  • Улучшать, исправлять или обновлять существующие в билде спрайты.
  • Сотрудничать с кодерами, которым всегда нужны спрайты для новых фич.
  • Участвовать в разработке и оставлять ревью.
  • Общаться с игроками для получения фидбека.
  • Помогать другим спрайтерам советами.
  • Самостоятельно добавлять свои спрайты в билд SS13 с помощью GitHub.
  • Пробовать создавать пиксель арт.

Что такое Спрайты?

Спрайт — это двумерное изображение или анимация, которое используется движком игры для отображения, анимации и взаимодействия.

Важно отметить, что главная цель спрайта - изобразить определенную вещь. Он не обязательно должен быть реалистичным, детальным или красивым (хотя и это тоже неплохо!). Прежде всего, должно быть сразу понятно, что представляет собой ваш спрайт в контексте игры.

В Space Station 13, спрайтами являются изображения всех объектов: персонажей, предметов, интерьеров, интерфейса. Обычно эти изображения находятся в пределах 32 на 32 пикселя. К примеру:Orebox.png

Спрайты обычно хранят в формате .png, без сжатия. Анимации могут быть сохранены, как .gif, или как в качестве раскадровки размером 32x32 пикселя. Но спрайты, используемые в SS13, хранятся в уникальном для BYOND формате DMI (Dream Maker Icon). По сути это измененный формат .png, спрайт-лист, но с парой особенностей:

  1. Создаётся и изменяется через Dream Maker — встроенный редактор BYOND.
  2. Сохраняется в виде PNG-файла, но с дополнительной метаинформацией, которая описывает:
    • Названия состояний (стейтов).
    • Количество кадров.
    • Направления (например, север, юг, запад, восток).
    • Скорость анимации и пр.

Пример использования DMI файла в коде билда:

icon = 'items.dmi'
icon_state = "laser_gun"

Это значит, что объект будет использовать иконку из файла items.dmi и брать спрайт с именем "laser_gun".

Где мне рисовать? Выбор программы

В BYOND-овском редакторе Dream Maker есть собственный редактор спрайтов, но он не подойдёт нам по функционалу (например, в нем отсутствует функция слоев), и понадобится, лишь чтобы поправить недочёты и собрать кадры в анимации. Что же использовать? Существует ряд программ:

Хорошие:

  • Aseprite - сильный и стильный редактор, созданный специально для пиксель-арта. Стоит $20, хотя является open-source программой, поэтому вы свободно можете скачать и скомпилировать у себя их код с репозитория на гитхабе.
  • Pro Motion NG - более дорогой и более профессиональный вариант, чем Aseprite. Менее интуитивный интерфейс, но больше настроек и функций. Платный, стоит $25.
  • GIMP - бесплатный редактор изображений, напоминающий фотошоп. Интерфейс может вызвать у вас трудности.
  • Pixelorama - бесплатный и простой, но не очень мощный редактор. Также может использоваться в браузере, open-source.

Прочее:

  • Piksel - Бесплатный онлайн редактор.
  • Adobe Photoshop - Программа, используемая чаще всего не для пиксель-арта, но может подойти, если вы уже привыкли к ней.

Если вы используете редактор, специально созданный для спрайтинга, вам, скорее всего, не придется беспокоиться об этом, но есть настройки, на которые следует обратить внимание. В разных программах они различаются, но обычно их называют интерполяцией (interpolation) или сглаживанием (anti-aliasing). При использовании редактора убедитесь, что для параметр интерполяция установлено значение "нет" или "ближайший сосед (nearest neighbor)". Убедитесь, что сглаживание отключено. Это позволит сохранить четкость при редактировании. Вот пример:

Основной стиль

Если вы рисуете спрайты, которые в последствии будут использоваться в нашем билде на постоянной основе, им нужно соответствовать определенному стилю. Это означает, что ваши новые спрайты должны гармонично сочетаться с уже существующими в игре. Это связано совсем не с тем, что мейнтейнеры билда ворчуны. В противном случае визуальная составляющая игры быстро превратилась бы в винегрет из спрайтов разного стиля и качества. В этом разделе будет кратко указаны основные моменты, на которые стоит обратить внимание, чтобы следовать нашему стилю.

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

Этот скрин можно скачать, чтобы подставить свой спрайт.

Перспектива

Спрайты должны в определенной степени следовать стилю. Ниже перечислены основные моменты, на которые вам стоит обращать внимание во время работы.

Спрайты, как правило, должны быть в перспективе на три четверти (для краткости - 3/4), за некоторыми исключениями. Перспектива на 3/4, по сути, означает, что у объектов одна грань и видна верхняя часть, обращенная вверх. В большинстве случаев это относится и к спрайтам предметов. Тут можно почитать про перспективу чуть подробнее. 3by4 spriting perspective example.png

Палитра

Очень важным моментом в спрайтинге, а также в пиксельной графике в целом, является использование ограниченного набора цветов. Всегда старайтесь использовать цвет, который уже присутствует в вашем спрайте, вместо того, чтобы создавать новый. Чтобы выбрать цвет, который уже есть на вашем рисунке, воспользуйтесь пипеткой. Если ваша программа для рисования спрайтов поддерживает палитру, вы также можете выбрать цвета из существующей палитры.

У нашего сервера в данный момент существует палитра, которой мы придерживаемся. Вы можете выходить за ее пределы, если знаете, что делаете. В целом, старайтесь использовать как можно меньше цветов, и выбирайте более контрастные, если это возможно. Если существующий в игре предмет похож на ваш спрайт (например, если он содержит цвета того же отдела), возьмите цвета этого уже существующего в билде спрайта, чтобы сохранить общую согласованность.

Choosing colors spriting example.png

Контуры

Все спрайты должны иметь цветные контуры. Это означает, что спрайты должны иметь контуры, состоящие из более темных оттенков цветов, с которыми они соединяются, вместо одноцветного контура. Контуры также не должны игнорировать свето-тень: становиться темнее в более темных частях объекта и светлее, при выделении более светлых частей.

Outline spriting example.png

Предметы

Предмет должен иметь:

  1. Спрайт в инвентаре - главный спрайт, то, как предмет будет выглядеть у игрока в рюкзаке. Старайтесь не рисовать близко к краю вашего 32х32 холста, а еще всегда размещайте спрайт по центру. Этот спрайт - детальное изображение предмета. Размещается в папке icons/obj , там они рассортированы по тематическим файлам. Например, спрайты бургеров вы найдете в food.dmi.
  2. Спрайт в мире (англ. Inworld) - то, как предмет будет выглядеть в игровом окружении, например, на столе повара. Более маленькая версия, чем спрайт в инвентаре, потому что он должен соответствовать пропорциям персонажа, тоесть он должен быть меньше его (бургер же меньше человека). Предмет будет принимать этот спрайт, когда находится вне инвентаря персонажа. Спрайт в мире для предмета лежит в том же файле, что и спрайт в инвентаре. Не забудьте отцентрировать спрайт.
  3. Спрайт в руках (англ. Inhand) -

нужен, чтобы отображать, что человек держит что-то в руке. У персонажа две руки (правая и левая), и четыре направления - сервер, юг, запад и восток. Соответственно, вам потребуется сделать 8 спрайтов предмета в руках. Не переживайте, их не нужно сильно детализировать (Нужно просто чтобы было видно, что человек держит что-то), а еще, нарисовав одно направление, его легко переиспользовать, чтобы нарисовать остальные. Спрайты в руках хранятся в папке icons/mob/inhands, во время рисования вам также пригодятся спрайты кукол, их можно найти в приложениях статьи.

Item spriting example.jpg

Одежда

Для создания предмета одежды понадобится нарисовать ему:

  1. Спрайт в инвентаре - то, как вещь будет отображаться в слоте инвентаря, или на земле. - Примеры в билде
  2. Направление одежды на персонаже - сервер, юг, запад, восток. Вся одежда, которая надевается на персонажа должна иметь спрайты всех направлений, вы можете посмотреть примеры в билде и использовать их за основу. Во время рисования вам также пригодятся спрайты кукол, их можно найти в приложениях статьи. Используйте их, чтобы не нарисовать слишком широкую или узкую одежду. Это связано с тем, что BYOND показывает спрайты один слой поверх другого; каждый спрайт не должен быть шире, чем слой выше. Пример: если вы рисуете униформу, помните, что она должна быть уже, чем спрайт скафандра. В противном случае несколько пикселей из униформы будут отображаться по всему краю скафандра.
  3. Спрайт в руках (англ. Inhand) - Аналогично спрайтам в руках предметов из раздела выше

Спрайты головных уборов, масок, очков, формы, костюмов и обуви рекомендуется рисовать для всех рас и комплекций тела. Особенно это касается расы Воксов.

Объекты и Машинерия

Большие неперемещаемые объекты обычно занимают весь тайл, подчеркивая их размер. При рисовании объектов старайтесь оставлять у краёв тайла небольшой промежуток (к примеру, 1-2 пикселя), чтобы рядом стоящие объекты не сливались между собой. Машинерия чаще всего анимирована. Примеры вы можете посмотреть в разделе машинерии на нашей вики, либо в билде по этой ссылке.

Внедрение

Чтобы добавить свои спрайты в игру, вам понадобится перенести их в формат DMI (Dream Maker Icon). В нашем билде все эти файлы хранятся в папке "icons".

Если существующий в билде .dmi файл подходит для вашего спрайта, используйте его вместо создания нового. Если же необходимо создать новый файл - процесс довольно прост:

  1. Открываете BYOND-овский Dream Maker.
  2. В меню создаём "New Environment"
    • Если у вас уже есть "Environment" в котором работаете, или из-за предыдущего открытия dmi-файлов, вы можете перейти сразу к шагу 5.
  3. Укажите каталог файлов, в котором находится файл "среды" (.dme) и связанные с ним файлы будут находиться. Назовите .dme файл.
  4. Создайте новый файл через File->New. (Если вы создали новую среду, программа все сделает за вас.) Выберите "Icon File (.dmi)". Укажите, где .dmi будет находиться относительно папки, в которой хранится файл среды (если вы оставите поле пустым, файл будет находиться в той же папке). Назовите его как-нибудь.
  5. Важно: В одном dmi файле - могут быть спрайты только одного размера. Установите размер 32х32.

Эти .dmi файлы, конечно, лишь "контейнеры" для ваших спрайтов. Чтобы наполнить их вашими произведениями искусства, вы можете:

  1. Находясь внутри DMI-файла, откройте меню "Graphic" в самом вверху (или ПКМ по пустому месту) и выберите "Import". Выберите в открывшимся окне ваш спрайт и нажмите "ОК". Выбирайте файлы в заданном DMI-файлом разрешении (обычно это 32х32, как говорилось ранее), иначе программа порежет ваш спрайт на куски.
  2. ПКМ где угодно в центре экрана, внутри открытого DMI-файла, либо откройте меню "Graphic" в самом вверху и выберите "New State". Открылся редактор, в котором вы увидите пустое ничего. Теперь вы можете делать с ним всё, что угодно, к примеру, скопировать (Ctrl+ C, Ctrl+ V) туда свой спрайт из любого редактора изображений.
  3. Не забывайте постоянно сохраняться (Ctrl+ S)! DM может внезапно вылетить, и в нем отсутствует авто-сохранение и бэкапы.

Дальше придется разбираться с Гитхабом, можно следовать нашему гайду. В целом, вы можете попробовать найти кого-то, кто сделает всю грязную работу с Гитхабом за вас, желающие обычно есть. Найти таких людей можно в нашем дискорде, в канале #rnd или #sprites.

Анимации

Чтобы сделать стейт-анимацию, вам понадобится сделать несколько кадров (Нажмите на + снизу, либо выберите кол-во кадров слева. Теперь вы можете редактировать кадры. Также не забудьте настроить длительность каждого кадра (Delay) - достаточно просто кликнуть на цифры над кадрами, и вуаля! Можете выбрать любое число, даже дробное. Ну и наконец, чтобы посмотреть, что получается, поставьте галочку около надписи "Animate" слева, и вы увидите вашу анимацию в небольшом окошке. Можете там же настроить дальность просмотра.

Работа с большим количеством спрайтов.

Использование метода "копировать - вставить" с помощью Dream Maker позволяет импортировать только один спрайт за раз. Это может быть удобно в начале, но если вы работаете над большим объемом - это может стать проблемой. В некоторых проектах вам может потребоваться редактировать множество файлов с большим количеством спрайтов. Существует более удобный метод, о котором пойдет речь далее.

Для начала, создайте копию вашего .dmi файла, она пригодится нам позже. Теперь откройте .dmi файл в вашем редакторе (Например, Aseprite). Как мы узнали ранее, файл .dmi - это просто изображение в формате .png, но с другим расширением. Некоторые программы обнаруживают это и могут открыть файл, как если бы он был обычным .png. Другие их не видят, поэтому вам нужно будет переименовать файл, чтобы изменить расширение с .dmi на .png. Важно отметить, что этот процесс необратим. Вы можете преобразовать файл .dmi в формат .png, переименовав его, но вы не сможете преобразовать его обратно таким же простым методом. Вы должны увидеть в редакторе спрайт-лист, с которым намного удобнее работать:

Guide to Spriting 6.png


После того, как вы завершите работу над спрайт-листом, нам потребуется конвертировать .png обратно в .dmi. Но как же вернуть нужное расширение?

В этом нам поможет волшебная программа под названием TweakPNG. Вы можете скачать ее тут. Это очень легкая программа, которую не нужно устанавливать, чтобы запустить.

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

Вам потребуется не отредактированная копия вашего файла в формате .dmi, которую мы сохранили в начале, а точнее ее мета-данные. Если у вас больше нет оригинала, вы можете повторно загрузить его из репозитория Github.

Сначала откройте оригинал .dmi в TweakPNG. Вы можете сделать это, просто перетащив файл в окно настройки. Файл будет выглядеть следующим образом:

TweakPNG 1.png

Единственное, что нам отсюда понадобится, - это чанк zTXt. Выделите его и просто нажмите копировать. Сочетание клавиш Ctrl+ C тоже сработает:

Guide to Spriting 7.png

Затем откройте через TweakPNG файл .png с вашими изменениями. Опять же, вы можете просто перетащить его в окно.

Guide to Spriting 8.png

Обратите внимание, что в нем нет чанка zTXt. Если он есть, просто удалите его.

Теперь выделите любой чанк в середине файла и нажмите "Вставить" или Ctrl+ V. Чанк zTXt можно поместить в любом месте после заголовка (IHDR) и перед данными изображения (IDAT). Затем просто нажмите "Сохранить" или Ctrl+ S.

Guide to Spriting 9.gif

Теперь все, что нужно сделать, это изменить расширение вашего нового файла с .png на .dmi. Также важно, чтобы у него было то же имя, что и у оригинала (в случае примера он должен быть device.dmi, а не device_new.dmi). Вы также можете сохранить файл в формате .dmi прямо из TweakPNG, как только добавите чанк zTXt. Однако оставьте тип файла в формате .png.

Итак, вот все упомянутые шаги, отображенные в виде графика, чтобы вы легче могли понять, что происходит:

Guide to Spriting 10.jpg

Советы

  • Отсылки разрешены, но старайтесь делать это ненавязчиво.
  • DMI Viewer - онлайн инструмент, показывающий спрайты внутри DMI файла. Помимо обычной загрузки, умеет открывать файл по ссылке.
  • Когда хотите показать кому-то свое творение - не кидайте одежду просто скрином из редактора - так ни вы, ни советчики ничего не увидят. Цепляйте одежду на куклу там же в редакторе, или тестите в игре.
  • Давайте спрайтам в .dmi файлах простые названия, которые легко читаются и отличаются от других состояний в файле. Они используются в качестве ключевых слов в коде, поэтому называйте их в нижнем регистре и избегайте использования специальных символов.

Что прочесть и где найти помощь?

Русские:

Англоязычные:

Приложения