Sprite Generator
Salidas
Sprites generados y validados, previsualizaciones y artefactos de integración con Godot.
No objetivos
Usar scripts de dibujo locales como sustituto de la generación real de imágenes.
Propósito
Crear sprites 2D orientados a producción a partir de un concepto, una o más imágenes de referencia, o un brief detallado de dirección de arte. El skill es intencionalmente agnóstico en cuanto al estilo: el usuario puede proporcionar una imagen de referencia, una tarjeta de estilo, una captura de pantalla o una descripción vívida, y el flujo de trabajo la convierte en una ejecución reutilizable de generación de sprites con prompts, imágenes de anclaje, una referencia base generada, trabajos de animación/estado, extracción determinista, control de calidad y archivos iniciales para Godot.
El objetivo no es solo hacer una imagen bonita. El objetivo es producir activos que se puedan colocar en un proyecto de Godot con nombres de archivo predecibles, fondos transparentes, atlas limpios, metadatos de fotogramas, hojas de contacto de control de calidad y recursos iniciales de SpriteFrames.
Usa este skill para solicitudes como:
- "Crea muebles para una casa con versiones limpia y sucia".
- "Haz un personaje en este estilo artístico con animaciones de inactivo, caminar, señalar y limpiar".
- "Crea un mapa de habitación de casa de muñecas en el mismo estilo que esta referencia".
- "Genera variantes alternativas de vestimenta/color y mantén las mismas proporciones corporales".
- "Convierte este boceto de objeto en un sprite de prop transparente listo para el juego".
Entradas
Acepta cualquier combinación de estas entradas:
- Imágenes de referencia: hoja de estilo, personaje existente, prop, captura de pantalla, tablero de inspiración, paleta, sprite generado previamente o captura del juego.
- Descripción vívida: nombre del activo, rol, forma, material, color, escala, ángulo de cámara, uso previsto y adjetivos de estilo.
- Tipo de activo:
character,npc,player,furniture,prop,object,map,room,dollhouseospritegenérico. - Animaciones: acciones nombradas, recuentos de fotogramas, direcciones, comportamiento de bucle/una sola vez, duraciones o FPS, y notas de poses especiales.
- Estados y variantes: limpio/sucio, abierto/cerrado, sano/marchito, vacío/lleno, vestimenta A/B, conjunto de colores, niveles de daño, etc.
- Destino de integración: versión de Godot, tamaño de celda, columnas del atlas, escala, cámara de arriba hacia abajo/isométrica/vista lateral y ruta de importación preferida.
Si el usuario omite detalles, infiere valores predeterminados sensatos y facilita la iteración de la salida. No te detengas en cada detalle faltante. Haz una pregunta aclaratoria solo cuando la omisión cause un trabajo costoso incorrecto, como un estilo desconocido, una identidad de personaje desconocida o una lista de animaciones requerida.
Delegación de Generación Visual
El arte real debe generarse con la capacidad de generación de imágenes del entorno, no con scripts locales. En un entorno de skill tipo Codex, delega al skill $imagegen instalado si está disponible. En ChatGPT, usa la herramienta nativa de generación de imágenes cuando el usuario pida crear realmente el activo visual. Los scripts Python incluidos son solo para pasos de producción deterministas.
Pasos deterministas permitidos:
- crear carpetas de ejecución y archivos de prompt
- copiar referencias estables en la ejecución
- crear imágenes guía de diseño
- registrar las salidas generadas seleccionadas
- eliminar un fondo de croma plana
- dividir tiras en fotogramas
- recortar, escalar, rellenar y centrar fotogramas en celdas consistentes
- componer atlas PNG/WebP
- generar hojas de contacto y previsualizaciones GIF
- escribir manifiestos JSON y recursos iniciales de Godot
Límite estricto: no dibujar, pintar, sintetizar, teselar, deformar ni inventar el arte del sprite con Pillow, SVG, CSS, HTML canvas o formas programáticas como sustituto de la generación de imágenes. Los scripts pueden procesar imágenes generadas; no pueden usarse como un generador de arte oculto.
Captura y Bloqueo de Estilo
Cuando se proporciona una referencia de estilo, trátala como la fuente de verdad. Extrae estas cualidades en el plan de prompt:
- ángulo de cámara y perspectiva: frontal, lateral, de arriba hacia abajo, isométrica, 3/4, casa de muñecas, ortográfica
- proporciones: chibi, realista, rechoncho, alto, de juguete, pixelado, pictórico, vectorial plano, renderizado de bajo polígono
- tratamiento de línea y borde: sin contorno, contorno grueso, borde suave renderizado, borde pixelado, borde con sombreado cel
- materiales e iluminación: arcilla, peluche, juguete de plástico, 3D pintado, cel plano, brillante, mate, acuarela, etc.
- paleta y saturación
- política de sombras: ninguna para sprites transparentes a menos que se retenga explícitamente como parte del objeto
- política de fondo: transparente o croma plana para extracción
- escala y legibilidad en el tamaño de celda objetivo
Una fila o estado falla si parece un activo relacionado en un estilo diferente en lugar del mismo activo en el estilo objetivo.
Valores Predeterminados por Tipo de Activo
Personajes/NPCs/Jugadores
Salidas predeterminadas si el usuario no especifica animaciones:
| Animación | Fotogramas | Propósito |
|---|---|---|
idle | 4 | Bucle de respiración/parpadeo; el primer fotograma funciona como pose estática |
walk_down | 6 | Movimiento frontal/hacia abajo |
walk_up | 6 | Movimiento trasero/hacia arriba |
walk_left | 6 | Movimiento lateral hacia la izquierda |
walk_right | 6 | Movimiento lateral hacia la derecha |
Acciones comunes opcionales: point, talk, pickup, carry, clean, use_item, sit, sleep, cry, celebrate, fail, interact, attack, cast, jump, push, pull.
Muebles/Props/Objetos
Salidas predeterminadas si el usuario no especifica estados:
| Estado | Fotogramas | Propósito |
|---|---|---|
clean | 1 | Estado normal/ordenado |
dirty | 1 | Estado sucio/desordenado del mismo objeto |
Estados comunes opcionales: empty, half_full, full, overflowing, open, closed, on, off, healthy, wilted, broken, repaired, selected, highlighted, locked, unlocked.
Mapas/Habitaciones/Casas de Muñecas
La salida predeterminada es un sprite map_base grande o fondo. Para habitaciones, especifica si necesitas una sola capa de arte aplanada o capas separadas como floor, walls, furniture, interactables, path_overlay y collision_reference. No incluyas etiquetas de interfaz de usuario, flechas, líneas de ruta o superposiciones de tutoriales en el arte del mapa de producción a menos que se soliciten como una superposición separada.
Reglas de Fondo y Transparencia
Prefiere fondos de croma plana para la generación cuando la herramienta de imágenes no produzca un canal alfa confiable. La clave predeterminada es #00ff00. El atlas final debe ser PNG/WebP transparente después de la extracción.
Para imágenes fuente generadas:
- usa un color de fondo plano en toda la tira o renderizado del objeto
- mantén el activo visualmente separado de la croma
- evita reflejos o materiales verdes cuando uses clave verde; elige clave magenta o azul si el activo necesita verde
- sin fondo blanco, fondo de tablero de ajedrez, panel de interfaz de usuario, etiquetas, números de fotograma, cuadrícula visible, borde o paisaje
- sin sombras proyectadas, sombras de piso, destellos, halos transparentes suaves, nubes de polvo, líneas de velocidad, estelas de movimiento o efectos sueltos y separados a menos que un efecto opaco pequeño y adjunto sea explícitamente parte del sprite
- cada fotograma debe estar completo, separado, sin recortar y dentro de su ranura
Reglas de Prompting de Animación
Para cada fila/tira de animación:
- solicita exactamente el número de fotogramas declarado
- especifica el diseño: generalmente tira horizontal de izquierda a derecha
- usa una imagen base canónica e imágenes de referencia como entradas de anclaje
- mantén la identidad, proporciones, paleta, material, estilo de contorno/borde y ángulo de cámara consistentes
- comunica el movimiento a través de cambios de pose, no a través de desenfoque, líneas de velocidad, polvo o sombras
- el primer y el último fotograma deben hacer bucle limpiamente cuando
loop=true - para animaciones direccionales, solicita la dirección explícitamente y evita detalles reflejados accidentales si el personaje tiene accesorios laterales
No aceptes una fila si cambia la cara, forma del cuerpo, vestimenta, diseño del prop, estilo de material o escala del personaje en relación con la base.
Plan de Progreso Visible
Para una ejecución normal de activos, mantén una lista de verificación visible para el usuario:
- Preparando la solicitud de activo.
- Creando el aspecto canónico.
- Creando estados y filas de animación.
- Empaquetando para Godot.
Qué significa cada paso:
- Preparando la solicitud de activo: establecer nombre del activo, tipo de activo, fuente de estilo, salidas, tamaño de celda, croma y directorio de ejecución.
- Creando el aspecto canónico: generar o elegir la referencia base que se convierte en el bloqueo de identidad/estilo.
- Creando estados y filas de animación: generar cada trabajo de salida usando la base y las referencias; reparar solo las filas/estados que fallan.
- Empaquetando para Godot: extraer fotogramas, componer atlas, crear hoja de contacto de control de calidad, escribir manifiestos, escribir recurso inicial de
SpriteFramese informar rutas de archivo.
Solo marca un paso como completo cuando el archivo o decisión real exista.
Flujo de Trabajo
1. Preparar una carpeta de ejecución
python3 ./scripts/prepare_sprite_run.py \
--asset-name "Caja de Mercado" \
--asset-type prop \
--description "caja de madera legible con contenido colorido" \
--style-notes "coincidir con la referencia de arte del juego proporcionada" \
--reference /ruta/absoluta/a/la/referencia_de_estilo.png \
--state full:1:"caja llena de artículos":single:once \
--state empty:1:"la misma caja vacía":single:once \
--cell-size 256x256 \
--columns 2 \
--output-dir /ruta/absoluta/a/la/ejecucion
Para un personaje:
python3 ./scripts/prepare_sprite_run.py \
--asset-name "Jugador" \
--asset-type character \
--description "personaje jugador amigable con una silueta clara" \
--reference /ruta/absoluta/a/la/referencia_de_estilo.png \
--animation idle:4:"respiración suave y parpadeo" \
--animation walk_down:6:"caminando hacia la cámara" \
--animation walk_up:6:"caminando alejándose de la cámara" \
--animation walk_left:6:"caminando vista lateral izquierda" \
--animation walk_right:6:"caminando vista lateral derecha" \
--cell-size 256x320 \
--columns 6 \
--output-dir /ruta/absoluta/a/la/ejecucion
Las ejecuciones avanzadas se pueden describir con un archivo de configuración JSON y pasarse con --config.
2. Inspeccionar trabajos listos
python3 ./scripts/sprite_job_status.py --run-dir /ruta/absoluta/a/la/ejecucion
El trabajo base debe generarse primero. Registra la imagen base generada seleccionada antes de generar trabajos dependientes. El registrador escribe references/canonical-base.png, que los trabajos posteriores deben usar como imagen de entrada.
3. Generar cada trabajo visual
Para cada trabajo listo, usa el archivo de prompt listado en imagegen-jobs.json más todas las imágenes de entrada listadas. Selecciona la mejor imagen original generada, luego regístrala:
python3 ./scripts/record_imagegen_result.py \
--run-dir /ruta/absoluta/a/la/ejecucion \
--job-id id-del-trabajo-desde-estado \
--source /ruta/absoluta/a/la/salida-generada.png
No registres accesorios editados a mano, miniaturas o archivos de las carpetas finales/fotogramas de la ejecución como arte fuente. Registra la salida generada original seleccionada.
4. Finalizar
python3 ./scripts/finalize_sprite_run.py --run-dir /ruta/absoluta/a/la/ejecucion
Salida esperada:
ejecucion/
asset_request.json
imagegen-jobs.json
prompts/
references/
decoded/
frames/frames-manifest.json
final/spritesheet.png
final/spritesheet.webp
final/validation.json
qa/contact-sheet.png
qa/previews/*.gif
qa/run-summary.json
godot/<activo>_spriteframes.tres
godot/<activo>_animated_sprite_2d.tscn
godot/godot_import_manifest.json
godot/README_GODOT.md
5. Copiar a Godot
python3 ./scripts/package_godot_assets.py \
--run-dir /ruta/absoluta/a/la/ejecucion \
--project-dir /ruta/absoluta/al/proyecto-godot \
--dest assets/sprites
Revisa godot/README_GODOT.md después del empaquetado. Si copias archivos a una ubicación res:// diferente, actualiza la ruta de textura dentro del archivo .tres generado.
Flujo de Trabajo de Reparación
Si el control de calidad falla, repara primero el alcance más pequeño:
- Un solo estado o fila de animación malo.
- Un solo fotograma malo solo si tu herramienta de imágenes admite la edición a nivel de fotograma de manera confiable.
- La base canónica solo si la identidad/estilo está mal en todas partes.
- El atlas completo solo como último recurso.
Prompts de reparación comunes:
- "Regenera solo
walk_left; conserva el personaje canónico exacto, vestimenta, proporciones y estilo de renderizado de juguete." - "Regenera solo
dirty; debe ser el mismo sofá queclean, pero con la manta/almohadas desordenadas." - "Regenera la tira con exactamente 6 fotogramas y sin números de fotograma ni etiquetas."
- "Usa croma magenta porque el objeto necesita material verde."
Después de registrar la imagen de reparación, vuelve a ejecutar la finalización.
Rúbrica de Control de Calidad
No aceptes un activo hasta que estas comprobaciones se superen:
- La base generada coincide con el estilo solicitado o las referencias de estilo proporcionadas.
- Cada estado/animación es la misma identidad de activo, no un rediseño.
- Los recuentos exactos de fotogramas están presentes.
- La extracción transparente no elimina partes importantes del sprite.
- Los fotogramas están completos, centrados, rellenados y no recortados.
- Sin etiquetas, números de fotograma, líneas de cuadrícula, marcas de agua, paneles de interfaz de usuario o paisajes filtrados en el arte de producción.
- Sin sombras no deseadas, destellos, polvo, líneas de velocidad, desenfoque o efectos separados que permanezcan después de la extracción.
- La hoja de contacto se lee visualmente correctamente en el tamaño objetivo.
final/validation.jsonno tiene errores; las advertencias han sido revisadas visualmente.- Los nombres del manifiesto de Godot coinciden con los nombres de animación que pretendes llamar en el código.
Criterios de Aceptación
Una ejecución completada debe incluir:
- una referencia base canónica en
references/canonical-base.png - fuentes generadas seleccionadas registradas en
imagegen-jobs.json - PNG de fotogramas transparentes extraídos
final/spritesheet.pngy, cuando sea compatible,final/spritesheet.webpqa/contact-sheet.png- previsualizaciones GIF para animaciones de múltiples fotogramas
final/validation.jsonsin errores- archivos iniciales de Godot en
godot/ - un informe breve para el usuario que mencione cualquier fila/estado reparado o aceptado manualmente a pesar de las advertencias
Reglas
- Usa generación visual para imágenes; usa scripts solo para procesamiento determinista.
- Siempre usa una base canónica para activos de múltiples salidas.
- Mantén las referencias adjuntas para cada trabajo visual dependiente cuando la herramienta de imágenes admita referencias.
- Prefiere salida transparente o compatible con croma sobre ilustraciones de escena.
- No pongas etiquetas de interfaz de usuario, flechas instructivas, líneas de ruta o guías de colisión en los sprites de producción a menos que se soliciten como activos de superposición separados.
- Para Godot, mantén los nombres de animación estables y en minúsculas con espacios reemplazados por guiones bajos.
- Prefiere
AnimatedSprite2DsobreAnimationPlayerpara assets de sprites simples. - El método de importación preferido es texture/atlas copiado con archivo
.tres. - Los PDF de hojas de sprites no son compatibles; convierte a PNG/WebP antes de la extracción.
Precauciones de Costos y Tiempo
- Una ejecución de activo simple: ~5-10 generaciones de imágenes.
- Una ejecución de personaje completa con 8+ animaciones: ~15-25 generaciones de imágenes.
- Las reparaciones son más baratas que las regeneraciones completas; usa el flujo de reparación.
- Cada generación desperdiciada debido a un prompt incompleto o incorrecto cuesta tiempo; revisa los prompts en
imagegen-jobs.jsonantes de enviar.