初始仓库迁移
Some checks failed
CI / verify (push) Has been cancelled

This commit is contained in:
2026-04-04 23:57:06 +08:00
parent 80986b790d
commit c49c64896a
18446 changed files with 532435 additions and 2 deletions

View File

@@ -0,0 +1,325 @@
# 游戏 UI / 预设 / 编辑器文本审计
日期:`2026-04-01`
## 范围
- 扫描范围:`src/components/``src/editor/``src/routing/``src/hooks/``src/services/``src/data/`
- 聚焦对象:
- 游戏内实际可见 UI 文本
- 预设编辑器与自定义世界编辑器中的可见文本
- 会直接透出到游戏 UI / 编辑器 UI 的预设原始值
- 未覆盖:
- 图片资源内嵌文字的 OCR
- `docs/` 历史文档本身
- 单纯内部实现用的 import path、className、asset path、纯 id 常量
## 方法
- 先做一轮源码级 AST 扫描,抽取 JSX 可见文本、按钮文案、占位文案、标签文案和常见说明文案。
- 再做一轮“反向解码”复核:
- `瑙掕壊 -> 角色`
- `鍦烘櫙 -> 场景`
- `姝︿緺 -> 武侠`
- `鏈煡 AI 閿欒 -> 未知 AI 错误`
- 结论只保留当前源码里仍然存在的问题,不直接沿用旧审计文档。
## 结论摘要
- 当前仍然有 3 类问题:
1. 真实乱码:主要在 `appRoutes.tsx``AdventurePanel.tsx``CharacterDetailModal.tsx``useStoryGeneration.ts``preset-editor/shared.ts` 和 4 个拆分后的预设面板文件中。
2. 游戏 / 编辑器英文残留:主要在 `AdventurePanelOverlays.tsx``AdventureEntityModal.tsx``PreGameSelectionFlow.tsx``NpcVisualEditor.tsx``ItemCatalogEditor.tsx``StateFunctionEditor.tsx`、自定义世界编辑器几处。
3. 预设原始值直接透出:主要在 `characterPresets.ts``itemDesign.ts``monsterPresets.ts``buildTags.ts``scenePresets.ts``stateFunctions.ts`
- 编辑器侧当前最明显的重灾区不是旧的 `PresetEditorPanels.tsx` 大文件,而是已经拆分出的:
- `src/components/preset-editor/shared.ts`
- `src/components/preset-editor/CharacterPresetPanel.tsx`
- `src/components/preset-editor/SceneNpcPresetPanel.tsx`
- `src/components/preset-editor/ScenePresetPanel.tsx`
- `src/components/preset-editor/MonsterPresetPanel.tsx`
- 游戏主流程里影响最直观的点:
- 路由加载页文本乱码
- 冒险面板里的任务状态 / 对话状态 / NPC 交互短描述乱码
- AI 错误兜底文案乱码
## 一、游戏 UI已确认乱码
| 文件 | 行号 | 当前文本 / 范围 | 说明 |
| --- | --- | --- | --- |
| `src/routing/appRoutes.tsx` | `103-115` | `LOADING EDITOR``LOADING GAME``姝e湪杞藉叆缂栬緫鍣?..``姝e湪杞藉叆鍐掗櫓...` | 路由级加载屏文案。后两段是真乱码;结合反向解码可确定原意分别接近“正在载入编辑器...”和“正在载入冒险...”。 |
| `src/components/AdventurePanel.tsx` | `99``101``103``109``111``113` | `查看库存与价<E4B88E>?``聊聊并试探口<E68EA2>?``看看能得到什么帮<E4B988>?``离开并继续探<E7BBAD>?``战斗决胜<E586B3>?``切磋几招看身<E79C8B>?` | NPC 交互短描述里有多处截断 / 乱码。 |
| `src/components/AdventurePanel.tsx` | `200``203` | `可作为制作材<E4BD9C>?``任务奖励物品可用于后续路线、交易或构筑规划<E8A784>?` | 任务奖励物品说明文本被截断。 |
| `src/components/AdventurePanel.tsx` | `569-571` | `已完<E5B7B2>?``已交<E5B7B2>?``进行<E8BF9B>?` | 任务状态标签乱码。 |
| `src/components/AdventurePanel.tsx` | `771` | `<60>?` | 对话气泡里的屏幕阅读器标签损坏。 |
| `src/components/AdventurePanel.tsx` | `833``837``870` | `剧情推演<E68EA8>?..``对话进行<E8BF9B>?``剧情推理完成继续后显示新的冒险选项<E98089>?` | 加载态 / 流式对话态 / 继续冒险提示都有截断。 |
| `src/components/CharacterDetailModal.tsx` | `35-36``223` | `女<>?``男<>?``属<>?` | 性别标签与“属性”标题乱码。 |
| `src/hooks/useStoryGeneration.ts` | `1214``1266``1409``1549``1978``2325` | `鏈煡 AI 閿欒` | 游戏故事流里 AI 失败时的统一兜底提示乱码;可反解为“未知 AI 错误”。 |
## 二、游戏 UI英文残留
### 1. 冒险面板和奖励弹层
- `src/components/adventure-panel/AdventurePanelOverlays.tsx`
- `554-570``Adventure stats``Current area:``ADVENTURE SUMMARY``enemies defeated``items in inventory``scene transitions so far`
- `622-668``Quest log``Total quests:``No active quests yet.`
- `711-798``QUEST BRIEF``Claim reward``QUEST COMPLETE``Reward ready``Reward pickup is now available in the quest log.``Open quest log`
- `887-1016``Battle reward``Defeated enemies:``BATTLE END``LOOT CACHE``Tap an item icon to inspect its details.``No usable loot dropped this time.``No loot dropped this time.``Rarity:``Quantity:``Slot:``Not equippable``Usable directly``Passive / non-immediate item``Effect preview: HP +``MP +``Cooldown -``Tags:``none`
- `src/components/AdventurePanel.tsx`
- `359-388``REWARD CACHE``Tap an item icon to inspect its details.``Affinity``Currency``No item bounty attached to this quest.`
- `636-638``Current area`
- `803``824`:两个按钮都显示 `Refresh`
### 2. 实体详情、同伴、交易
- `src/components/AdventureEntityModal.tsx`
- `892``898``HP``MP`
- `1073``NPC 信息`
- `1111``敌对NPC``NPC`
- `1163`:数量前缀 `x{item.quantity}`
- `1165``Inspect`
- `1428``NPC 背包`
- `src/components/CompanionCampModal.tsx`
- `177-178``233-234``HP``MP`
- `255``NPC`
- `src/components/NpcModals.tsx`
- `252``273``356``NPC 商品列表``这个 NPC 当前没有可售商品。``NPC 商品`
- `408``效果预览HP +... / MP +... / 冷却 -...`
- `src/components/CharacterDetailModal.tsx`
- `112``数量 x{item.quantity}`
### 3. 开场流程与加载态
- `src/components/game-shell/PreGameSelectionFlow.tsx`
- `48-49``QQ Group``WeChat`
- `81``89``核心NPC`
- `471-473``Wuxia Base`
- `519-527``Custom``Create Custom World``Enter a world setup and let the system generate playable characters, NPCs, items, and landmarks.`
- `src/components/game-shell/CharacterSelectionFlow.tsx`
- `401``Character Details`
- `406``Current Character`
- `src/components/GameCanvas.tsx`
- `32``Loading scene`
- `src/components/GameShell.tsx`
- `859``正在加载 NPC 交互...`
### 4. 运行时文案源头
- `src/data/sceneObservation.ts`
- `9-36` 整段观察结果仍是英文:
- `You pause to listen...`
- `Possible NPCs: ...`
- `Possible hostile NPCs: ...`
- `Possible treasure clues: ...`
- `Boss clue: ...`
- `src/hooks/useStoryGeneration.ts`
- `216``219`:最近战斗 / 最近协作提示仍是英文
- `639-646`:营地聊天结果文本混用了英文句子
- `662-667`:预览对话选项里仍有 `Speak with ...``Focus on the person in front of you first...`
## 三、编辑器 UI已确认乱码
### 1. 共享标签与世界名
- `src/components/preset-editor/shared.ts`
- `42``瑙掕壊`,可反解为 `角色`
- `44``鍦烘櫙`,可反解为 `场景`
- `45``鏁屽 NPC`,可反解为 `敌对 NPC`
- `46``鐗╁搧`,可反解为 `物品`
- `47``鍔熻兘`,可反解为 `功能`
- `53``姝︿緺`,可反解为 `武侠`
- `54``浠欎緺`,可反解为 `仙侠`
- `55``鑷畾涔変笘鐣?`,基本可判定原意是“自定义世界”,但当前字符串已经不完整
### 2. 角色预设面板
- `src/components/preset-editor/CharacterPresetPanel.tsx`
- `79`:空状态 / 顶部说明整段乱码
- `372-373`:装备区标题乱码
- `395-397`:背包区标题乱码
- `446-447`:技能预览相关标签乱码
- `475-477`:技能区提示乱码
- `590-592`:底部说明大段乱码
### 3. 场景 NPC 预设面板
- `src/components/preset-editor/SceneNpcPresetPanel.tsx`
- `87`:空状态整段乱码
- `267`:技能预览空态说明乱码
- `346`:角色 ID 标签乱码
- `352`:怪物预设 ID 标签乱码
- `389`:视觉编辑器说明整段乱码
### 4. 场景预设面板
- `src/components/preset-editor/ScenePresetPanel.tsx`
- `52`:空状态整段乱码
- `220-221`:敌对 NPC 分区标题乱码
- `254-255`:场景 ID 标签乱码
- `298-299`:怪物 ID 列表标签乱码
- `316-317`:关联 NPC 分区标题乱码
### 5. 怪物预设面板
- `src/components/preset-editor/MonsterPresetPanel.tsx`
- `53`:顶部说明整段乱码
## 四、编辑器 UI英文残留
### 1. 预设编辑器主面板
- `src/components/preset-editor/CharacterPresetPanel.tsx`
- `278-279``Character List``Choose a player character, preview it live, and edit the preset fields.`
- `325``Save Character Overrides`
- 多处通用占位仍是 `Section``Editor section.``Field`
- `347``Inventory World`
- `468-484``Skill Loadout``Add Skill`
- `510``Skill ID`
- `651``Character ID`
- `682``Asset Variant`
- `698``Personality`
- `713``Attributes``Adjust the four core character attributes.`
- `772``Unset`
- `798``scene-id-1 / scene-id-2`
- `src/components/preset-editor/SceneNpcPresetPanel.tsx`
- `181-182``NPC Library``Browse and select an NPC preset.`
- `186``NPC ID`
- `223``Save NPC Overrides`
- `230-246``Skill Preview``Preview ranged skills from the linked character.``Skill``World`
- `275-276``Hostile NPCs use monster presets...``Narrative NPCs can preview linked visuals...`
- `318-382``NPC Details``Role``Avatar``Initial Affinity``Description``Visual Editor`
- `src/components/preset-editor/ScenePresetPanel.tsx`
- `145``Scene`
- `172``Save`
- `179-193``Scene Preview``Preview Mode``Monster Preview``NPC Preview``Treasure Preview``Empty`
- `223``230``233``242``None``NPC`
- `248-272``Scene Details``World``Name``Description`
- `288``Unset`
- `src/components/preset-editor/MonsterPresetPanel.tsx`
- `172``Save Monster Overrides`
- `179-180``Monster Override Preview``Editor section.`
- `213-222``Attack Range:``Speed:``HP:``Max HP:`
- `236``Monster ID`
- `242``Name`
- `258``Intro Action`
- `373``FPS`
### 2. 其他编辑器 / 自定义世界
- `src/components/ItemCatalogEditor.tsx`
- `654``HP``MP``CD`
- `677``806``ID`
- `789``Build Buff`
- `458``863``public/Icons``itemOverrides.json`
- `src/components/NpcVisualEditor.tsx`
- `463``702``708``718``NPC`
- `977``Shift`
- `1028-1052``Current loadout:``Unknown headgear``No headgear``Unknown main hand``No main hand``Unknown off hand``No off hand`
- `src/components/CustomWorldEntityCatalog.tsx`
- `139``268``276``349``NPC`
- `224``WORLD DOSSIER`
- `346``MedievalFantasyCharacters`
- `src/components/CustomWorldEntityEditorModal.tsx`
- `242``URL`
- `460``MedievalFantasyCharacters`
- `478-479``730``758-759``AI``AI生成NPC形象``AI生成场景`
- `631-653``NPC`
- `src/components/PresetEditor.tsx`
- `71`:介绍文案里仍然直接显示 `NPC`
- `src/components/StateFunctionEditor.tsx`
- `803``Failed to play preview`
- `818-821``HP``No visible target`
- `915``n/a`
- `1060-1064``Failed to save option behavior overrides``Option behavior overrides saved.`
- `1106`:直接显示原始 `state`
- `1185`:直接把 `AnimationState` 值作为 label
- `1191`:敌对 NPC 反应动画里仍直接显示 `idle` / `move` / `attack`
- `1217`:技能风格仍直接依赖 `steady` / `burst` / `mobility` / `finisher` / `projectile`
## 五、预设 / 数据层:会直接透出 UI 的英文原始值
这一部分不是“源码内部英文就算问题”,而是“当前编辑器或预览没有做显示映射,导致原始英文值直接露给用户”。
### 1. 角色预设
- `src/data/characterPresets.ts`
- 动作文件夹 / 前缀仍是英文:
- `363-379`
- `520-536`
- `739-755`
- `834-850`
- `1019-1038`
- 对话风格原始值仍是英文:
- `384-386``blunt` / `dry` / `direct`
- `541-543``wary` / `dry` / `fragmented`
- `760-762``blunt` / `teasing` / `deflecting`
- `855-857``blunt` / `steady` / `direct`
- `1043-1045``measured` / `steady` / `fragmented`
- 技能风格 / 投射方式仍是英文:
- `407-408``445``473-474`
- `572-573``604-605``636-637``668-669``700-701`
- `791-792``815-818`
- `886``906``926-927``958-959``990-991`
- `1066-1077``1109-1110``1133-1146``1178-1179`
- 这些值当前会在角色预设编辑器、技能预览和部分行为预览里直接露出。
### 2. 物品设计 / Build 标签
- `src/data/itemDesign.ts`
- `56-201``worldAffinity` / `role` / `rarity` 原始值仍是英文,如 `neutral``wuxia``xianxia``fieldcraft``breaker``berserker``legendary`
- `213-219``pieceName` 仍是 `boots``chest``gloves``helm``leggings``shield``weapon`
- `820`:说明文本里仍混入 `build`
- `src/data/buildTags.ts`
- `11-291`:整套 build tag id 都是英文,如 `quickblade``combo``dash``ranged``burst``caster``vanguard``paladin``starter`
- 这些值会进入物品编辑器、构筑标签和相关预览。
### 3. 怪物与掉落
- `src/data/monsterPresets.ts`
- `490-736`:掉落 id、稀有度、tag 原始值大量是英文,如 `rare``uncommon``armor``material``relic``healing`
- `718-736`:有两条掉落本身是完整英文可见值:
- `Consumable` / `Thorn Nectar` / `Sticky sap that can be refined into emergency recovery tonic.`
- `Relic` / `Devour Bloom` / `A predatory blossom that stores concentrated life force.`
### 4. 场景 / 行为 / 锻造 / NPC 交互
- `src/data/scenePresets.ts`
- `349-651`:场景 id 全部是英文连字符格式,如 `wuxia-bamboo-road``xianxia-cloud-gate`
- 当前在编辑器 ID 字段中会直接显示。
- `src/data/stateFunctions.ts`
- `113-372``category` 原始值仍是 `battle` / `recovery` / `escape` / `idle`
- 编辑器预览还会直接显示动画 / delivery 原始值。
- `src/data/forgeSystem.ts`
- `264`:描述里混入 `build`
- `274-281``relic``epic``setId``pieceName` 等原始值会进入物品编辑器链路
- `src/data/npcInteractions.ts`
- `207-209`:兜底对话风格仍是 `measured` / `steady` / `fragmented`
## 六、建议修复顺序
1. 先修最影响主流程观感的真实乱码。
- `src/routing/appRoutes.tsx`
- `src/components/AdventurePanel.tsx`
- `src/components/CharacterDetailModal.tsx`
- `src/hooks/useStoryGeneration.ts`
2. 再修预设编辑器的共享标签和 4 个拆分面板。
- `src/components/preset-editor/shared.ts`
- `src/components/preset-editor/CharacterPresetPanel.tsx`
- `src/components/preset-editor/SceneNpcPresetPanel.tsx`
- `src/components/preset-editor/ScenePresetPanel.tsx`
- `src/components/preset-editor/MonsterPresetPanel.tsx`
3. 再统一清理英文残留。
- 游戏端优先:`AdventurePanelOverlays.tsx``AdventureEntityModal.tsx``PreGameSelectionFlow.tsx`
- 编辑器端优先:`ItemCatalogEditor.tsx``NpcVisualEditor.tsx``StateFunctionEditor.tsx`、自定义世界编辑器
4. 最后做“显示层映射”,避免预设原始英文继续漏到 UI。
- `characterPresets.ts`
- `itemDesign.ts`
- `buildTags.ts`
- `monsterPresets.ts`
- `scenePresets.ts`
- `stateFunctions.ts`
## 七、备注
- 本次结论以当前源码为准,和旧审计文档相比,已有一部分旧问题已经被修掉。
- `src/components/preset-editor/PresetEditorPanels.tsx` 现在只是 re-export 壳文件,真正的问题已经分散到拆分后的 panel 文件里。
- `src/components/preset-editor/shared.ts` 里的几处乱码已经可以明确反解,适合优先直接修正。
- `src/data/` 中很多英文值本身可能是内部枚举,但只要当前编辑器 / 预览没有做中文映射,就仍应视为“会暴露到用户侧”的文本问题。