Гайд
Свой аватар в Figura
Figura показывает вместо обычного скина модель, которую вы нарисовали сами: детальный скин, шляпу, уши, волосы, полы плаща. Здесь всё, что нужно, чтобы сделать такой аватар для Persephone, даже если вы раньше не открывали Blockbench.
Общая планка
Чтобы детальные и простые аватары смотрелись рядом, у нас одна планка для всех:
- Ванильные пропорции. Тело, голова, руки и ноги того же размера, что у обычного игрока. Рост персонажа
задаёт не модель, а команда
/character sizeв пределах вашей расы: аватар уменьшается и увеличивается вместе с персонажем сам. - Текстура в 8 раз подробнее ванильной. Один пиксель обычного скина — это квадрат 8×8, вся развёртка — 512×512. Можно и меньше, но не больше: так рисунки разных игроков одного масштаба.
- Детали небольшие: шляпы, капюшоны, уши, волосы, хвосты, полы плаща, сумки. Ничего, что закрывает обзор другим, меняет силуэт до неузнаваемости или выдаёт себя за чужой аватар.
- До 2 МБ на сервере аватаров. Шаблон весит около 20 КБ, так что места с запасом.
Аватары других игроков у всех по умолчанию на уровне доверия High: детали, анимации и скрипты видны. Если чей-то аватар мешает, понизьте ему доверие в меню Figura, во вкладке Permissions, и напишите мастерам.
Что понадобится
- Figura уже есть в сборке, ставить ничего не нужно.
- Blockbench — бесплатный редактор моделей (программа для Windows, macOS и Linux или версия в браузере).
- Плагин Figura Model Format для Blockbench (по желанию, но удобно): File → Plugins, поиск «Figura», Install. Он добавляет формат модели под Figura, копирование пути к части модели для скриптов и инструменты для уменьшения размера.
- Любой редактор картинок для текстуры: встроенные кисти Blockbench, Aseprite, Krita, Photoshop. Подойдёт любой, который сохраняет PNG с прозрачностью.
- Для скриптов — любой текстовый редактор; удобнее всего VS Code.
Шаблон
Начните с готового шаблона: модель игрока в ванильных пропорциях с текстурой 512×512 и пример съёмной детали — шляпы, которую можно снять и надеть в игре.
В архиве две папки: persephone_classic (обычные руки, 4 пикселя) и persephone_slim
(тонкие руки, 3 пикселя). Возьмите одну. В каждой:
| Файл | Что это |
|---|---|
avatar.json | Название, авторы и описание аватара. Поменяйте на свои. |
avatar.png | Значок аватара в гардеробе Figura. |
model.bbmodel | Модель для Blockbench: голова, тело, руки, ноги, внешний слой и шляпа. |
skin.png | Текстура тела 512×512, её вы и рисуете. |
hat.png | Текстура шляпы: у детали может быть своя картинка. |
script.lua | Прячет обычного игрока и вешает шляпу на колесо действий. |
Распакуйте папку в figura\avatars внутри папки игры. У лаунчера Persephone это
%APPDATA%\.persephone-rp\figura\avatars; проще открыть её из игры: меню Figura → вкладка
Wardrobe → кнопка с папкой (Open avatars root folder). Можно и просто
перетащить папку аватара в окно гардероба.
Рисуем текстуру
skin.png устроена как обычный скин Minecraft, только в 8 раз крупнее: каждая часть тела лежит там же,
где на скине 64×64. Тёмная линия сетки идёт каждые 8 пикселей и отмечает один пиксель ванильного скина. Буквы на
гранях — подсказки, их вы закрасите.
- Быстрый старт: увеличьте свой обычный скин в 8 раз без сглаживания (в редакторе «по соседним пикселям», Nearest Neighbor) и вставьте поверх шаблона. Дальше дорисовывайте детали: складки ткани, швы, волосы, лицо.
- Внешний слой (куртка, рукава, штанины, «шапка» головы) в шаблоне прозрачный. Рисуйте на нём то, что должно чуть выступать над телом: воротник, пряди волос, края одежды. Прозрачные места не видны.
- Держите одну палитру и одно направление света (сверху) на всех гранях — так модель выглядит цельной.
- Сохраняйте PNG с прозрачностью под тем же именем
skin.png.
Модель в Blockbench
Откройте model.bbmodel в Blockbench (File → Open Model). Справа в списке
(Outliner) — группы частей тела. Текстуры подхватятся из папки аватара; если вы
перерисовали skin.png снаружи, нажмите у текстуры в Blockbench «обновить».
Группы и их имена
Figura узнаёт, за какой частью тела следует группа, по началу её имени, с учётом регистра:
| Имя группы начинается с | Двигается как |
|---|---|
Head | голова |
Body | тело |
RightArm, LeftArm | правая и левая рука (видны и от первого лица) |
RightLeg, LeftLeg | правая и левая нога |
Cape | плащ (развевается, даже если плаща у вас нет) |
Поэтому head с маленькой буквы — не голова, а HeadPhones — голова. Новые детали кладите
внутрь нужной группы: уши и шляпа — в Head, сумка и полы плаща — в Body. Тогда
они двигаются вместе с этой частью. Не называйте свои группы с этих слов, если не хотите, чтобы они двигались
сами по себе.
Как добавить деталь
- Выделите группу (например,
Head), добавьте внутрь новую группу (Add Group) с понятным именем латиницей, скажемEars. - Внутри неё добавьте кубы (Add Cube) и подвиньте их на место. Размеры — в «пикселях» ванильной модели: голова 8×8×8.
- Для детали удобно завести свою текстуру, как
hat.pngу шляпы: Textures → Create Texture, размер в 8 раз больше нужного, и раскладка граней Per-face UV, если хотите расставить грани вручную. - Сохраните (Ctrl+S). Figura перезагружает аватар сама, как только файл изменился.
Если делаете модель с нуля, а не из шаблона, выберите формат Generic Model (или
формат из плагина): другие форматы Figura не загрузит. Сменить формат готовой
модели: File → Convert Project. Blockbench-анимации Figura тоже понимает: назовите
анимацию коротко и запускайте из скрипта, например animations.model.wave:play().
Съёмные шляпы, одежда и другие детали
Да, их можно снимать и надевать прямо в игре. Зажмите B: откроется колесо действий Figura. В шаблоне там уже есть кнопка «Шляпа: снять / надеть». Её видят все игроки, а выбор запоминается до следующего входа.
Вот как это сделано в script.lua. Чтобы добавить, скажем, капюшон, допишите в конец скрипта такой
блок, поменяв путь к группе, имена и предмет на кнопке (имя файла настроек, config:setName, в
шаблоне уже задано выше):
local hood = models.model.Head.Hood -- группа Hood внутри Head в model.bbmodel
local hoodOn = config:load("hood")
if hoodOn == nil then hoodOn = false end
hood:setVisible(hoodOn)
function pings.setHood(state) -- пинг выполняется у всех игроков
hoodOn = state
hood:setVisible(state)
end
action_wheel:getCurrentPage():newAction()
:title("Капюшон: надеть")
:toggleTitle("Капюшон: снять")
:item("minecraft:leather_helmet")
:toggled(hoodOn)
:onToggle(function(state)
config:save("hood", state)
pings.setHood(state)
end)
models.model.Head.Hood— путь к группе:model— имя файлаmodel.bbmodel, дальше группы по порядку. Плагин Figura Model Format копирует такой путь из контекстного меню (Copy ModelPart Path).- Имя пинга (
pings.setHood) у каждой кнопки своё. - Кто подошёл к вам позже, узнаёт, надета ли деталь, из повторного пинга: в шаблоне он раз в 10 секунд, добавьте
туда
pings.setHood(hoodOn).
Надеть и показать другим
- В игре нажмите Esc и кнопку с треугольником Figura (Δ) справа.
- Во вкладке Wardrobe выберите свой аватар в списке слева. Теперь он на вас, но видите его только вы.
- Нажмите кнопку загрузки (Upload avatar to the Cloud). Аватар уйдёт на сервер аватаров Persephone, и его увидят все. Аватар с ошибками в скрипте Figura не загрузит, пока их не исправить.
- После правок загрузите снова: другие игроки видят последнюю загруженную версию.
Если не работает
- Аватара нет в гардеробе
- В папке аватара должен лежать
avatar.json(пусть даже пустой), а сама папка — прямо вfigura\avatars, не вложенной ещё в одну папку. - Модель не грузится, ошибка о формате
- Модель не в формате Generic Model: File → Convert Project.
- Красный текст в чате про скрипт
- В сообщении номер строки
script.lua. Частая ошибка — путь к группе не совпадает с её именем в Blockbench (регистр важен). - Failed to parse file name
- Имя файла настроек берётся из названия аватара, а в нём кириллица или знаки. Поставьте в начало скрипта
config:setName("my_avatar"), как в шаблоне. - Другие не видят деталь, которую я надел
- Видимость меняйте через пинг (
pings.…), а не напрямую: иначе изменение видно только вам. - Аватар слишком большой
- Лимит 2 МБ. Чаще всего место съедают текстуры: не делайте их крупнее, чем 8× от ванили, и уберите неиспользуемые. В плагине Figura Model Format есть Tools → Optimize Model.
Подробная документация Figura (на английском): docs.figuramc.org. Если что-то не выходит, спросите мастеров.