Files
Genarrative/docs/GAME_UI_PRESET_EDITOR_TEXT_AUDIT_2026-04-01.md
高物 c49c64896a
Some checks failed
CI / verify (push) Has been cancelled
初始仓库迁移
2026-04-04 23:57:06 +08:00

16 KiB
Raw Blame History

游戏 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.tsxAdventurePanel.tsxCharacterDetailModal.tsxuseStoryGeneration.tspreset-editor/shared.ts 和 4 个拆分后的预设面板文件中。
    2. 游戏 / 编辑器英文残留:主要在 AdventurePanelOverlays.tsxAdventureEntityModal.tsxPreGameSelectionFlow.tsxNpcVisualEditor.tsxItemCatalogEditor.tsxStateFunctionEditor.tsx、自定义世界编辑器几处。
    3. 预设原始值直接透出:主要在 characterPresets.tsitemDesign.tsmonsterPresets.tsbuildTags.tsscenePresets.tsstateFunctions.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 EDITORLOADING GAME姝e湪杞藉叆缂栬緫鍣?..姝e湪杞藉叆鍐掗櫓... 路由级加载屏文案。后两段是真乱码;结合反向解码可确定原意分别接近“正在载入编辑器...”和“正在载入冒险...”。
src/components/AdventurePanel.tsx 99101103109111113 查看库存与价<EFBFBD>?聊聊并试探口<EFBFBD>?看看能得到什么帮<EFBFBD>?离开并继续探<EFBFBD>?战斗决胜<EFBFBD>?切磋几招看身<EFBFBD>? NPC 交互短描述里有多处截断 / 乱码。
src/components/AdventurePanel.tsx 200203 可作为制作材<EFBFBD>?任务奖励物品可用于后续路线、交易或构筑规划<EFBFBD>? 任务奖励物品说明文本被截断。
src/components/AdventurePanel.tsx 569-571 已完<EFBFBD>?已交<EFBFBD>?进行<EFBFBD>? 任务状态标签乱码。
src/components/AdventurePanel.tsx 771 <EFBFBD>? 对话气泡里的屏幕阅读器标签损坏。
src/components/AdventurePanel.tsx 833837870 剧情推演<EFBFBD>?..对话进行<EFBFBD>?剧情推理完成继续后显示新的冒险选项<EFBFBD>? 加载态 / 流式对话态 / 继续冒险提示都有截断。
src/components/CharacterDetailModal.tsx 35-36223 <EFBFBD>?<EFBFBD>?<EFBFBD>? 性别标签与“属性”标题乱码。
src/hooks/useStoryGeneration.ts 121412661409154919782325 鏈煡 AI 閿欒 游戏故事流里 AI 失败时的统一兜底提示乱码;可反解为“未知 AI 错误”。

二、游戏 UI英文残留

1. 冒险面板和奖励弹层

  • src/components/adventure-panel/AdventurePanelOverlays.tsx
    • 554-570Adventure statsCurrent area:ADVENTURE SUMMARYenemies defeateditems in inventoryscene transitions so far
    • 622-668Quest logTotal quests:No active quests yet.
    • 711-798QUEST BRIEFClaim rewardQUEST COMPLETEReward readyReward pickup is now available in the quest log.Open quest log
    • 887-1016Battle rewardDefeated enemies:BATTLE ENDLOOT CACHETap an item icon to inspect its details.No usable loot dropped this time.No loot dropped this time.Rarity:Quantity:Slot:Not equippableUsable directlyPassive / non-immediate itemEffect preview: HP +MP +Cooldown -Tags:none
  • src/components/AdventurePanel.tsx
    • 359-388REWARD CACHETap an item icon to inspect its details.AffinityCurrencyNo item bounty attached to this quest.
    • 636-638Current area
    • 803824:两个按钮都显示 Refresh

2. 实体详情、同伴、交易

  • src/components/AdventureEntityModal.tsx
    • 892898HPMP
    • 1073NPC 信息
    • 1111敌对NPCNPC
    • 1163:数量前缀 x{item.quantity}
    • 1165Inspect
    • 1428NPC 背包
  • src/components/CompanionCampModal.tsx
    • 177-178233-234HPMP
    • 255NPC
  • src/components/NpcModals.tsx
    • 252273356NPC 商品列表这个 NPC 当前没有可售商品。NPC 商品
    • 408效果预览HP +... / MP +... / 冷却 -...
  • src/components/CharacterDetailModal.tsx
    • 112数量 x{item.quantity}

