16 KiB
16 KiB
游戏 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 类问题:
- 真实乱码:主要在
appRoutes.tsx、AdventurePanel.tsx、CharacterDetailModal.tsx、useStoryGeneration.ts、preset-editor/shared.ts和 4 个拆分后的预设面板文件中。 - 游戏 / 编辑器英文残留:主要在
AdventurePanelOverlays.tsx、AdventureEntityModal.tsx、PreGameSelectionFlow.tsx、NpcVisualEditor.tsx、ItemCatalogEditor.tsx、StateFunctionEditor.tsx、自定义世界编辑器几处。 - 预设原始值直接透出:主要在
characterPresets.ts、itemDesign.ts、monsterPresets.ts、buildTags.ts、scenePresets.ts、stateFunctions.ts。
- 真实乱码:主要在
- 编辑器侧当前最明显的重灾区不是旧的
PresetEditorPanels.tsx大文件,而是已经拆分出的:src/components/preset-editor/shared.tssrc/components/preset-editor/CharacterPresetPanel.tsxsrc/components/preset-editor/SceneNpcPresetPanel.tsxsrc/components/preset-editor/ScenePresetPanel.tsxsrc/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 |
查看库存与价<EFBFBD>?、聊聊并试探口<EFBFBD>?、看看能得到什么帮<EFBFBD>?、离开并继续探<EFBFBD>?、战斗决胜<EFBFBD>?、切磋几招看身<EFBFBD>? |
NPC 交互短描述里有多处截断 / 乱码。 |
src/components/AdventurePanel.tsx |
200、203 |
可作为制作材<EFBFBD>?、任务奖励物品,可用于后续路线、交易或构筑规划<EFBFBD>? |
任务奖励物品说明文本被截断。 |
src/components/AdventurePanel.tsx |
569-571 |
已完<EFBFBD>?、已交<EFBFBD>?、进行<EFBFBD>? |
任务状态标签乱码。 |
src/components/AdventurePanel.tsx |
771 |
<EFBFBD>? |
对话气泡里的屏幕阅读器标签损坏。 |
src/components/AdventurePanel.tsx |
833、837、870 |
剧情推演<EFBFBD>?..、对话进行<EFBFBD>?、剧情推理完成,继续后显示新的冒险选项<EFBFBD>? |
加载态 / 流式对话态 / 继续冒险提示都有截断。 |
src/components/CharacterDetailModal.tsx |
35-36、223 |
女<EFBFBD>?、男<EFBFBD>?、属<EFBFBD>? |
性别标签与“属性”标题乱码。 |
src/hooks/useStoryGeneration.ts |
1214、1266、1409、1549、1978、2325 |
鏈煡 AI 閿欒 |
游戏故事流里 AI 失败时的统一兜底提示乱码;可反解为“未知 AI 错误”。 |
二、游戏 UI:英文残留
1. 冒险面板和奖励弹层
src/components/adventure-panel/AdventurePanelOverlays.tsx554-570:Adventure stats、Current area:、ADVENTURE SUMMARY、enemies defeated、items in inventory、scene transitions so far622-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 log887-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.tsx359-388:REWARD CACHE、Tap an item icon to inspect its details.、Affinity、Currency、No item bounty attached to this quest.636-638:Current area803、824:两个按钮都显示Refresh
2. 实体详情、同伴、交易
src/components/AdventureEntityModal.tsx892、898:HP、MP1073:NPC 信息1111:敌对NPC、NPC1163:数量前缀x{item.quantity}1165:Inspect1428:NPC 背包
src/components/CompanionCampModal.tsx177-178、233-234:HP、MP255:NPC
src/components/NpcModals.tsx252、273、356:NPC 商品列表、这个 NPC 当前没有可售商品。、NPC 商品408:效果预览:HP +... / MP +... / 冷却 -...
src/components/CharacterDetailModal.tsx112:数量 x{item.quantity}
3. 开场流程与加载态
src/components/game-shell/PreGameSelectionFlow.tsx48-49:QQ Group、WeChat81、89:核心NPC471-473:Wuxia Base519-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.tsx401:Character Details406:Current Character
src/components/GameCanvas.tsx32:Loading scene
src/components/GameShell.tsx859:正在加载 NPC 交互...
4. 运行时文案源头
src/data/sceneObservation.ts9-36整段观察结果仍是英文:You pause to listen...Possible NPCs: ...Possible hostile NPCs: ...Possible treasure clues: ...Boss clue: ...
src/hooks/useStoryGeneration.ts216、219:最近战斗 / 最近协作提示仍是英文639-646:营地聊天结果文本混用了英文句子662-667:预览对话选项里仍有Speak with ...与Focus on the person in front of you first...
三、编辑器 UI:已确认乱码
1. 共享标签与世界名
src/components/preset-editor/shared.ts42:瑙掕壊,可反解为角色44:鍦烘櫙,可反解为场景45:鏁屽 NPC,可反解为敌对 NPC46:鐗╁搧,可反解为物品47:鍔熻兘,可反解为功能53:姝︿緺,可反解为武侠54:浠欎緺,可反解为仙侠55:鑷畾涔変笘鐣?,基本可判定原意是“自定义世界”,但当前字符串已经不完整
2. 角色预设面板
src/components/preset-editor/CharacterPresetPanel.tsx79:空状态 / 顶部说明整段乱码372-373:装备区标题乱码395-397:背包区标题乱码446-447:技能预览相关标签乱码475-477:技能区提示乱码590-592:底部说明大段乱码
3. 场景 NPC 预设面板
src/components/preset-editor/SceneNpcPresetPanel.tsx87:空状态整段乱码267:技能预览空态说明乱码346:角色 ID 标签乱码352:怪物预设 ID 标签乱码389:视觉编辑器说明整段乱码
4. 场景预设面板
src/components/preset-editor/ScenePresetPanel.tsx52:空状态整段乱码220-221:敌对 NPC 分区标题乱码254-255:场景 ID 标签乱码298-299:怪物 ID 列表标签乱码316-317:关联 NPC 分区标题乱码
5. 怪物预设面板
src/components/preset-editor/MonsterPresetPanel.tsx53:顶部说明整段乱码
四、编辑器 UI:英文残留
1. 预设编辑器主面板
src/components/preset-editor/CharacterPresetPanel.tsx278-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 World468-484:Skill Loadout、Add Skill510:Skill ID651:Character ID682:Asset Variant698:Personality713:Attributes、Adjust the four core character attributes.772:Unset798:scene-id-1 / scene-id-2
src/components/preset-editor/SceneNpcPresetPanel.tsx181-182:NPC Library、Browse and select an NPC preset.186:NPC ID223:Save NPC Overrides230-246:Skill Preview、Preview ranged skills from the linked character.、Skill、World275-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.tsx145:Scene172:Save179-193:Scene Preview、Preview Mode、Monster Preview、NPC Preview、Treasure Preview、Empty223、230、233、242:None、NPC248-272:Scene Details、World、Name、Description288:Unset
src/components/preset-editor/MonsterPresetPanel.tsx172:Save Monster Overrides179-180:Monster Override Preview、Editor section.213-222:Attack Range:、Speed:、HP:、Max HP:236:Monster ID242:Name258:Intro Action373:FPS
2. 其他编辑器 / 自定义世界
src/components/ItemCatalogEditor.tsx654:HP、MP、CD677、806:ID789:Build Buff458、863:public/Icons、itemOverrides.json
src/components/NpcVisualEditor.tsx463、702、708、718:NPC977:Shift1028-1052:Current loadout:、Unknown headgear、No headgear、Unknown main hand、No main hand、Unknown off hand、No off hand
src/components/CustomWorldEntityCatalog.tsx139、268、276、349:NPC224:WORLD DOSSIER346:MedievalFantasyCharacters
src/components/CustomWorldEntityEditorModal.tsx242:URL460:MedievalFantasyCharacters478-479、730、758-759:AI、AI生成NPC形象、AI生成场景631-653:NPC
src/components/PresetEditor.tsx71:介绍文案里仍然直接显示NPC
src/components/StateFunctionEditor.tsx803:Failed to play preview818-821:HP、No visible target915:n/a1060-1064:Failed to save option behavior overrides、Option behavior overrides saved.1106:直接显示原始state1185:直接把AnimationState值作为 label1191:敌对 NPC 反应动画里仍直接显示idle/move/attack1217:技能风格仍直接依赖steady/burst/mobility/finisher/projectile
五、预设 / 数据层:会直接透出 UI 的英文原始值
这一部分不是“源码内部英文就算问题”,而是“当前编辑器或预览没有做显示映射,导致原始英文值直接露给用户”。
1. 角色预设
src/data/characterPresets.ts- 动作文件夹 / 前缀仍是英文:
363-379520-536739-755834-8501019-1038
- 对话风格原始值仍是英文:
384-386:blunt/dry/direct541-543:wary/dry/fragmented760-762:blunt/teasing/deflecting855-857:blunt/steady/direct1043-1045:measured/steady/fragmented
- 技能风格 / 投射方式仍是英文:
407-408、445、473-474572-573、604-605、636-637、668-669、700-701791-792、815-818886、906、926-927、958-959、990-9911066-1077、1109-1110、1133-1146、1178-1179
- 这些值当前会在角色预设编辑器、技能预览和部分行为预览里直接露出。
- 动作文件夹 / 前缀仍是英文:
2. 物品设计 / Build 标签
src/data/itemDesign.ts56-201:worldAffinity/role/rarity原始值仍是英文,如neutral、wuxia、xianxia、fieldcraft、breaker、berserker、legendary213-219:pieceName仍是boots、chest、gloves、helm、leggings、shield、weapon820:说明文本里仍混入build
src/data/buildTags.ts11-291:整套 build tag id 都是英文,如quickblade、combo、dash、ranged、burst、caster、vanguard、paladin、starter- 这些值会进入物品编辑器、构筑标签和相关预览。
3. 怪物与掉落
src/data/monsterPresets.ts490-736:掉落 id、稀有度、tag 原始值大量是英文,如rare、uncommon、armor、material、relic、healing718-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.ts349-651:场景 id 全部是英文连字符格式,如wuxia-bamboo-road、xianxia-cloud-gate- 当前在编辑器 ID 字段中会直接显示。
src/data/stateFunctions.ts113-372:category原始值仍是battle/recovery/escape/idle- 编辑器预览还会直接显示动画 / delivery 原始值。
src/data/forgeSystem.ts264:描述里混入build274-281:relic、epic、setId、pieceName等原始值会进入物品编辑器链路
src/data/npcInteractions.ts207-209:兜底对话风格仍是measured/steady/fragmented
六、建议修复顺序
- 先修最影响主流程观感的真实乱码。
src/routing/appRoutes.tsxsrc/components/AdventurePanel.tsxsrc/components/CharacterDetailModal.tsxsrc/hooks/useStoryGeneration.ts
- 再修预设编辑器的共享标签和 4 个拆分面板。
src/components/preset-editor/shared.tssrc/components/preset-editor/CharacterPresetPanel.tsxsrc/components/preset-editor/SceneNpcPresetPanel.tsxsrc/components/preset-editor/ScenePresetPanel.tsxsrc/components/preset-editor/MonsterPresetPanel.tsx
- 再统一清理英文残留。
- 游戏端优先:
AdventurePanelOverlays.tsx、AdventureEntityModal.tsx、PreGameSelectionFlow.tsx - 编辑器端优先:
ItemCatalogEditor.tsx、NpcVisualEditor.tsx、StateFunctionEditor.tsx、自定义世界编辑器
- 游戏端优先:
- 最后做“显示层映射”,避免预设原始英文继续漏到 UI。
characterPresets.tsitemDesign.tsbuildTags.tsmonsterPresets.tsscenePresets.tsstateFunctions.ts
七、备注
- 本次结论以当前源码为准,和旧审计文档相比,已有一部分旧问题已经被修掉。
src/components/preset-editor/PresetEditorPanels.tsx现在只是 re-export 壳文件,真正的问题已经分散到拆分后的 panel 文件里。src/components/preset-editor/shared.ts里的几处乱码已经可以明确反解,适合优先直接修正。src/data/中很多英文值本身可能是内部枚举,但只要当前编辑器 / 预览没有做中文映射,就仍应视为“会暴露到用户侧”的文本问题。