桌游卡面常要保持角色和画风相近,还得把卡名、类别等文字排清楚。可以让图像模型只画插画,再把文字交给排版脚本,避免中文字变形。

这次沿用 s194 的原创狐狸角色图,做三张没有游戏数值的概念卡:行动、事件和角色。先让 ComfyUI 分别编辑同一张参考图,再用 Pillow 合成标题与说明。下载卡面练习包可查看参考图、提示词、生成记录和排版脚本。

1. 先定义卡面差异

三张卡都保留狐狸的橘红毛色、奶油色口鼻与胸口、深青围巾、炭灰上衣、棕靴和斜挎包;分别更换动作、环境和情绪。这里先写卡名、类别和一句说明,暂不设计数值或胜负规则。

卡名 概念类别 插画动作
林间急递 行动概念 沿林间小路奔跑,手里拿空白信封
雨后橡果 事件概念 雨后照料一颗橡果和刚冒出的新芽
岔路守望 角色概念 在林间岔路观察方向,拿着空白地图

把每张图的提示词保存在 cards.json,每次都从同一个参考图独立编辑,避免连续传入上一次结果而累积角色漂移。

2. 用 ComfyUI 生成三张插画

ComfyUI 官方 FLUX.2 Klein 指南列出 4B 图像编辑和 Distilled 编辑工作流;指南说明蒸馏版是 4 步流程。本机 ComfyUI 0.38.0 使用已安装的 Klein 4B Distilled、Qwen 文本编码器和 VAE。klein_edit.py 通过 ComfyUI 本机接口上传参考图、提交编辑图并保存结果。

在练习包目录运行:

python3 batch_card_art.py

脚本按 cards.json 的顺序逐张调用模型,每次都使用 input/fox-reference.png,输出到 output/dash.png、output/sprout.png 和 output/crossroads.png。本机实测依次耗时 88.46、74.53、74.55 秒,合计 237.54 秒;每张均为 880×1168。种子、提示词、耗时和 SHA-256 保存在 evidence/generation.json。需要单独重做时传卡片 ID,例如:

python3 batch_card_art.py sprout

模型不会绘制卡名;提示词也明确要求不要出现字母、数字、边框或水印。目检中,三张图都保留了狐狸的大体配色、围巾与斜挎包,动作和环境也能区分;“雨后橡果”额外画出棕色手套,“岔路守望”的上衣下摆比参考图更长,属于角色细节漂移。空白信封、橡果和地图都能辨认。本组图适合讨论卡面方向,若要形成统一角色设定仍需美术人工校正。

3. 用 Pillow 排版卡片

python3 layout_cards.py

脚本把插画、类别标签、卡名和说明合成独立卡面,并生成三卡预览图。标题和中文说明都是代码绘制的,方便后续替换;改文字时编辑 cards.json,不需要重新生成插画。

三张卡面概念预览三张卡面概念预览

林间急递

林间急递概念卡林间急递概念卡

雨后橡果

雨后橡果概念卡雨后橡果概念卡

岔路守望

岔路守望概念卡岔路守望概念卡

4. 复核和使用边界

  • 核对三张图里的毛色、围巾、上衣和挎包,标记角色外观漂移或不自然姿势。
  • 确认每张图表达的是提示词中的动作;若场景或道具不清楚,先重写该卡提示词,再单独生成。
  • 卡名、类别和说明应清楚、没有乱码,并和插画表达一致。
  • 这组作品只有卡面概念,没有数值、互动规则或平衡性测试;PNG 也没有印刷出血、CMYK 和实体打样检查,不能当作可直接印刷的桌游成品。

来源

本机模型版本、提示词、实际耗时和图片哈希见练习包内 evidence/。官方文档介绍工作流,不保证本机生成结果或印刷效果。