Шлем меняется, и спрайт тоже
Прямоугольники превратились в персонажей. У Мага фиолетовая туника и посох, у Воина латная броня, шлем и длинный меч, а нажатие клавиши меняет стальной шлем на золотой без всякой перезагрузки. Это первый тест видимой экипировки, сделанный на арте, одолженном у Liberated Pixel Cup.
Зачем
Самый большой арт-риск MushRog в том, что экипировка видна на персонаже по частям. Прежде чем художница нарисует хоть одну вещь, игра должна была доказать, что собирает персонажа из слоёв, меняет один из них в реальном времени и анимирует все вместе. У LPC именно такой формат, поэтому мы использовали его, чтобы проверить «проводку», а не чтобы он остался.
Как это работает
Каждый персонаж — это рецепт: список слоёв (тень, тело, штаны, сапоги, торс, волосы, шлем, оружие) с порядком глубины. Сменить экипировку значит сменить картинку одного слоя. Все слои используют одну сетку кадров, так что анимация двигает тело, одежду и оружие синхронно. Ходьба, удар, каст, выпад и получение урона уже работают.
Сетка (размер кадра, строки каждой анимации, количество кадров) лежит в файле данных, и код никогда не опирается на 64 пикселя. Когда художница определит свой стандарт, мы заменим файл и папку со спрайтами.
Скрипт копирует из генератора LPC только используемые слои, проверяет размер листов и заново генерирует титры по таблице авторов самого LPC. Одолженные спрайты в репозиторий не попадают: кто клонирует проект, запускает скрипт и получает такой же прототип, а в версиях остаётся рецепт.
Босс стал мускулистым телом из LPC в двойном масштабе, окрашенным в оранжевый. Некрасиво, но сойдёт, потому что важно, что та же система работает и для врагов.
Смена источника
Мы перешли на официальный репозиторий генератора, который поддерживает организация Liberated Pixel Cup. Формат у него изменился: одна картинка на анимацию и цвета по палитре вместо отдельного файла на каждый цвет. Скрипт экспорта теперь собирает каждый слой в один лист в раскладке игры, а варианты цвета остаются на шейдере. Воин пока лишился длинного меча, ведь большое оружие использует кадры больше 64 пикселей, а игра этого ещё не читает. Он сражается кинжалом, пока это не появится.
Цвет без нового спрайта
В тот же день появился рекалор через шейдер: у слоя можно сдвигать оттенок, насыщенность и яркость на видеокарте. Каждый цвет спрайта превращается ровно в один другой цвет, так что у пиксель-арта то же число цветов и он не размывается. Клавиша H крутит цвет волос, а босс получил огненно-красный тем же путём. Художница рисует волосы один раз, а игра выдаёт все цвета.
Фаза 0 закрыта
Со сменой, реакциями, уклонением, многослойной экипировкой и рекалором, которые заработали, и с внутренним плейтестом, который говорит «понравилось, всё время проигрываю, хочу научиться», фаза 0 выполнила обещанное. Дальше: посадить четырёх человек в одну комнату.
Изменения
- feat(client): layered paper-doll characters from LPC sprites
PaperDoll node builds a character from a layer recipe (data/dolls.json) over a shared frame grid (data/sprite_spec.json) and animates walk, slash, thrust, spellcast and hurt across all layers. tools/lpc_export.py copies only the used sheets from a local LPC generator clone into the gitignored assets/lpc/ and regenerates CREDITS.md. E key swaps the warrior helmet as the live equipment test.
- art: compose sprites from the official LiberatedPixelCup generator
The upstream generator now ships one image per animation and recolors by palette. tools/lpc_export.py composes each layer into the game's single-sheet layout from data/sprite_spec.json; recipes point at layer folders; helmet variants come from the HSV shader. Warrior carries a dagger until oversize weapon frames are supported.