目录
[1. 按时间顺序读取](#1. 按时间顺序读取)
[2. 关注加载流程](#2. 关注加载流程)
[3. 错误链追踪](#3. 错误链追踪)
[1. 增量测试法](#1. 增量测试法)
[2. 对比法](#2. 对比法)
[3. 日志筛选脚本](#3. 日志筛选脚本)
[4. 必填字段检查表](#4. 必填字段检查表)
前言
在《文明6》的Mod开发过程中,经常会遇到"选人界面不显示Mod角色"这样的问题。本文将通过一个实际的案例,详细讲解如何通过分析游戏日志来定位和解决Mod加载问题。
案例背景
我开发了一个名为"野史中国"的自定义文明Mod,包含:
-
文明:野史中国
-
领袖:李华
-
特色建筑:国子监
-
特色单位:翰林学士
但在游戏中,选人界面始终不显示这个文明。
第一步:找到游戏日志
《文明6》的日志文件位于:
text
文档\My Games\Sid Meier's Civilization VI\Logs\
关键日志文件:
-
Database.log- 数据库操作和错误信息 -
Modding.log- Mod加载信息
第二步:识别关键错误信息
在日志中,我发现了两个致命错误:
错误1:XML大小写问题
text
[Configuration] ERROR: Database::XMLSerializer (China_Config.xml): 'Row' or 'Delete' expected, got 'ROW'.
问题分析 :
XML是大小写敏感的,但我在China_Config.xml中使用了<ROW>而不是<Row>。
解决方案:
xml
<!-- 错误写法 -->
<ROW>
<CivilizationType>CIVILIZATION_UNOFFICIAL_CHINA</CivilizationType>
</ROW>
<!-- 正确写法 -->
<Row>
<CivilizationType>CIVILIZATION_UNOFFICIAL_CHINA</CivilizationType>
</Row>
错误2:图标尺寸缺失
text
[Database] ERROR: NOT NULL constraint failed: IconTextureAtlases.IconSize
问题分析 :
在China_Icons.xml中,IconTextureAtlases表的IconSize字段不能为空。
解决方案:
xml
<!-- 错误写法 -->
<Row Name="IMG_DIPLOMACY_BACKGROUND" IconSize="" IconsPerRow="1" .../>
<!-- 正确写法 -->
<Row Name="IMG_DIPLOMACY_BACKGROUND" IconSize="256" IconsPerRow="1" .../>
第三步:系统化日志分析方法
1. 按时间顺序读取
日志按时间顺序记录,最新的错误在文件末尾附近。使用文本编辑器的搜索功能查找关键词:
-
ERROR: -
Warning: -
Failed loading -
你的Mod名称(如
Unofficial_history)
2. 关注加载流程
《文明6》Mod加载流程:
text
1. Mod发现阶段
2. 配置数据库更新
3. 游戏内容更新
4. 组件应用
当看到你的Mod在某个阶段后没有进一步记录时,说明加载在该阶段失败。
3. 错误链追踪
一个错误可能导致后续一系列错误。从第一个错误开始修复,因为后续错误可能是第一个错误导致的。
第四步:常见错误类型及解决方法
| 错误类型 | 关键词 | 常见原因 | 解决方案 |
|---|---|---|---|
| XML语法 | 'Row' or 'Delete' expected |
标签大小写错误 | 确保所有XML标签使用正确大小写 |
| 字段约束 | NOT NULL constraint failed |
必填字段为空 | 检查并填写所有必填字段 |
| 外键约束 | FOREIGN KEY constraint failed |
引用不存在的键值 | 检查所有引用是否存在 |
| 本地化缺失 | LOC_开头没有定义 |
缺少本地化文本 | 在文本文件中添加对应定义 |
| 文件未找到 | Unable to load |
文件路径或名称错误 | 检查文件路径和命名 |
第五步:实用的调试技巧
1. 增量测试法
-
先只保留最基本配置(文明和领袖定义)
-
逐步添加特色建筑、单位等内容
-
每添加一项就测试一次
2. 对比法
-
参考官方DLC或成功Mod的结构
-
对比你的文件与官方文件的差异
3. 日志筛选脚本
可以使用简单的批处理命令筛选日志:
bash
# 查找所有错误
findstr /i "error" Database.log
# 查找Mod相关错误
findstr /i "unofficial" Database.log
# 查找特定文件错误
findstr /i "China_Config" Database.log
4. 必填字段检查表
| 表名 | 必填字段 | 常见问题 |
|---|---|---|
IconTextureAtlases |
IconSize |
忘记填写尺寸 |
Players |
CivilizationType、LeaderType |
引用不存在文明/领袖 |
Civilizations |
Name、Adjective |
缺少本地化定义 |
Buildings |
BuildingType、Cost |
数值格式错误 |
第六步:修复后的验证流程
-
修改文件 → 修正所有发现的错误
-
重新构建 → 在ModBuddy中重新烹饪
-
清理缓存:
-
删除
Cache文件夹 -
删除
Mods.sqlite文件
-
-
启动游戏 → 查看新生成的日志
-
确认修复 → 确保不再出现相同错误

经验总结
-
日志是第一位老师 - 90%的问题都能在日志中找到答案
-
细节决定成败 - XML大小写、字段必填等细节很重要
-
顺序修复原则 - 从第一个错误开始修复
-
隔离测试方法 - 先简化后复杂
-
官方参考价值 - 参考官方DLC结构能避免很多问题
完整修复后的效果
修复所有问题后:
-
游戏日志不再报错
-
Mod在加载界面显示为"已启用"
-
在选人界面可以正常选择"野史中国-李华"
-
游戏内特色建筑和单位正常显示
附录:常用日志关键词速查
致命错误(必须修复)
-
ERROR:- 严重错误,Mod加载失败 -
FOREIGN KEY constraint failed- 外键引用错误 -
NOT NULL constraint failed- 必填字段为空
警告信息(需要关注)
-
Warning:- 潜在问题,可能影响功能 -
Unable to load- 文件加载失败 -
Failed loading XML- XML解析失败
信息性日志(参考用)
-
Loading- 文件加载成功 -
Successfully released save point- 数据库操作成功 -
Applying Component- Mod组件正在应用
我饿了,要吃好的
