spritesheet-atlas-packing — скилл для Claude Code: обзор
Упаковывает разрозненные изометрические спрайты в единый текстурный атлас с JSON-картой координат и точек привязки.
npx skills add 0xheycat/isometric-game-skills --skill spritesheet-atlas-packing -a claude-codeЧто делает spritesheet-atlas-packing
Отрисовка 200 отдельных файлов приводит к 200 вызовам привязки текстур и тормозит загрузку. Скилл задаёт процесс сборки спрайтов в общую текстуру со сторонами степени двойки, например 2048x2048. Каждый кадр получает отступ в 1-2px, чтобы при дробном зуме соседние кадры не накладывались друг на друга.
На выходе генерируется JSON-файл со структурой name -> {x, y, w, h, anchorX, anchorY}. Без сохранения оригинальных координат anchorX и anchorY сместится позиционирование объектов на игровом поле. Процесс ориентирован на автоматический перезапуск внутри сборщика.
Какие задачи решает
- сократить количество переключений текстур при рендере сотен спрайтов
- устранить артефакты на границах кадров с помощью отступов в 1-2px
- сохранить координаты точек привязки при упаковке графики
- сгенерировать JSON-карту прямоугольников кадров для движка
Примеры запросов агенту
- Собери все спрайты из папки sprites в атлас 2048x2048 и подготовь JSON с координатами
- Упакуй изометрические тайлы с отступом в 2px и сохрани anchorX и anchorY для каждого кадра
- Проверь атлас на артефакты при зуме и выгрузи карту кадров
Как установить spritesheet-atlas-packing
1Через Skills CLI (Vercel)
npx skills add 0xheycat/isometric-game-skills --skill spritesheet-atlas-packing -a claude-code2Вручную: положить файлы
~/.claude/skills/spritesheet-atlas-packing/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/spritesheet-atlas-packing/
1Через Skills CLI (Vercel)
npx skills add 0xheycat/isometric-game-skills --skill spritesheet-atlas-packing -a codex2Вручную: положить файлы
.agents/skills/spritesheet-atlas-packing/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add 0xheycat/isometric-game-skills --skill spritesheet-atlas-packing -a cursor2Вручную: положить файлы
.cursor/skills/spritesheet-atlas-packing/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install 0xheycat/isometric-game-skills spritesheet-atlas-packing2Вручную: положить файлы
.github/skills/spritesheet-atlas-packing/SKILL.md1Через Skills CLI (Vercel)
npx skills add 0xheycat/isometric-game-skills --skill spritesheet-atlas-packing -a gemini-cli2Командой платформы
gemini skills install https://github.com/0xheycat/isometric-game-skills --path skills/spritesheet-atlas-packingВручную: положить файлы
.devin/skills/spritesheet-atlas-packing/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add 0xheycat/isometric-game-skills --skill spritesheet-atlas-packing -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о spritesheet-atlas-packing
Как установить spritesheet-atlas-packing в Claude Code?
Выполните команду npx skills add 0xheycat/isometric-game-skills --skill spritesheet-atlas-packing -a claude-code.
Зачем добавлять отступ в 1-2px между спрайтами?
Без отступа соседние текстуры просачиваются на границах при нецелочисленном масштабировании камеры.
Какую структуру возвращает JSON-карта?
Для каждого именованного спрайта сохраняются координаты x и y, размеры w и h, а также точки привязки anchorX и anchorY.
Исходный текст
SKILL.md · MIT
---
name: spritesheet-atlas-packing
description: Use when packing many isometric sprites into a texture atlas with a JSON map so the engine draws from one image with correct frame coordinates.
license: MIT
---
# Spritesheet & Atlas Packing
## Overview
Drawing 200 separate images means 200 texture binds and slow load. An atlas packs sprites into one image plus a JSON of frame rects. This skill produces an atlas the renderer can index by name.
## When to Use
- You have many individual sprite PNGs to ship.
- Load times or draw calls are high because of separate images.
- The renderer needs named frame lookups.
## Process
1. Collect all cleaned, transparent sprites into one folder.
2. Pad each frame by 1-2px to prevent texture bleeding between neighbors.
3. Pack into a power-of-two atlas (e.g. 2048x2048) using a bin-packer.
4. Emit a JSON map: name -> {x, y, w, h, anchorX, anchorY}.
5. Keep anchors from the source sprites so placement stays correct.
6. Verify every sprite is found by name and renders at the right anchor.
7. Regenerate the atlas automatically in the build (see `asset-pipeline-automation`).
```json
{ "tree_oak": { "x": 0, "y": 0, "w": 128, "h": 160, "anchorX": 64, "anchorY": 150 } }
```
## Rationalizations (Stop Lying to Yourself)
| Excuse | Reality |
|---|---|
| "I will just load images individually" | Hundreds of texture binds kill performance. Pack an atlas. |
| "Padding is unnecessary" | Without padding, neighbors bleed at non-integer zoom. Always pad. |
## Red Flags - STOP if you catch yourself:
- No padding between packed frames (texture bleeding).
- Atlas not power-of-two.
- Anchors lost during packing so placement breaks.
## Verification
You are NOT done until every box is checked:
- [ ] All sprites packed into a power-of-two atlas with padding.
- [ ] JSON map resolves every sprite by name with correct anchor.
- [ ] No texture bleeding at fractional zoom.
© 0xheycat · MIT · 0xheycat/isometric-game-skills