Expand card worlds beyond medieval fantasy

This commit is contained in:
2026-06-10 12:08:05 +09:00
parent a1cb2c4d2e
commit d4e87b38c8
8 changed files with 30017 additions and 24690 deletions

View File

@@ -107,26 +107,34 @@ function damageSpec(stage) {
function promptFor(character, stage) {
const spec = damageSpec(stage);
const elementName = character.affinity;
const elementName = {
water: "water/수",
metal: "metal/금",
earth: "earth/지",
fire: "fire/화",
wood: "wood/목",
}[character.affinity] ?? character.affinity;
const adultAppeal =
"adult female fantasy pinup appeal: emphasize large breasts through armor/clothing silhouette, curvy mature body proportions, elegant sensual costume design";
"adult female collectible-card appeal: emphasize large breasts through the armor, uniform, stage outfit, or gear silhouette; curvy mature body proportions; elegant sensual costume design";
return [
"Use case: stylized-concept",
"Asset type: high-resolution individual trading card illustration",
`Primary request: Create a unique full-card illustration for ${character.id} ${character.name}, damage stage ${stage} (${spec.label}).`,
`Subject: adult ${character.gender} ${character.race}, ${character.body}, ${character.title}, ${character.role}, weapon ${character.weapon}.`,
`Subject: adult ${character.gender} ${character.race}, ${character.body}, ${character.title}, ${character.role}, weapon/equipment ${character.weapon}.`,
`World/era concept: ${character.world}; ${character.era}. This roster is not limited to medieval fantasy; characters can come from modern campuses, idol stages, cyberpunk streets, space colonies, sports arenas, mythic fashion worlds, or other time periods.`,
`Signature costume/equipment: ${character.costume}.`,
`Unique appearance DNA: ${character.appearance.faceShape}; ${character.appearance.eyeStyle}; ${character.appearance.noseStyle}; ${character.appearance.lipStyle}; ${character.appearance.skinTone}; ${character.appearance.hairStyle}; ${character.appearance.bodyDetail}; ${character.appearance.bustShape}; ${character.appearance.presence}. Make this face and body clearly different from other cards.`,
`Personality and pose: ${character.personality}; ${character.pose}; ${spec.poseNote}.`,
`Facial expression: ${spec.expression}.`,
`Camera/view variation: ${spec.camera}. Across a character's five damage stages, avoid repeating the same straight-front pose; include front, side, and rear three-quarter views where appropriate.`,
`Adult visual appeal: ${character.appealFocus}; ${adultAppeal}.`,
`Scene/backdrop: fantasy duel arena with ${elementName} elemental atmosphere, no other characters.`,
"Style/medium: polished semi-real painterly TCG key art, high-detail Korean/Asian fantasy mixed with global high-fantasy design, portrait card composition.",
`Scene/backdrop: ${character.scene}; ${elementName} elemental atmosphere; no other characters.`,
`Style/medium: ${character.style}, portrait card composition.`,
"Composition/framing: full body or knees-up character centered, strong silhouette, vertical card art, cinematic but readable.",
`Damage state: ${spec.visual}.`,
`Missing armor/clothing emphasis: ${spec.missingArmor}. Emphasize battle intensity through missing hand, foot, shoulder, and abdomen armor where appropriate.`,
`Continuity: keep this character's face, body type, race, weapon, color motif, outfit silhouette, and elemental identity consistent across all five damage stages.`,
"Constraints: all characters are adults; adult-oriented fantasy card art; sensual silhouette, nudity, and body exposure are allowed when framed as battle damage or defeat; pain expressions, tears, gasping, and small saliva/drool details must read as combat injury reactions; no sexual act; no penetration; no gore; no text; no logo; no watermark.",
`Missing gear/clothing emphasis: ${spec.missingArmor}. Emphasize battle intensity through missing or damaged hand, foot, shoulder, abdomen, hip, and torso gear where appropriate, adapting the damage to this character's era and outfit.`,
`Continuity: keep this character's face, body type, race, weapon/equipment, world/era, costume silhouette, color motif, and elemental identity consistent across all five damage stages.`,
"Constraints: all characters are adults; adult-oriented multi-world card art; sensual silhouette, nudity, and body exposure are allowed when framed as battle damage or defeat; pain expressions, tears, gasping, and small saliva/drool details must read as combat injury reactions; no sexual act; no penetration; no gore; no text; no logo; no watermark.",
"Avoid: childlike appearance, underage cues, malformed hands, extra limbs, cropped head, UI elements.",
].join("\n");
}
@@ -156,6 +164,11 @@ globalThis.__cardExport = {
personality: character.personality,
pose: character.pose,
origin: character.origin,
world: character.world,
era: character.era,
scene: character.scene,
costume: character.costume,
style: character.style,
damageProfile: character.damageProfile,
appealFocus: character.appealFocus,
appearance: character.appearance,
@@ -178,7 +191,7 @@ const manifest = {
})),
expectedImageCount: exported.characters.length * exported.damageStages,
imageSizeTarget: "portrait high resolution, 2048x3072 or better for final production",
safetyStyle: "adult-oriented fantasy pinup combat damage; emphasized mature silhouettes, nudity/body exposure allowed as battle-damage presentation; no minors, sexual acts, penetration, or gore",
safetyStyle: "adult-oriented multi-world pinup combat damage; emphasized mature silhouettes, nudity/body exposure allowed as battle-damage presentation; no minors, sexual acts, penetration, or gore",
characters: exported.characters.map((character) => ({
...character,
art: Array.from({ length: exported.damageStages }, (_, stage) => ({