3. 开场流程与加载态

  • src/components/game-shell/PreGameSelectionFlow.tsx
    • 48-49QQ GroupWeChat
    • 8189核心NPC
    • 471-473Wuxia Base
    • 519-527CustomCreate Custom WorldEnter a world setup and let the system generate playable characters, NPCs, items, and landmarks.
  • src/components/game-shell/CharacterSelectionFlow.tsx
    • 401Character Details
    • 406Current Character
  • src/components/GameCanvas.tsx
    • 32Loading 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
    • 216219:最近战斗 / 最近协作提示仍是英文
    • 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-279Character ListChoose a player character, preview it live, and edit the preset fields.
    • 325Save Character Overrides
    • 多处通用占位仍是 SectionEditor section.Field
    • 347Inventory World
    • 468-484Skill LoadoutAdd Skill
    • 510Skill ID
    • 651Character ID
    • 682Asset Variant
    • 698Personality
    • 713AttributesAdjust the four core character attributes.
    • 772Unset
    • 798scene-id-1 / scene-id-2
  • src/components/preset-editor/SceneNpcPresetPanel.tsx
    • 181-182NPC LibraryBrowse and select an NPC preset.
    • 186NPC ID
    • 223Save NPC Overrides
    • 230-246Skill PreviewPreview ranged skills from the linked character.SkillWorld
    • 275-276Hostile NPCs use monster presets...Narrative NPCs can preview linked visuals...
    • 318-382NPC DetailsRoleAvatarInitial AffinityDescriptionVisual Editor
  • src/components/preset-editor/ScenePresetPanel.tsx
    • 145Scene
    • 172Save
    • 179-193Scene PreviewPreview ModeMonster PreviewNPC PreviewTreasure PreviewEmpty
    • 223230233242NoneNPC
    • 248-272Scene DetailsWorldNameDescription
    • 288Unset
  • src/components/preset-editor/MonsterPresetPanel.tsx
    • 172Save Monster Overrides
    • 179-180Monster Override PreviewEditor section.
    • 213-222Attack Range:Speed:HP:Max HP:
    • 236Monster ID
    • 242Name
    • 258Intro Action
    • 373FPS

2. 其他编辑器 / 自定义世界

  • src/components/ItemCatalogEditor.tsx
    • 654HPMPCD
    • 677806ID
    • 789Build Buff
    • 458863public/IconsitemOverrides.json
  • src/components/NpcVisualEditor.tsx
    • 463702708718NPC
    • 977Shift
    • 1028-1052Current loadout:Unknown headgearNo headgearUnknown main handNo main handUnknown off handNo off hand
  • src/components/CustomWorldEntityCatalog.tsx
    • 139268276349NPC
    • 224WORLD DOSSIER
    • 346MedievalFantasyCharacters
  • src/components/CustomWorldEntityEditorModal.tsx
    • 242URL
    • 460MedievalFantasyCharacters
    • 478-479730758-759AIAI生成NPC形象AI生成场景
    • 631-653NPC
  • src/components/PresetEditor.tsx
    • 71:介绍文案里仍然直接显示 NPC
  • src/components/StateFunctionEditor.tsx
    • 803Failed to play preview
    • 818-821HPNo visible target
    • 915n/a
    • 1060-1064Failed to save option behavior overridesOption 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-386blunt / dry / direct
      • 541-543wary / dry / fragmented
      • 760-762blunt / teasing / deflecting
      • 855-857blunt / steady / direct
      • 1043-1045measured / steady / fragmented
    • 技能风格 / 投射方式仍是英文:
      • 407-408445473-474
      • 572-573604-605636-637668-669700-701
      • 791-792815-818
      • 886906926-927958-959990-991
      • 1066-10771109-11101133-11461178-1179
    • 这些值当前会在角色预设编辑器、技能预览和部分行为预览里直接露出。

2. 物品设计 / Build 标签

  • src/data/itemDesign.ts
    • 56-201worldAffinity / role / rarity 原始值仍是英文,如 neutralwuxiaxianxiafieldcraftbreakerberserkerlegendary
    • 213-219pieceName 仍是 bootschestgloveshelmleggingsshieldweapon
    • 820:说明文本里仍混入 build
  • src/data/buildTags.ts
    • 11-291:整套 build tag id 都是英文,如 quickbladecombodashrangedburstcastervanguardpaladinstarter
    • 这些值会进入物品编辑器、构筑标签和相关预览。

3. 怪物与掉落

  • src/data/monsterPresets.ts
    • 490-736:掉落 id、稀有度、tag 原始值大量是英文,如 rareuncommonarmormaterialrelichealing
    • 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-roadxianxia-cloud-gate
    • 当前在编辑器 ID 字段中会直接显示。
  • src/data/stateFunctions.ts
    • 113-372category 原始值仍是 battle / recovery / escape / idle
    • 编辑器预览还会直接显示动画 / delivery 原始值。
  • src/data/forgeSystem.ts
    • 264:描述里混入 build
    • 274-281relicepicsetIdpieceName 等原始值会进入物品编辑器链路
  • 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.tsxAdventureEntityModal.tsxPreGameSelectionFlow.tsx
    • 编辑器端优先:ItemCatalogEditor.tsxNpcVisualEditor.tsxStateFunctionEditor.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/ 中很多英文值本身可能是内部枚举,但只要当前编辑器 / 预览没有做中文映射,就仍应视为“会暴露到用户侧”的文本问题。