¿Qué hace Generar Sprite 2D?
Crea el paquete de activos más pequeño que el juego necesita, a su tamaño de visualización real, cámara y estilo. La lógica del juego (colisiones, daño, tiempo) se mantiene independiente del arte.
Cuándo usar
- Cuando se necesita un personaje, criatura, accesorio, objeto, icono o FX como imagen maestra, hoja de sprites o clips.
- Cuando ya existen fotogramas (generados, pintados, dibujados con código) y necesitan clips, paletas o una exportación a un motor.
Cuándo no usar
- Mapas, tiles, terreno, parallax o láminas de escena: generate2dmap.
- Animar un personaje: aprueba una imagen maestra aquí, luego video2dsprite crea un clip por acción (video-handoff.md).
- Arte dibujado con código que el usuario solicitó: codeart2d. Solo una llamada a API o CLI: generate2dmedia.
Verificación de capacidad (una vez por sesión)
Ejecuta python "<skill-dir>/../generate2dmedia/scripts/forge_doctor.py" --host-tools <tools> --save <output>/doctor.json, donde <tools> enumera las herramientas de medios en tu propia lista de herramientas (image_gen, image_edit, image_to_video) o none. Su bloque ROUTES muestra qué claves de API están configuradas (sí o no), la preparación local y el orden resuelto. Si encoding.stdout falla, establece PYTHONUTF8=1.
Fuente de arte
La generación de imágenes es la fuente de arte predeterminada para personajes, criaturas, accesorios, iconos y FX. Regístrala como art_source (api, host_image, existing, o code solo a petición) y nombra la ruta en tu respuesta. Una ruta que el usuario nombre explícitamente tiene prioridad.
- API, cuando hay una clave configurada: OpenAI (
OPENAI_API_KEY), Google Gemini (GEMINI_API_KEY), xAI (XAI_API_KEY), BytePlus Seedream (ARK_API_KEY) o fal.ai (FAL_KEY), en el entorno o en el archivo de configuración del usuario (route-media.md). La clave configurada es el consentimiento del propietario, por lo que no hay pregunta por llamada. - Local: tu propia herramienta de imagen (Codex
image_gen, herramienta nativa de Grok) cuando la tengas; de lo contrario, la CLI de Codex con sesión iniciada del usuario, luego la CLI de Grok. - codeart2d solo cuando el usuario solicite explícitamente arte dibujado con código, o cuando
route_media.pyimprimano-route(código de salida 3). Entonces di "dibujado con código, sin modelo de imagen".
Los FX Hibit son la única excepción: fx_pixelfx.py check los envía a pixelfx cuando el usuario lo tiene instalado (ruta A, FX de terceros dibujados con código, acreditados y divulgados), de lo contrario a la ruta de imagen (ruta B). Consulta hibit.md.
Cada imagen pasa por un comando: python "<skill-dir>/../generate2dmedia/scripts/route_media.py" image --prompt-file <txt> --reference <png> --size 1024x1024 --out-dir <new>. Toma la ruta en ese orden e imprime una línea JSON con route, artifact, sha256 y estimateUsd; resolve --kind image dice qué ruta se ejecutaría. El arte existente que el usuario proporcione siempre es bienvenido. Nunca reclames una generación que no ocurrió; mantén el prompt y el contrato, e informa de una capacidad faltante.
- Acabado: HD es el predeterminado: color completo, alfa limpio, un registro y una reducción de escala de área pre-multiplicada a la altura del juego. El acabado pixel (una paleta compartida, alfa binario, sin tramado) es una opción cuando el usuario solicita pixel art; el acabado hibit (arte plano sin líneas del modelo, luego una paleta de personaje, una reducción de escala por mayoría de votos y un color de contorno tomado de la imagen) cuando quieren el aspecto hi-bit (hibit.md). Nunca le pidas a un modelo de imagen una cuadrícula de píxeles lógica; el aspecto pixel proviene del acabado.
- Personajes: aprueba una imagen maestra por personaje, luego anímalo con video2dsprite: un clip de imagen a video por acción, todos desde esa imagen maestra (
sprite_set.py). Mantén la altura del cuerpo de cada acción desde la pose de reposo de la imagen maestra. - Hojas de sprites son para FX, iconos y accesorios (y fotogramas que el usuario proporcione), no para animación de personajes.
Imagen maestra (toda animación de personaje comienza aquí)
Una imagen maestra aprobada por personaje, luego un clip de imagen a video por acción a partir de ella (video2dsprite); las hojas son para FX, iconos y accesorios. Redacción: prompt-rules.md; comandos, encuadre y master.json: master-still.md.
- Especificación (
--spec <json>y/o banderas):--name,--subject,--identity(largo y preciso),--facing left|right|front|back,--class hero|mob|boss|prop,--finish hd|pixel|hibit(HD predeterminado; pixel o hibit solo cuando se solicita; hibit hace la imagen plana y sin líneas),--identity-ref(PRIMERA imagen, copiada exactamente),--style-ref(SEGUNDA: un sprite par aprobado, solo estilo y encuadre),--key(predeterminado#FF00FF; verde o azul para diseños morados y rosas). - Generar:
python "<skill-dir>/scripts/master_still.py" generate --spec <json> --takes 3 --output-dir <new>. Cada toma pasa por generate2dmediaroute_media.py(primero la clave API, luego el demonio local);takes.pnglas muestra una al lado de la otra. El código de salida 3 significa que no hay ruta: dilo; codeart2d es la alternativa ("dibujado con código, sin modelo de imagen"). Con la propia herramienta de imagen del anfitrión: ejecutamaster_still.py prompty adjunta las referencias listadas en ese orden. - Elegir mirando: identidad, orientación, nada tocando un borde, sin texto.
- Corregir un casi acierto mediante edición, nunca mediante un nuevo intento:
master_still.py edit --run <dir> --take N --change "<un cambio>" --output-dir <new>(o--master <dir>). - Aprobar:
master_still.py approve --run <dir> --take N --output-dir <new>(una imagen de otro lugar:--still <png> --route <lo que la creó>). Clavea la imagen, la recorta con un margen de 6 px, la escala con LANCZOS al encuadre de clase en 1024x1024 (héroe 788 px de alto, margen superior 138 px) y escribemaster.png(opaco, clave pura),master_rgba.pngymaster.json(generate2dsprite.master.v1). - Los pasos de movimiento leen
master.json(identity_recap,facing,finish,class,framing,key,files,transform,route) y nunca vuelven a medir la imagen; cada prompt de clip comienza con "El mismo <identity_recap>".
Informa la ruta desde master.json route. Una advertencia FORGE_ROUTE_MEDIA_FAKE significa que la imagen no es una generación real.
Notas del anfitrión
- Codex:
image_genes tu propia herramienta de imagen; sin una clave configurada, úsala y mira los resultados conview_image. Una imagen hecha en esta sesión que no está en el proyecto:python "<skill-dir>/../generate2dmedia/scripts/cli_media.py" adopt --codex-thread <thread-id> --output-dir <new>, luego procesagenerated.png. codeart2d y generate2dmedia son solo explícitos: abre su SKILL.md cuando este skill redirija allí. - Claude Code: no tiene generador de imágenes integrado:
route_media.pytoma la API o las CLIs locales. Mira cada PNG que hagas con Read; ejecuta herramientas con Bash;<skill-dir>es${CLAUDE_SKILL_DIR}. - Grok: sus herramientas nativas de imagen y video son tus propias herramientas; usa su esquema real.
Comandos
Ejecuta cada herramienta como una sola línea desde la raíz del proyecto del usuario: python "<skill-dir>/scripts/<tool>.py" .... <skill-dir> es la carpeta de este skill; los skills hermanos están a su lado (<skill-dir>/../video2dsprite). Mantén las entradas y salidas dentro del proyecto. Cada herramienta escribe un nuevo --output-dir: rechaza uno existente, se prepara a su lado y publica solo después de sus comprobaciones (--strict-qc / --strict no publica nada en caso de fallo). El éxito imprime una línea JSON; los errores imprimen error: ... y salen con código 1; los errores de uso salen con código 2. Necesita Python 3.10+, numpy y Pillow (se recomienda scipy). --help enumera todas las banderas.
Planificar el activo
Registra identidad y referencia, cámara y orientación, estilo, tamaño de visualización del juego, acabado (HD por defecto, pixel a petición), lista de acciones y fases, bucle o de un solo uso, envolvente de movimiento, raíz compartida y formato de salida. Mantén una imagen maestra aceptada y una escala de fuente a visualización por personaje; los mobs no son más altos que el héroe a menos que se planifique. Una cuadrícula no es suavidad: la separación de poses, el tiempo, la costura del bucle y el contacto con el suelo importan más. Poses, piernas CERCA/LEJOS y tiempo: animation-planning.md.
- Alfa:
native_alphamantiene la transparencia real (un tablero de ajedrez pintado no es alfa);chroma_keyusa magenta plano solo cuando el sujeto no tiene ninguno;opaquemantiene imágenes completas (assemble_frames.py). - Muestreo:
lanczoso un cambio de tamaño de área pre-multiplicada para arte generado;nearestsolo para una cuadrícula de píxeles verificada. Una pintura de alta resolución similar a píxeles no es arte limpio de 32 px. - Una raíz compartida no es un fondo de bbox alfa por fotograma: mantén vuelo intencional, saltos, balanceo y retroceso.
Generar (rutas de imagen)
Escribe el prompt tú mismo (prompt-rules.md; cuadrículas, fases y preajustes en action-recipes.md). Adjunta referencias a través de --reference (o la entrada de imagen real de tu herramienta); una ruta en prosa no es una referencia. Mantén la imagen maestra aceptada en cada generación y describe fases absolutas, no ediciones encadenadas; una corrección es una edición de la imagen aprobada que nombra el único cambio. Genera una familia de acciones a la vez y mantiene los cortes amplios, estelas y proyectiles fuera de la hoja del cuerpo. Verifica la ruta real, el modelo y el tamaño devuelto; nunca los reclames a partir del prompt.
Pipeline
Hojas de sprites (FX, iconos, accesorios): sheet_qc.py spill en la hoja sin procesar, luego generate2dsprite.py process, luego sheet_qc.py frames, luego scale_frames.py, luego build_animation_clips.py, luego export_engine.py. Las acciones de personaje regresan de video2dsprite como clips empaquetados.
| Necesidad | Ruta |
|---|---|
| Planificar una hoja para una herramienta de imagen (aspecto, cuadrícula, guía, prompt) | plan_guide.py --frames N --cycle run --output-dir <new>; adjunta guide.png, pega prompt.txt. Escala fija y línea de pies: make_anchor_layout.py; fotograma seguro vacío: make_layout_guide.py |
| Verificar una hoja sin procesar antes de cortar | sheet_qc.py spill --input <sheet> --rows R --cols C --output-dir <new>; partes que se cruzan significan regenerar con más margen o cortar por propiedad, nunca un filtro de componente más grande |
| Clavear, cortar y registrar una hoja | generate2dsprite.py process --input <sheet> --target asset --mode <mode> --rows R --cols C --output-dir <new> --strict-qc (geometría v2; processing.md) |
| Pixel art dibujado a M px fuente por px de arte | process --resampler nearest --logical-pixel M --pixel-scale N (solo escalas enteras) |
| Saltos, balanceo o retroceso en un punto de registro | process --scale-strategy registered (o --anchor-px X,Y) |
| Escala de un personaje entre acciones | process --write-scale-profile <p.json> en la referencia conectada a tierra, luego --scale-profile <p.json> --max-profile-scale-drift 0.08 |
| El lienzo no se divide en la cuadrícula; otro orden de filas | process --grid-rounding nearest o --pad-to-grid; --direction-order down,up,left,right (modes.md) |
| Identidad, alternancia CERCA/LEJOS, deriva, líneas de base | sheet_qc.py frames --sheet <sheet> --rows R --cols C --cycle run --output-dir <new>; un medio ciclo duplicado significa regenerar la segunda mitad. En fotogramas dibujados con código (art_source=code) identity_residual y torso_drift son informativos |
| Tamaño del juego en un lienzo y raíz, nunca fijado | scale_frames.py --frames <pngs> --root-lock torso-x --row-baseline --emit-clips --ticks N --output-dir <new>; las acciones posteriores agregan --profile <first>/scale-frames.json --action-padding L,T,R,B |
| Clips con tiempo, eventos, transiciones | build_animation_clips.py --manifest clips.json --output-dir <new>; lee las advertencias y review/ (frames-and-clips.md) |
| Fotogramas completos o un bucle de escena (sin claveo) | assemble_frames.py (--key chroma, --slice ownership; --loop-overlap K --ambient solo para bucles ambientales) |
| Paleta compartida, bloqueos, variantes, parpadeo (acabado pixel) | palette_tool.py build, apply, lock, quantize-seq, variants, luts; cuadrícula lógica estricta: pixel_reduce.py (palette-and-pixels.md) |
| Exportación a motor | export_engine.py --clips <animation-clips.json> --target all --output-dir <new>; Sprite3D: --target godot-sprite3d --world-height <units> (engine-export.md) |
| Reproducir clips en un juego (marcha, pausa de impacto, transiciones) | runtime-integration.md |
| Sprites, rigs o FX dibujados con código, solo a petición | codeart2d render_pixelspec.py, rig_animate.py o fx_build.py con --build-clips (nunca process), luego export_engine.py; divulgar como dibujados con código |
| FX para un juego hibit | fx_pixelfx.py check elige la ruta (una ruta que el usuario nombre gana). A, pixelfx instalado (recomendado): fx_pixelfx.py render --pixelfx <checkout> --id <effect> --ramp ... --snap <palette.json>, pixelfx por Patch (MIT, un proyecto separado que el usuario clona), envía CREDITS.txt y divulga como dibujado con código por pixelfx. B, de lo contrario: una hoja FX 2x2 de la ruta de imagen, process --scale-strategy registered --cell-size 512, luego hibit_fx.py pixelize --palette <palette.json> (hibit.md) |
Aceptación
- Revisa en el tamaño del juego: silueta e identidad, contacto y vuelo, costura del bucle o recuperación de un solo uso, alfa sobre claro y oscuro, extremidades, escala entre acciones, raíz y colisionador.
- Cita números para afirmaciones de calidad:
pipeline-meta.jsonmatte.qa(una advertenciakey_ring_spill: agrega--despill-radius 1o--key-quality soft),sheet-qc.json, las advertencias del constructor de clips. El control de calidad numérico encuentra síntomas; nunca aprueba anatomía o movimiento. - Informa cada verificación WARN o FAIL literalmente (id, valor, umbral, archivos) de cada envolvente de QA publicada; nunca digas "todas las verificaciones pasaron" cuando cualquier envolvente publicada tenga una advertencia.
- Entrega el arte fuente aceptado, fotogramas o clips en tiempo de ejecución, vista previa, prompt y procedencia (ruta, modelo,
estimateUsd), QA y límites restantes. Mantén el último paquete aceptado al revisar.
Referencias
processing.md (banderas de proceso, cambios heredados), modes.md, prompt-rules.md, action-recipes.md, frames-and-clips.md, palette-and-pixels.md, engine-export.md, hibit.md, runtime-integration.md, master-still.md, video-handoff.md.