Story流程+本地化

This commit is contained in:
SoulliesOfficial
2026-07-24 17:56:30 -04:00
parent b0e0a7d5aa
commit de70870682
250 changed files with 5719 additions and 272966 deletions

View File

@@ -1,323 +0,0 @@
# ChatGPT / Codex 辅助 UI 与美术资产工作流
> 文档状态Active
> 首次建立2026-07-18
> Scope 更新2026-07-18 — Chapter 0 首发Windows、Android、iOS`en`、`zh-CN`、`ja`、`ko`、`vi-VN`
> 适用项目:`ichni Official`
> 关联路线图:`docs/release-readiness-roadmap.md` 的 `UI-001``UI-007`
## 1. 结论
**目前可以使用 ChatGPT/Codex 辅助 ichni 的 UI 优化和美术资产重制,并且不需要先雇佣其他人。** 当前工具可以根据文字或参考图生成、编辑 Raster Image适合制作
- 对话界面背景、章节背景、装饰性插画和氛围图。
- UI Panel、Frame、Divider、Button Skin、Badge 和装饰层的视觉方案。
- Icon 方向探索、Loading Illustration、Placeholder、Sprite Sheet 初稿。
- 根据现有 Mockup 做局部替换、去除元素、改色、扩图、重新构图。
- 从一个成熟页面提炼同系列视觉变体,建立统一风格。
它不能独立保证以下生产要求:
- 自动交付结构准确、命名规范且完全可编辑的 PSD/Figma Layer。
- 像素级一致的多状态组件、精确 9-slice 边界、可靠 Vector/SVG。
- 直接在图片中生成大量正确的中英日韩越正式文本。
- 自动完成 Alpha Edge、Texture Compression、Sprite Slice、Prefab State 和多分辨率验证。
- 自动判断每一项训练/参考/第三方素材的商业许可。
因此推荐“**AI 生成/定向编辑 + 免费图形工具清理 + Codex 自动化检查 + Unity 真机验证**”的混合流程。
本轮只服务 Chapter 0 首发。Chapter 1 的 UI/背景只能在不影响 Chapter 0 的设计、实现、LQA 和三平台性能验证时制作;`IchniCreatorStudio` 不在此工作流范围内。
OpenAI 当前官方说明支持在 Codex 中使用 `$imagegen`,也可以用 Image Generation API 做批量生产;官方建议使用少量参考图、短而具体的 Prompt、一次只做一个定向修改并把复杂文字排版留到设计工具中完成
- [OpenAI Image Generation in Codex](https://learn.chatgpt.com/docs/image-generation)
- [OpenAI Image Generation API Guide](https://developers.openai.com/api/docs/guides/image-generation)
## 2. ichni 当前视觉基线
### 已有优势
- 已形成深蓝、青色高光、轨道/圆环/细线装饰、低饱和背景的可识别风格。
- Start、Chapter Selection、Song Selection、Settings、Dialogue、Summary 都已有整屏视觉参考。
- 多数页面已有拆分 Sprite 和 Prefab 基础,不需要从空白重新设计整个产品。
- 视觉语言与音游、轨道、星空/轨道站意象相符,适合建立 Original Style Guide 后继续扩展。
### 当前风险
- 背景纹理和装饰层偏密集,小字号与低对比标签容易被吞没。
- 多处 Icon-only Control缺少 Hover/Focus/Disabled 和可访问性定义。
- Scene 中混用 `1920×1080``2560×1440` Reference Resolution移动端 Safe Area 尚未建立。
- Runtime `Assets` 中同时存在大体积 PSD、整屏 Mockup 和拆分图,源文件与运行时导出没有清晰边界。
- Scene 仍有硬编码/测试文本;如果文字继续烘焙进图片,会扩大本地化和返工成本。
- 许多 UI Texture 的实际用途、状态和引用尚无 Manifest批量重制容易产生孤儿资产或破坏 Prefab 引用。
## 3. 先建立的三条原则
1. **文字不进入背景图。** 所有会本地化、变化或显示数据的文字都使用 TMP/Localization图片只包含不可读的抽象纹理和装饰。
2. **先拆 UI 责任,再生成图片。** AI 不负责决定 Screen Flow、信息层级和 Interaction State先完成 UI Inventory 和 Design Tokens。
3. **每次只验证一个小批次。** 先做 Dialogue Pilot进入 Unity 验证后,再扩到其他 Screen避免批量生成一套无法切片或不可读的资产。
## 4. 免费工具组合
| 任务 | 推荐工具 | 用途 |
|---|---|---|
| 生成与定向修改 | ChatGPT/Codex `$imagegen` | Background、Illustration、Panel/Frame 方案、局部编辑 |
| 批量生成 | OpenAI Image Generation API | 经 Pilot 批准后的受控批次与变体 |
| Raster 清理 | Krita / GIMP / Photopea | Mask、Alpha、Layer、Color、Edge Cleanup、PSD 导出 |
| Vector/Icon | Inkscape | 几何 Icon、SVG、可缩放线条和 Logo 形状 |
| Unity 集成 | Unity Sprite Editor / SpriteAtlas | Slice、Border、Packing、Compression、Prefab State |
| 自动验证 | Codex 编写 Editor Tool / CI Validator | Naming、Dimensions、Import Settings、Missing Reference、Build Size |
不雇佣其他人的可行性取决于 Scope背景、Panel、装饰和有限 Icon 可以由现有团队完成如果要求大量高精度角色立绘、复杂动画、Logo 品牌系统或多章节插画,仍应先缩小首发资产数量,而不是让 AI 无限制扩张内容。
## 5. 资产生产管线
### Stage A — UI Inventory
在生成任何新资产前,为每个 Screen 建立清单:
| Field | 示例 |
|---|---|
| Asset ID | `UI-DIALOG-BG-001` |
| Screen | Dialogue |
| Role | Background / Frame / Panel / Button / Icon / Decoration |
| Current Path | `Assets/Sprites/UITextures/...` |
| Prefab/Scene References | Dialogue Prefab、`MenuScene` |
| State | Normal / Hover / Pressed / Selected / Disabled / Focused |
| Size / Aspect | 2560×1440、9-slice、64×64 等 |
| Locale Text | 必须为 `None`,文字由 TMP 承担 |
| Replace / Keep | 要替换的层与必须保留的层 |
| Owner / Status | TODO / REVIEW / APPROVED / IN UNITY / DONE |
Inventory 完成后,才能判断哪些整屏图片只是 Reference哪些 Sprite 被 Runtime 真正引用。
### Stage B — Lightweight Art Bible
至少定义:
- Color TokensBackground、Surface、Primary Cyan、Secondary Blue、Warning、Error、Disabled、Text Levels。
- TypographyTMP Font、Size Scale、Line Height、CJK/Latin Fallback、数字样式。
- ShapeCorner Radius、Line Width、Panel Border、Cut Corner、Orbit Motif 使用密度。
- Spacing4/8 px Grid 或项目选择的统一 Grid。
- Lighting高光方向、Glow 强度、是否允许 Bloom-like Edge。
- TextureNoise 粒度、背景对比、装饰透明度上限。
- Motion出现/消失时长、Easing、Focus/Selected 反馈。
- Accessibility最小文字尺寸、最低对比、状态不能只依赖颜色。
描述风格时使用原创特征,例如:
> Original dark navy and cyan sci-fi rhythm-game interface, restrained orbital-line motifs, layered translucent panels, precise geometric framing, quiet star-field ambience, high readability, no text, no logo, no imitation of any named artist or franchise.
不要要求模仿具体在世艺术家、品牌或游戏的独特风格。
### Stage C — Decompose Full-screen Mockup
整屏 UI 应拆成以下层:
1. `Background`:全屏、无文字、低信息密度,可按 Aspect Crop/Extend。
2. `Atmosphere`Glow、Dust、Stars、Fog必要时独立以控制透明 Overdraw。
3. `Structural Frame`:顶栏、底栏、边框、轨道线;优先 Vector 或 9-slice。
4. `Panel Skin`:可重复使用的 9-slice Surface不给每个 Screen 单独生成一张。
5. `Decorative Overlay`:非交互性的角花、圆环、扫描线;数量要受性能预算约束。
6. `Interactive Components`Button、Tab、Slider、Toggle、Dropdown每个状态明确。
7. `Icons`:统一 Grid、Stroke、Padding、Optical Weight。
8. `Text/Data`:全部由 TMP、Localization 和 Runtime Data 渲染。
AI 最适合负责 1、2、5 和部分 3/4 的视觉素材6、7 最终应由规则化组件和 Vector/手工清理保证一致性。
### Stage D — Generate / Edit
每次请求必须包含四部分:
1. **Context**:它属于哪个 Screen、玩家在做什么。
2. **Keep**:现有参考图中必须保留的构图、色彩或留白区域。
3. **Change**:本轮只改变什么。
4. **Output Contract**尺寸、Aspect、Alpha、是否 Tileable、是否无文字、留白和导出用途。
示例:
```text
Using the attached ichni dialogue mockup as a visual reference, create an original
2560x1440 dialogue background layer only. Keep the dark navy/cyan palette, orbital
line motifs, and the quiet sci-fi station atmosphere. Remove every panel, portrait,
button, icon, logo, and all readable text. Reserve calm low-detail negative space in
the lower 38% for the dialogue panel and on the left 28% for a character portrait.
Avoid bright focal points behind future text. Full-bleed raster background, no frame,
no watermark, no embedded typography.
```
Panel Skin 示例:
```text
Create one original transparent PNG UI panel skin for ichni: a dark navy translucent
surface with a restrained cyan 2 px geometric border and subtle cut corners. Front
view, perfectly rectangular, symmetrical, no perspective, no glow outside the canvas,
no text, no icon, no logo, large clean center, designed for 9-slice use. Provide one
normal-state asset; do not create a screen mockup.
```
局部编辑示例:
```text
Edit only the highlighted upper-right decoration. Reduce its brightness and visual
density by about one third so it no longer competes with the title. Keep all other
pixels, dimensions, palette, composition, and transparency unchanged.
```
如果结果不理想,下一轮只提出一个具体修改,例如“扩大底部留白”“降低背景亮点”“保持边框不动,仅移除文字”,不要同时重新设计所有层。
### Stage E — Cleanup and Export
AI Output 进入 Unity 前必须经过:
- 删除假文字、Watermark-like Shape、脏边和随机不可解释细节。
- 检查 Alpha Premultiplication、半透明边缘和深色背景 Halo。
- 几何边框重新拉直;需要精确重复的形状用 Inkscape/Krita 重建。
- 对 9-slice 资产保证四角固定、边缘可拉伸、中心无不可拉伸纹理。
- 保留 Working SourceKrita/PSD/SVG与最终 PNG不要只保存聊天输出。
- 生成时的 Prompt、Reference、Model/Date 和人工修改说明进入 Manifest。
推荐未来目录:
```text
ArtSource/
UI/
Dialogue/
Working/
References/
Prompts/
Assets/
Sprites/
UITextures/
Dialogue/
Backgrounds/
Panels/
Icons/
```
`ArtSource` 是否放在主 Git、Git LFS 或独立美术仓库应另行决定。在完成引用审计之前,不要直接移动当前 PSD/PNG先复制、重新导出、替换引用再删除旧资产。
### Stage F — Unity Import
推荐默认值需按目标平台复核:
| 类型 | Texture Type | Mip Maps | Alpha | Compression | 备注 |
|---|---|---|---|---|---|
| UI Background | Sprite (2D and UI) | Off | 按需 | 平台压缩 | 控制 Max Size避免不必要的 Alpha |
| Panel / Button | Sprite (2D and UI) | Off | On | 高质量/平台适配 | 配置 Border验证 Pixel Edge |
| Icon | Sprite (2D and UI) | Off | On | 高质量 | 统一 PPU、Padding、尺寸 |
| Repeatable Pattern | Sprite / Default | 视 Shader | 按需 | 平台适配 | 验证 Wrap Mode 与 Seams |
集成检查:
- Sprite 引用落在 Prefab而不是只在 Scene 内临时替换。
- Button 的 Normal/Highlighted/Pressed/Selected/Disabled/Focused 状态齐全。
- Dynamic Batching 不是透明 UI 性能解决方案;用 Canvas 分组、Atlas、覆盖面积和 Overdraw 实测。
- 进入 SpriteAtlas 后检查 Padding、Alpha Bleed、Build Size 和首屏加载。
- 目标 Locale 文本使用 TMP Overlay 验证,不得回到烘焙文字。
### Stage G — Review and Approve
只有同时通过四个 Gate 才能标记 `APPROVED`
1. **Visual Gate**:符合 Art Bible、层级清楚、不抢文字、同系列一致。
2. **UX Gate**信息与交互优先级正确所有状态可识别Keyboard/Controller/Touch 可用。
3. **Technical Gate**尺寸、Alpha、9-slice、Import、Atlas、Memory、Overdraw、Safe Area 合格。
4. **Rights Gate**来源、Prompt、Reference 权限和人工修改有记录,没有未经授权的 Logo/角色/商标。
## 6. 推荐的 Dialogue Pilot
第一轮只制作以下资产:
- `UI-DIALOG-BG-001`:无文字 Dialogue Background。
- `UI-PANEL-BASE-001`:通用 9-slice Panel Skin。
- `UI-BUTTON-PRIMARY-001`Normal、Highlighted/Focused、Pressed、Disabled 四个 State。
- `UI-DIALOG-DECOR-001`:一组低密度装饰 Overlay。
Pilot 步骤:
1. 从现有 Dialogue Mockup 导出一张 Reference并标记必须保留/删除区域。
2. 为四个资产分别写 Asset Contract不要求一次生成整屏成品。
3.`$imagegen` 生成 24 个方向,只选择一个继续。
4. 在 Krita/GIMP/Inkscape 完成精确 Layer、Alpha、Border 和状态变体。
5. 在一个复制的 Dialogue Prefab/测试 Scene 中集成,避免直接覆盖生产 Prefab。
6.`1920×1080``2560×1440`、16:10、Android 刘海/挖孔设备与 iOS Safe Area 截图对比;首发固定横屏。
7. 对比旧版/新版的文字对比度、Draw Calls、Texture Memory、Overdraw 和加载时间。
8. 只有通过 Review Gate 后,才扩展到 Start、Chapter、Song Selection、Settings、Summary。
## 7. Codex 可以进一步自动化的工作
在 Pilot 规格稳定后,可以让 Codex 实现以下 Unity Editor 工具:
- 扫描 UI Texture 的 Naming、尺寸、Texture Type、Mip Maps、Alpha、Compression、Max Size。
- 输出“Sprite → Prefab/Scene”引用报告辅助安全清理旧 PSD/PNG。
- 读取 Asset Manifest检查缺失 State、Locale Text 烘焙风险和未批准资产。
- 批量创建/更新 SpriteAtlas 和平台 Override但必须先由项目确认规范。
- 生成多分辨率 Screenshot Matrix辅助人工视觉回归。
- 扫描 Scene/Prefab 中硬编码 TMP 文本和缺失 Localization Key。
- 统计 Texture Memory、StreamingAssets 平台冗余与 Build Size 变化。
这些自动化应在 Pilot 确认后编写,否则工具会把尚未决定的美术规范固化到工程里。
## 8. AI Asset Manifest 模板
建议保存为 CSV/JSON至少包含
```text
asset_id
screen
role
source_path
runtime_path
dimensions
alpha_required
slice_border
states
prompt_version
reference_ids
reference_rights
generation_date
manual_edits
unity_import_profile
prefab_references
review_status
reviewer
notes
```
命名示例:
```text
ui_dialog_bg_ch00_v001.png
ui_panel_base_9s_v003.png
ui_button_primary_normal_v002.png
ui_button_primary_focused_v002.png
ui_icon_settings_gear_v001.png
```
不要把“final”写进文件名版本和 Approval 状态由 Manifest 管理。
## 9. 质量与安全红线
- 不生成或保留可识别的第三方 Logo、角色、UI Trade Dress 或受保护品牌元素。
- 不用具体艺术家/游戏名要求模仿;用颜色、构图、材质、密度、光线、形状等可验证特征描述。
- 不让 AI 在资产里生成玩家会阅读的正式文本。
- 不直接覆盖现有生产资产先做新文件、替换引用、A/B 验证,再清理旧资源。
- 不因为“看起来更精细”就接受更高的 Texture Memory、透明覆盖和 Loading 成本。
- 不批量生成大量近似资产;优先复用 Panel、Icon Grid、Token 和 Shader。
- 不把聊天记录当作唯一 Source保存 Prompt、Reference、Working File 和 Export。
## 10. 何时可以开始
满足以下条件即可开始 Dialogue Pilot
- [x] `release-readiness-roadmap.md``DEC-001``DEC-003` 已确认Windows、Android、iOS以及 `en``zh-CN``ja``ko``vi-VN`
- [ ] `UI-001` UI Inventory 至少完成 Dialogue Screen。
- [ ] `UI-002` 有一版可用的 Color/Type/Spacing/Shape Token。
- [ ] 选定一张现有 Dialogue Mockup 作为 Reference。
- [ ] 明确 Pilot 的性能预算,并将 Windows、Android、iOS 横屏与 Safe Area 写入 Asset Contract。
- [ ] 先建立复制的测试 Prefab/Scene不直接覆盖生产资源。
满足后,可以直接让 Codex 执行:
> “按照 `docs/ai-assisted-ui-art-workflow.md`,为 Dialogue Pilot 创建 Asset Contract并使用现有 Dialogue Mockup 生成 `UI-DIALOG-BG-001` 的候选图。”

View File

@@ -0,0 +1,207 @@
# ichni Official 本地化工作流程Unity Localization
## 当前状态
- `LOC-001`:已完成。工作流、范围、命名规则与验收门已确定。
- `LOC-002`:代码实现已完成,等待 Unity Play Mode / Use Existing Build 手工验证。
- 后续阶段:未开始;在 `LOC-002` 验证通过前,不迁移 String Table、Prefab、场景或 I2。
## 1. 目标与边界
本流程用于将项目统一迁移到 Unity Localization并保证首发版本完整支持下列七种语言
| Locale Code | 语言 | 用途 |
| --- | --- | --- |
| `zh-CN` | 简体中文 | 原文与默认回退语言 |
| `en` | 英文 | 首发语言 |
| `zh-TW` | 繁体中文 | 首发语言 |
| `ja` | 日文 | 首发语言 |
| `ko` | 韩文 | 首发语言 |
| `vi-VN` | 越南文 | 首发语言 |
| `th` | 泰文 | 首发语言 |
范围包含菜单、设置、游戏内提示、结算、剧情树、Helper、Tutorial、歌曲元数据与当前 Chapter 0 的 Yarn 对话。
不在本轮范围内:配音、多语言图片资产、章节 1 的未完成剧情、CreatorStudio 的完整 UI 本地化。CreatorStudio 仅在 Theme `TextObject` 的共享数据契约受到影响时同步处理。
## 2. 不可违反的工作规则
1. **一次只执行一个阶段。** 每一阶段完成后,先进行代码构建和 Unity 手工验证,再批准下一阶段。
2. **不直接手改 Unity 自动生成的 String Table `.asset`。** 表、Locale、Addressables 关系通过 Unity Localization Editor 或专用导入工具创建和更新CSV/XLSX 是可审阅的文本源。
3. **迁移期间不删除 I2。** 只有对应界面已切换、所有引用已扫描为零、并完成 Use Existing Build 回归后,才进入删除阶段。
4. **稳定 ID 与显示文本分离。** 解锁 Key、`SongItemData.songName`、Yarn Node 名称、Story Block ID 永远不翻译;只为玩家可见文本配置 Localization Key。
5. **动态文本不拼接。** 使用 Smart String 与命名参数,例如 `"已解锁歌曲:{song_name}"`;参数在弹窗实际显示时解析,以支持语言切换后的队列内容。
6. **每条文本必须有上下文。** 导出给翻译使用的表要包含界面位置、用途、占位符说明、最大长度或布局注意事项。
7. **字体与布局是验收项。** 虽然 TMP 通用字体已准备完成仍必须在七种语言、PC 与移动端实机上检查字形、断行、溢出与字号。
## 3. 表结构与 Key 规范
### 3.1 目标 String Table Collections
| Collection | 内容 | 示例 Key |
| --- | --- | --- |
| `UI` | 所有静态菜单、设置、Gameplay 标签与通用按钮 | `ui_common_confirm` |
| `Message` | 解锁、确认、错误及其它运行时动态消息模板 | `system_unlock_song_content` |
| `Chapter0_Content` | Chapter 0 的歌曲显示名、章节元数据、Timeline、Helper 与教程文本 | `chapter0_song_world_for_white_lies_name` |
| `Chapter0_Lines` | Yarn Spinner 自动生成的 Chapter 0 台词与选项 | Yarn `#line` ID |
这四张表按加载生命周期划分,而不是按每一个页面拆分。`Chapter0_Lines` 规模最大,必须保持独立;其它表保持小而稳定。后续章节只新增 `ChapterN_Content``ChapterN_Lines` 两张表。
`UI.csv` 同时保留当前仍被场景或 Prefab 使用的旧 Key直至对应页面完成迁移旧 Key 不得在确认没有引用前从 Unity Table 或 CSV 中删除。
### 3.2 Key 命名
- 仅使用小写英文、数字和下划线。
- 格式为 `<域>_<模块>_<语义>`,不包含显示语言或版本号。
- 不把原文、屏幕坐标、Prefab 名称写入 Key。
- `*_title``*_content``*_desc` 成对出现时必须共享同一语义前缀。
- 智能字符串只允许命名参数:`{song_name}``{count}``{chapter_name}`;禁止 `{0}` 和 C# 字符串拼接。
## 4. 执行阶段与验收门
### LOC-001基线盘点与迁移冻结当前阶段
**操作**
- 保存本文件并建立文本资产、I2 引用、硬编码文本、Yarn 表和现有 Locale 的清单。
- 为每个待迁移对象标注目标 Collection、Key、上下文和责任阶段。
- 确认 `zh-CN` 作为原文、七种 Locale 作为首发范围、TMP 通用字体作为字体基线。
**不得操作**
- 不改运行时代码、Prefab、场景、String Table、I2 文件或 Addressables。
**验收**
- 清单明确列出所有 I2 依赖入口和所有已存在的 Unity Localization Collection。
- 后续阶段有明确的输入、输出、回滚边界与手工测试项。
### LOC-002运行时本地化基础层
**操作**
- 将设置存档的语言选择从不稳定的 `languageIndex` 迁移为 `languageCode`,并保留旧索引到旧顺序的单次迁移逻辑。
- 保留现有 Unity Localization 官方 `InitializationOperation` 流程;不得重新引入自定义 Bootstrap 或被阻塞的场景预加载。
- 新增统一的异步文本解析入口,供动态 UI、Story 元数据与弹窗使用。
**验收**
- 删除 `SettingsSave` 后,系统语言和默认 `zh-CN` 均可稳定启动。
- 七个代码可从设置界面切换,切换后 `LocalizedString` 自动刷新。
- Windows/Android/iOS 的 Use Existing Build 均不出现 String Table 长时间 `0%` 加载。
### LOC-003表与导入流水线
**操作**
- 由内容维护者在 Unity Localization Editor 中手动创建并维护四个 Collection以及全部七个 Locale 的表。
- 代码与内容侧只维护版本控制中的 UTF-8 CSV 源表;由内容维护者将 CSV 转录到对应的 Unity Table。
- 每次转录前校验 Key、Yarn 行 ID、缺失翻译、重复 Key 与 Smart String 占位符。
**验收**
- 四张 CSV 与对应 Collection 同名,列顺序统一为七种首发 Locale。
- CSV 校验可报告缺失翻译、额外 Key、占位符不一致和重复 Key。
- `Message` 至少包含可验证的 Smart String 示例。
### LOC-004静态 UI 与系统文本迁移
**操作**
- 分批迁移 `UI` 中的静态页面、系统按钮与 Gameplay 标签。
- 静态 TMP 文本使用 `LocalizeStringEvent` 或等价的 Unity Localization 组件;动态生成的 Button / Settings 控件改为统一解析入口。
- 迁移 Summary、Pause、确认框、设置项、选曲与章节页可见文本。
**验收**
- 每完成一个页面I2 与 Unity Localization 不会同时驱动同一 TMP_Text。
- 七语切换后页面不出现 Key、空文本、Missing Script 或旧 I2 文本。
### LOC-005动态消息与内容元数据迁移
**操作**
-`MessageUIPage` 队列改为保存 `LocalizedString` 和命名参数,而非已解析的裸字符串。
- `unlock_song` 通过 `Chapter0_Content` 取歌曲显示名,并用 `system_unlock_song_title` / `system_unlock_song_content` 显示提示。
- 迁移歌曲、章节、角色、难度、Timeline Marker、Helper 的可见元数据。
**验收**
- 解锁消息能正确代入任意歌曲名;消息排队期间切换语言后,实际显示时使用新语言。
- ID、存档 Key、Story Block ID 和解锁行为不因翻译改变。
### LOC-006剧情与对话迁移
**操作**
- 使用 Yarn Spinner 的 Unity Localization 导入/导出流程维护 `Chapter0_Lines`;不手写或复用错误的 `#line` ID。
- 导出当前 Chapter 0 全部台词、选项与行 ID填入七种测试翻译。
- 将 StoryData 的标题、Marker、Helper 对话等非 Yarn 文本迁入 `Chapter0_Content`
**验收**
- 每种语言均可打开所有已配置 TextBlock选项、跳转、变量、回滚和历史记录正常。
- Yarn 行 ID、节点名称和命令参数没有被翻译或改写。
### LOC-007Theme TextObject 与 CreatorStudio 契约
**操作**
- 将 Official Theme `TextObject` 的 I2 调用替换为 Unity Localization同时保留 `isLocalized` / `content` 的序列化含义。
- 对应更新 CreatorStudio 的共享 `TextObject_BM` 读写契约,但不在 Creator 中维护第二套权威翻译表。
- 重建 Windows、Android、iOS Theme AssetBundle。
**验收**
- 旧 BM / Bundle 可安全读取;本地化文字在三个目标 Bundle 中正确显示。
- Bundle Manifest 与运行时日志均不存在 `I2.Loc` 类型引用。
### LOC-008I2 清理
**操作**
- 先导出 I2 旧表作为只读迁移备份。
- 逐项确认所有场景、Prefab、脚本、Theme Bundle 和 Creator 共享元素已无 I2 引用。
- 删除 `Assets/I2`、根目录 I2 配置及依赖代码;将 `SimpleJSON` 用途迁至项目已有的 Newtonsoft JSON。
**验收**
- 全项目扫描 `I2.Loc``LocalizationManager``Localize` 均无业务引用。
- 打开场景无 Missing Script三平台构建通过。
### LOC-009七语翻译完成与发布 QA
**操作**
- 完成当前 UI、系统消息、内容元数据、Chapter 0 测试剧情的七语翻译。
- 执行占位符、字体、长度、断行、输入、回退、保存与 Addressables 回归。
- 冻结当前字符串;新文本必须走 CSV -> Review -> Import 流程。
**验收**
- 每个 Collection 在七种语言中均无缺失条目和占位符错误。
- PC、Android、iOS 依次验证默认语言、切换语言、重启持久化、剧情、解锁、选曲、结算、设置。
- 文本溢出和文化语义问题归零或有明确的发布豁免记录。
## 5. 阶段执行模板
每一阶段均按以下顺序执行:
1. 只读复查相关代码、Prefab、场景和当前 String Table。
2. 输出该阶段的精确文件清单、风险和回滚方法。
3. 只修改该阶段授权范围内的文件。
4. 执行 C# 构建与定向文本扫描。
5. 提供 Unity 手工测试清单;在用户确认通过前,不进入下一阶段。
## 6. 关键回归场景
- 首次启动、系统语言匹配、默认 `zh-CN` 回退。
- 设置页连续切换七种语言并立即关闭/重开游戏。
- Use Asset Database 与 Use Existing Build 的 Menu -> Story -> Song -> Game 全路径。
- MessageBox / SelectionBox 排队时切换语言;歌曲解锁时显示本地化歌曲名。
- Story Timeline、Helper、TextBlock、TutorialBlock、SongBlock、Dialog History、回滚 Marker。
- 结算页、暂停页、设置页、章节选择、选曲页在窄屏手机和 PC 窗口模式下的溢出检查。
## 7. 当前阶段后的下一步
LOC-001 完成后,先单独提交并评估 **LOC-002运行时本地化基础层**。它只涉及语言存档契约、统一动态文本解析入口和初始化回归,不触碰 I2、Prefab 或现有 String Table 内容。

View File

@@ -0,0 +1,667 @@
# Stable Diffusion / Nova Anime XL 剧情插画工作流
> 文档状态Active
> 建立日期2026-07-24
> Scope 更新2026-07-24 — 用户确认商业使用权限;取消逐图许可 Gate固定 ichni 通用生成参数
> 适用项目:`ichni Official`
> 当前范围剧情与音乐相关的静态插画主角“曦”的人物一致性Stable Diffusion WebUI Prompt 编写与人工生产流程
> 当前模型基线:`Nova Anime XL — IL v19.0`
> 本轮验证边界:已核对 WebUI 官方用法、Civitai 模型/API 元数据、作者推荐参数和参考图技术属性;尚未在用户本地 WebUI 中实际生成图片
## 1. 结论
目前已经可以跑通“**用户提供画面 Brief → Codex 输出 Positive / Negative Prompt 与参数 → 用户在 WebUI 生成候选图 → 返回原始 PNG/PNG Info → Codex 单变量迭代**”的协作流程。
本工作流固定使用 `Nova Anime XL`**Illustrious 分支**。截至 2026-07-24模型页当前最新版本为 `IL v19.0`不能只记录“Nova Anime XL”也不能把 Pony 分支的 `score_9` Prompt 前缀混入本项目基线。
后续每次插画请求Codex 应交付:
1. 可直接粘贴到 WebUI 的英文 Positive Prompt。
2. 可直接粘贴到 WebUI 的英文 Negative Prompt。
3. 完整参数表Checkpoint、VAE、Sampler、Steps、CFG、尺寸、Seed、Hires、Denoising 等。
4. 本轮“固定项 / 可变项 / 唯一实验变量”。
5. 人物一致性、构图与后期处理风险。
正式资产不能只保留聊天中的 Prompt必须保存原始 PNG、PNG Info、模型/Embedding 哈希、参考图和人工修改记录。
## 2. 证据与来源
本工作流使用以下一手资料:
- [Nova Anime XL 模型页](https://civitai.com/models/376130/nova-anime-xl)
- [Civitai Model APIModel 376130](https://civitai.com/api/v1/models/376130)
- [Civitai Model Version APIIL v19.0 / 2940478](https://civitai.com/api/v1/model-versions/2940478)
- [Civitai在 AUTOMATIC1111 中使用模型](https://github.com/civitai/civitai/wiki/How-to-use-models#automatic1111)
- [AUTOMATIC1111 Stable Diffusion WebUI](https://github.com/AUTOMATIC1111/stable-diffusion-webui)
- [AUTOMATIC1111 WebUI Features / SDXL / Hires. fix / PNG Info](https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Features)
- [AUTOMATIC1111 Command Line Arguments and Settings](https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Command-Line-Arguments-and-Settings)
用户已确认当前模型 Profile 的商业使用权限。后续不对每张图重复进行模型许可检查;只有更换 Checkpoint、Embedding、LoRA 或其他外部资源时,才重新建立对应的资源记录。
## 3. 模型基线
### 3.1 固定版本
| Field | Project Baseline |
|---|---|
| Model | `Nova Anime XL` |
| Civitai Model ID | `376130` |
| Branch / Version | `IL v19.0` |
| Civitai Version ID | `2940478` |
| Base Model | `Illustrious` |
| Type | `Checkpoint` |
| File | `novaAnimeXL_ilV190.safetensors` |
| Format | `SafeTensor`, `pruned`, `fp16` |
| Approx. Size | `6.46 GiB` |
| AutoV2 / Model Hash | `FA486CAAFC` |
| SHA256 | `FA486CAAFC330F133605D3C18B418D183812F14946631C6544BFB28730DB6D6F` |
| Version Published | `2026-05-12` |
`IL v19.0` 的作者变更说明强调更高的对比度和更丰富的背景细节。它由 Illustrious / NoobAI 系谱组合而来,所以本项目采用 Illustrious Prompt 语法。
不要混用:
- Pony 分支的 `score_9, score_8_up...` 前缀。
-`XL v1.0` 的 SDXL 1.0 基线参数。
- 其他 Nova / Anima 模型的 Prompt 或哈希。
如果用户实际安装的不是 `IL v19.0`,必须先报告文件名与 Model Hash再为该版本重新建立 Profile。
### 3.2 作者明确推荐
模型页给出的通用设置:
| Parameter | Author Recommendation |
|---|---|
| Sampler | `Euler a` |
| Steps | `2030` |
| Clip Skip | `12` |
| Denoising Strength | `0.650.8`,适用于 img2img 类流程,不是 txt2img 必填项 |
| Illustrious CFG Scale | `46` |
作者给出的 Illustrious Positive 前缀:
```text
masterpiece, best quality, amazing quality, 4k, very aesthetic,
high resolution, ultra-detailed, absurdres, newest, scenery
```
作者给出的 Illustrious Negative 方向包括:
```text
modern, recent, old, oldest, cartoon, graphic, text, painting, crayon,
graphite, abstract, glitch, deformed, mutated, ugly, disfigured, long body,
lowres, bad anatomy, bad hands, missing fingers, extra digits, fewer digits,
cropped, very displeasing, (worst quality, bad quality:1.2), sketch,
jpeg artifacts, signature, watermark, username, simple background,
conjoined, bad ai-generated
```
这些词不是不可修改的咒语。比如角色设定表确实需要 `simple background` 时,就必须从 Negative 中移除它Production Illustration 需要完整背景时再放回。
### 3.3 `IL v19.0` 作者样例的可复现参数
多个 `IL v19.0` 作者样例重复使用了以下组合:
| Parameter | Sample-derived Baseline |
|---|---|
| Base Width × Height | `768 × 1344` |
| Sampler | `Euler a` |
| Steps | `20` |
| CFG Scale | `4.5` |
| Clip Skip metadata | `2` |
| Hires Upscale | `1.5` |
| Hires Steps | `40` |
| Hires CFG Scale | `4` |
| Hires Denoising Strength | `0.4` |
| Final Size | `1152 × 2016` |
注意:
- 作者说明样例由 Diffusers 加自定义 PNG tags 生成,因此不能假定每个字段都与 WebUI 控件一一对应。
- 样例没有可靠记录 Hires Upscaler项目不能擅自把某个 Upscaler 写成“作者推荐”。
- AUTOMATIC1111 文档说明 SDXL 系模型本身已经按倒数第二层 CLIP 输出训练,`Clip Skip` 在 WebUI 中通常不是有效调参杠杆。为追踪作者样例可以记录 `2`,但不应把人物漂移归因于它。
- 模型页没有要求额外 Refiner。项目基线为 `Refiner: None`,避免第二个模型改变角色风格。
- 模型页没有要求外部 VAE。项目从 `VAE: Automatic` 开始;若出现黑图、颜色异常或 VAE NaN再按 WebUI 文档诊断,不预先强制外部 VAE。
### 3.4 Project Pilot 尺寸
以下是项目测试起点,不是模型作者对全部构图的强制值:
| Use | Base Size | Notes |
|---|---|---|
| 角色全身 / 竖版插画 | `768 × 1344` | 与 `IL v19.0` 作者样例一致 |
| 角色半身 / 常规竖版 | `832 × 1216` | 减少过长画幅,适合人物与环境并重 |
| 横版剧情插画 | `1344 × 768` | 接近 16:9 的 SDXL 宽画幅;为最终裁切预留空间 |
| 方形构图测试 | `1024 × 1024` | 适合快速观察人物与风格,不代表游戏最终比例 |
如果最终需要 `1920 × 1080`
1. 优先在 `1344 × 768` 建立构图,不直接以超大尺寸做第一轮。
2. 通过 Hires 或外部高质量 Upscale 得到更大母版。
3. 人工裁切为精确 16:9再 Downsample 到最终尺寸。
4. 不能在未知 UI Safe Area 时默认 Center Crop。
WebUI 要求 Width / Height 为 8 的倍数。构图比例、最终像素和 UI 留白仍以每张图的 Asset Contract 为准。
### 3.5 ichni 通用生成设置
除非单张插画的 Brief 需要不同配置,使用以下 Project Preset
| Parameter | General Preset |
|---|---|
| Checkpoint | `novaAnimeXL_ilV190.safetensors` |
| Expected Model Hash | `FA486CAAFC` |
| VAE | `Automatic` |
| Refiner | `None` |
| Sampling method | `Euler a` |
| Schedule type | `Automatic` |
| Sampling steps | `24` |
| CFG Scale | `4.5` |
| Clip Skip | `2`,仅用于记录与样例对齐;通常不作为 SDXL 调参变量 |
| Seed | 探索阶段 `-1`;选图后锁定 |
| Batch | 每轮共 `4` 张 |
| Face restoration | `Off` |
| Tiling | `Off` |
| Hires. fix | 构图探索阶段 `Off` |
| Hires Upscaler | `Latent (antialiased)` 作为项目起点 |
| Hires upscale | `1.5` |
| Hires steps | `20`;必要时与 `40` A/B |
| Hires denoising strength | `0.4` |
参数调整顺序:
1. 先保持 `Euler a / 24 Steps / CFG 4.5` 不变,只改 Prompt。
2. 选定构图并锁定 Seed 后再启用 Hires。
3. Prompt 已正确但画面仍欠收敛时Steps 可在 `2030` 内调整。
4. CFG 默认保持 `4.5`;提示词遵循不足时最多先试 `5.0`,过度锐化、颜色发硬或细节粘连时降到 `4.0`
5. 不同时改变 Sampling method、CFG、Steps 与 Prompt否则无法判断改善来源。
## 4. WebUI 最小使用流程
本文以 `AUTOMATIC1111 Stable Diffusion WebUI` 为准。
### 4.1 安装 Checkpoint
1.`novaAnimeXL_ilV190.safetensors` 放入:
```text
stable-diffusion-webui/models/Stable-diffusion/
```
2. 在 WebUI 刷新 Checkpoint 列表,必要时重启 WebUI。
3. 在 `Stable Diffusion checkpoint` 中选择 `novaAnimeXL_ilV190`。
4. 生成后在 PNG Info 中确认 Model Hash 为 `FA486CAAFC`,不能只看显示名称。
### 4.2 txt2img
`txt2img` 用于从文字建立新的场景、构图和镜头:
1. 粘贴 Positive Prompt 与 Negative Prompt。
2. 使用本项目 Parameter Profile。
3. 第一轮关闭 Hires`Batch count` 或 `Batch size` 生成 4 个候选。
4. 先评价人物、构图、情绪与音乐关系,不在这一轮追求最终像素细节。
5. 选中候选并锁定 Seed。
6. 每轮只改一个 Prompt Block 或一个参数。
7. 构图批准后再开启 Hires。
### 4.3 img2img
`img2img` 用于保留参考图的部分构图、姿态或设计:
- `Denoising 0.250.45`:项目建议的角色/服装保守修订区间。
- `Denoising 0.450.60`:允许姿态、光线和背景明显变化。
- `Denoising 0.650.80`:接近作者通用建议,但会显著重绘,不适合承诺精确保留“曦”的脸和服装。
以上前两个区间是 **ichni Pilot 建议**,不是模型作者原文。必须用相同 Seed 做小范围 A/B Test。
### 4.4 Hires. fix
AUTOMATIC1111 的 `Hires. fix` 相当于低分辨率构图后再放大并做第二次 img2img。项目流程
1. 低分辨率候选通过构图 Gate。
2. 锁定 Seed。
3. 先测试 `Upscale 1.5`、`Denoising 0.4`。
4. `Hires Steps` 从 `20` 与作者样例的 `40` 做一次 A/B不是越高越好。
5. Upscaler 名称必须写入 Manifest作者样例未提供该字段。
6. 检查眼睛、手、发梢渐变、胸针、包带、裙褶与鞋带是否在第二次采样时改变。
### 4.5 PNG Info 与 Seed
WebUI 会把 Generation Parameters 写入 PNG metadataPNG 可以拖入 `PNG Info` 恢复参数。每个候选必须保留:
- 原始未压缩 PNG。
- Positive / Negative Prompt。
- Checkpoint 与 Model Hash。
- VAE、Embedding、LoRA 与各自哈希。
- Sampler、Scheduler、Steps、CFG。
- Width、Height、Seed。
- Hires 全部字段。
- WebUI 版本与必要 Extension 版本。
发到聊天软件、转成 JPG 或经过某些图像编辑器后 metadata 可能丢失,因此正式记录不能只依靠 PNG metadata。
## 5. “曦”的角色设计锚点
### 5.1 参考图技术状态
当前参考图:
```text
C:\Users\soull\Downloads\ChatGPT Image 2026年7月23日 05_30_41.png
```
已验证属性:
| Field | Value |
|---|---|
| Size | `941 × 1672` |
| Format | PNG |
| Color | sRGB, 3 channels |
| Alpha | **None** |
| Background | 棋盘格已经烘焙进 RGB 像素,不是真实透明背景 |
因此:
- 不要把这张图当透明立绘直接投入 Unity。
- 不要直接用整张图做高权重 img2img棋盘格可能进入新背景。
- 若要做人物 Reference Conditioning应先由人工或获批的图像编辑流程分离人物与棋盘格。
- 本轮没有复制或修改该参考图;它仍位于 `Downloads`,不是可供全体成员长期访问的仓库资产。
### 5.2 视觉观察
参考图与用户描述共同确认:
- 少女,长而飘逸的金发,下段明显渐变为高饱和天蓝色。
- 单根显著呆毛,天蓝色眼睛。
- 灰色露肩上衣、米色背心、深绿色百褶裙。
- 黑色颈链;胸前金色星形胸针。
- 灰色斜挎包与深色包带。
- 双腕黑色手镯/腕带。
- 浅灰色过膝至大腿袜。
- 棕色系带短靴。
“金发 → 蓝色发梢”与“金色星形胸针”是最强的快速识别点。发色不能生成成全蓝、平均双色或随机挑染。
### 5.3 Prompt 不变量
除非用户在某张插画 Brief 中明确批准变化,以下作为人物不变量:
```text
1girl, solo, teenage girl,
very long flowing blonde hair,
(blonde hair fading into light blue at the ends:1.2),
ahoge, sky blue eyes,
gray off-the-shoulder shirt, beige vest,
dark green pleated skirt,
black choker, gold star-shaped brooch,
gray crossbody satchel, black wrist bracelets,
light gray thigh-high socks, brown lace-up ankle boots
```
实际镜头如果只到上半身,仍应保留关键服装和配饰词,但不需要为了不可见的靴子与袜子过度拉长 Prompt。
### 5.4 每张图允许变化
以下应从剧情与音乐 Brief 中提供,而不是写死在人物标准里:
- 表情:`serene expression`、悲伤、警觉、惊讶等。
- 姿态与动作。
- 风向、头发运动幅度。
- 镜头全身、半身、特写、俯视、仰视、Dutch angle。
- 光线Warm / Cold、Rim Light、Backlight、Volumetric Lighting。
- 背景清晰度与 Depth of Field。
- 服装状态或剧情性变化,但必须得到用户明确批准。
用户原始标准 Prompt 中的 `serene expression`、`gentle smile`、`warm light`、`blurry background` 不应作为所有剧情插画的永久人物属性。
## 6. 用户原始 Prompt 与规范化
### 6.1 用户提供的原始版本
```text
1girl, tennage girl, masterpiece, best quality, ultra detailed,
cinematic lighting, soft light, warm light, volumetric lighting,
light particles, blurry background, blonde hair, long hair,
light blue gradient hair tips, flowing hair, ahoge, sky blue eyes,
serene expression, gentle smile, gray off-the-shoulder shirt,
beige vest, dark green pleated skirt, black choker, brooch,
gray crossbody bag, black hand-bracelets, light gray thigh-high socks,
brown lace-up boots, lazypos
```
### 6.2 已识别问题
| Original | Adjustment |
|---|---|
| `tennage girl` | 拼写应为 `teenage girl` |
| `black hand-bracelets` | 更自然、可识别的 tag 为 `black wrist bracelets` 或 `black wristbands` |
| `brooch` | 参考图更明确:`gold star-shaped brooch` |
| `blonde hair` + `light blue gradient hair tips` | 合并并适度加权,避免生成全蓝发 |
| `warm light` | 移入场景/音乐 Block |
| `blurry background` | 移入镜头 Block完整剧情背景不应永久模糊 |
| `serene expression, gentle smile` | 移入剧情表情 Block |
| `lazypos` | 不是普通英文描述,而是外部 Textual Inversion 的 Trigger |
### 6.3 `lazypos` 依赖
`lazypos` 对应另一个 Civitai 资源,而不是 Nova Anime XL 自带词:
- [CivitaiLazy Embeddings / Model 1302719](https://civitai.com/models/1302719)
- [Civitai APILazy Embeddings / Model 1302719](https://civitai.com/api/v1/models/1302719)
| Field | Value |
|---|---|
| Resource | `Lazy Embeddings` |
| Civitai Model ID | `1302719` |
| Version | `lazypos` |
| Version ID | `1833157` |
| Base Model | `Illustrious` |
| File | `lazypos.safetensors` |
| SHA256 | `30866692653CB0063484DEC240BC7971ADC5767753B0CBBE072E2DDD7FF16B81` |
| Trigger | `lazypos` |
若要继续使用:
1. 把文件放入 WebUI 的 `embeddings/`。
2. 在 Prompt 开头写 `lazypos`。
3. 在 Manifest 中记录 Version ID 与 SHA256。
若用户没有安装、没有批准或无法确认版本,应删除 `lazypos`,使用本文档的显式质量前缀。不能把未安装的 Trigger 当普通形容词继续保留。
## 7. Prompt 结构
每个 Positive Prompt 使用以下顺序:
```text
[OPTIONAL_EMBEDDING],
[MODEL_QUALITY_PREFIX],
[SUBJECT_AND_IDENTITY],
[COSTUME_AND_ACCESSORIES],
[EXPRESSION_AND_ACTION],
BREAK,
[STORY_ENVIRONMENT_AND_MUSIC_VISUALIZATION],
[COMPOSITION_AND_CAMERA],
BREAK,
[LIGHTING_ATMOSPHERE_AND_FINISH]
```
推荐质量前缀:
```text
masterpiece, best quality, amazing quality, 4k, very aesthetic,
high resolution, ultra-detailed, absurdres, newest
```
`BREAK` 用来区分人物、场景和灯光语义。需要强调时使用 WebUI 支持的 `(token:weight)`,优先保持在约 `1.11.3`;只有通过 A/B Test 后才继续加权。
Negative Prompt 分成四块:
```text
[STYLE_EXCLUSIONS],
[ANATOMY_AND_QUALITY],
[LAYOUT_AND_TEXT],
[XI_SPECIFIC_DRIFT]
```
不要把所有见过的 Negative 词无限堆叠。Negative 过长会压制需要的特征,并让问题难以定位。
## 8. 可复制的 Smoke Test
这是对协作流程的非剧情、非正式资产测试。用途是确认 Checkpoint、Embedding、角色锚点和参数能正常工作不锁定任何 Chapter 0 画面。
### 8.1 Positive Prompt — 使用 `lazypos`
```text
lazypos, masterpiece, best quality, amazing quality, 4k, very aesthetic,
high resolution, ultra-detailed, absurdres, newest,
1girl, solo, teenage girl, full body, standing,
very long flowing blonde hair,
(blonde hair fading into light blue at the ends:1.2),
ahoge, sky blue eyes, serene expression, gentle smile,
gray off-the-shoulder shirt, beige vest, dark green pleated skirt,
black choker, gold star-shaped brooch, gray crossbody satchel,
black wrist bracelets, light gray thigh-high socks,
brown lace-up ankle boots,
BREAK,
quiet original fantasy observatory terrace at night,
subtle rhythmic ribbons of blue and gold light moving through the air,
wind gently lifting her hair and skirt, calm distant star field,
full body character illustration, centered composition,
boots fully visible, eye-level camera,
BREAK,
cinematic lighting, soft rim light, warm and cool color contrast,
volumetric lighting, fine light particles, detailed background,
slight depth of field
```
### 8.2 Positive Prompt — 无外部 Embedding
把第一行 `lazypos` 删除即可;其余质量词保持不变。
### 8.3 Negative Prompt
```text
photorealistic, realistic, 3d, monochrome,
multiple views, multiple angles, split view, grid view, two shot,
outside border, picture frame, framed, letterboxed, pillarboxed,
text, logo, signature, watermark, username,
glitch, deformed, mutated, ugly, disfigured, long body, lowres,
bad anatomy, bad hands, malformed hands, missing fingers, extra fingers,
extra digits, fewer digits, extra arms, extra legs, conjoined fingers,
cropped, out of frame, boots out of frame,
very displeasing, (worst quality, bad quality:1.2), sketch,
jpeg artifacts, simple background, bad ai-generated,
short hair, bob cut, black hair, brown hair, fully blue hair,
red eyes, green eyes, missing bag, missing brooch
```
### 8.4 第一轮参数
| Parameter | Value |
|---|---|
| Checkpoint | `novaAnimeXL_ilV190.safetensors` |
| Expected Model Hash | `FA486CAAFC` |
| VAE | `Automatic` |
| Refiner | `None` |
| Sampler | `Euler a` |
| Steps | `20` |
| CFG Scale | `4.5` |
| Width × Height | `768 × 1344` |
| Seed | `-1`,先生成 4 个候选 |
| Batch | 共 4 张;按显存选择 Batch count / size |
| Hires. fix | 第一轮 `Off` |
### 8.5 选图后的 Hires 参数
| Parameter | Value |
|---|---|
| Seed | 锁定入选候选 Seed |
| Hires Upscale | `1.5` |
| Hires Steps | 先 `20`,再与 `40` A/B |
| Hires Denoising | `0.4` |
| Hires CFG | `44.5` |
| Upscaler | 使用本机实际选项;必须记录,当前没有作者指定值 |
Smoke Test 的通过标准:
- 金发到蓝色发梢的方向正确,没有变成全蓝发。
- 眼睛保持天蓝色。
- 星形胸针、斜挎包、深绿色裙、灰袜与棕靴可辨认。
- 没有棋盘格、文字、Logo 或双重画框。
- Hires 后没有新增手指、断裂包带、错误鞋带或服装融合。
## 9. 正式插画 Brief
用户每次提供以下信息;不知道的字段可以写“由 Codex 提议”,但剧情事实不得擅自锁定:
```text
Illustration ID:
Chapter / Scene:
Story moment:
Music track:
Music relationship:
- timecode / section:
- intensity:
- rhythm:
- dominant instrument or texture:
- leitmotif / emotional turn:
Characters:
Xi emotional state:
Action:
Environment:
Foreground / Midground / Background:
Composition:
Camera:
Lighting:
Color script:
Must keep:
May change:
Must avoid:
Output use:
Aspect ratio / target pixels:
UI text-safe area:
Reference images and notes:
```
“Music relationship”必须转译为可见信息例如
- Rhythm → 重复形状、光带间距、运动方向。
- Intensity → 对比度、粒子密度、镜头距离。
- Instrument texture → 材质、边缘锐度、光线扩散。
- Harmonic tension → 冷暖冲突、构图失衡、阴影形状。
- Leitmotif → 可重复但受控的原创视觉符号。
不要默认把音符、五线谱或歌词直接画进插画;这通常过于直白,也会产生错误文本。
## 10. 单变量迭代
每轮遵循:
1. 先生成 4 张低成本候选。
2. 只选“最接近正确方向”的 Seed不要求第一轮完美。
3. 对照五项评分:
- Character Identity
- Costume Accuracy
- Story Readability
- Music-to-Visual Relationship
- Composition / UI Safety
4. 下一轮只改变一项:
- 人物权重;
- 表情;
- 动作;
- 镜头;
- 背景;
- 光线;
- Denoising
- Hires。
5. 记录变更前后 Prompt Diff 和参数 Diff。
6. 构图批准后才做 Hires、Inpaint 和人工清理。
如果同一 Seed 连续两轮仍无法保持发色、脸、服装和配饰,不继续无限加权。升级到:
1. 清理后的人物参考图 + 保守 img2img
2. 可选的 IP-Adapter / ControlNet Reference 流程;
3. 经批准后训练专用“曦” Character LoRA。
Prompt-only 能维持设计方向,但不能保证跨多张正式插画的精确人物一致性。
## 11. 已确认的模型使用权限
用户已确认当前 Nova Anime XL 模型允许:
- 不署名使用模型。
- 销售生成的图片。
- 在收费的图片生成服务上运行。
- 在 Civitai 上运行。
- 分享包含该模型的 Merge。
- 分享 Merge 时使用不同的权限设置。
因此本项目不要求“额外实质编辑”作为商业使用或 Release Gate也不对每张插画重复进行同一组商业权限检查。未来仍会根据视觉质量、人物一致性、构图和游戏集成需求正常编辑插画但这属于生产流程不是商业使用前置条件。
只有主动切换到未批准的 Checkpoint、Embedding、LoRA 或其他外部生成资源时,才需要建立新的资源 Profile当前已批准组合不重复复核。
## 12. Asset Manifest
每张正式插画至少记录:
```text
illustration_id
chapter
scene
music_track
music_timecode_or_section
brief_version
checkpoint_name
civitai_model_id
civitai_version_id
model_sha256
webui_version
vae
refiner
embedding_names_and_hashes
lora_names_weights_and_hashes
positive_prompt
negative_prompt
sampler
scheduler
steps
cfg_scale
width
height
seed
hires_upscaler
hires_steps
hires_scale
hires_denoising
reference_ids
generation_date
manual_edits
working_file
export_file
unity_runtime_path
review_status
reviewer
notes
```
推荐状态:
```text
BRIEF
PROMPT_REVIEW
GENERATED_DRAFT
SELECTED
EDITING
TECH_REVIEW
UNITY_REVIEW
APPROVED
REJECTED
```
## 13. 进入 Unity 前的 Gate
最终插画必须同时通过:
1. **Narrative Gate**:符合批准的剧情事实与人物状态。
2. **Music Gate**:视觉节奏与指定音乐段落有明确、可解释的对应。
3. **Character Gate**:曦的发色、眼睛、服装、胸针、包和配饰满足 Brief。
4. **Visual Gate**:没有 AI 假文字、坏手、重复肢体、断裂配件、脏边或随机 Logo。
5. **Reproducibility Gate**Checkpoint、Embedding、Prompt、Seed 与关键参数记录完整。
6. **Technical Gate**尺寸、裁切、Safe Area、色彩空间、压缩、Memory 和目标平台清晰度合格。
在以上 Gate 通过前:
- 不覆盖生产资产。
- 不把图标记为 `final`。
- 不写入 Unity Prefab、StoryData 或 Yarn。
- 不批量生产同系列插画。
## 14. 后续协作入口
用户可以直接使用:
> 按照 `docs/stable-diffusion-nova-anime-xl-illustration-workflow.md`,为以下画面编写 Nova Anime XL IL v19.0 的 Positive Prompt、Negative Prompt 和完整 WebUI 参数。只改变本次 Brief 允许变化的部分,并列出唯一实验变量:
> `[粘贴 Illustration Brief]`
Codex 收到 Brief 后应先输出可复制 Prompt 和参数,不擅自生成 Production Asset也不修改 Unity / Yarn。用户返回候选图与 PNG Info 后,再进入下一轮单变量调整。