- 这是一个本地中文网页版 X4 存档修改器,支持金钱、声望与许可证、蓝图、总部科研、飞船改装与换装、弹药、货物、特殊物品、船员技能与岗位、地图与百科、空间站资源与劳动力,以及外交与特工。
- 开始使用:从 最新 Release 下载源码 ZIP,解压,安装 Python 3.11+,双击
启动X4存档修改器.cmd。不需要安装额外 Python 包。 - 操作流程:打开存档 → 修改目标值 → 顶部统一暂存 → 导出新存档。功能项旁的“查看原始 XML”可直达对应存档结构。
- 原存档不会被覆盖;游戏名称、蓝图和属性范围从本机 X4 安装目录读取。服务只监听本机,不上传存档。
- 加载游戏前备份存档槽位。导出有完整 XML 校验,但游戏内效果仍需验证。
本地中文存档修改器,提供金钱、空间站资源与劳动力、总部科研、玩家声望与许可证、外交与特工、已安装飞船改装、飞船货仓、特殊物品、蓝图和船员技能面板,同时保留大型存档的完整索引与高级结构浏览。
当前正式版为 v1.3.0,新增弹药与部署物、维修换装、船员人数与岗位、地图与百科、改装配置、蓝图撤销和扩展管理,并按类别整理功能标签。网页版是默认入口;v1.2.0 保留首批改装与总部管理,v1.1.0 保留特殊物品管理版,v1.0.1 保留货仓修正版,v1.0.0 保留首次网页版发布,v0.1.0 保留桌面第一版。
双击 启动X4存档修改器.cmd 或 start.cmd,自动在默认浏览器打开 **http://127.0.0.1:8765**。需要 Python 3.11 或更新版本,应用后端仅使用 Python 标准库,前端无框架、CDN 或外部服务依赖。
服务仅监听 127.0.0.1。关闭浏览器标签页不会停止服务;在启动窗口按 Ctrl+C 退出。端口冲突时可运行 python web_server.py --port 8766。原 Tkinter 界面仍可通过 start-desktop.cmd 启动,需要 Python 的 Tkinter 组件。
- 点击“打开存档”:选取自动发现的存档、粘贴本机完整路径,或用文件选择器导入
.xml.gz/ UTF-8.xml。首次后台解析并建立磁盘索引;同一文件未变时复用缓存。 - 选择所需的功能标签。科研位于“总部 / 科研”,许可证位于“势力关系”,劳动力位于“空间站资源”,已安装改装位于“飞船改装”。默认读取标准 Steam 安装目录;其他位置可点击“游戏数据目录”设置。
- 在功能面板输入数值、勾选项目或修改高级属性,点击页面顶部的“暂存修改”统一校验。未暂存的输入在切换功能、筛选或分页后仍保留;导出时会自动暂存剩余输入。修改清单可逐项撤销,最后统一导出。
- 点击“导出新存档”,核对修改数量与文件名。工具在工作区
.local/exports/下生成独立新文件,完整回读校验后提供下载,不覆盖原存档。
各功能的修改项及待修改清单都提供“查看原始 XML”按钮,直接跳到高级结构浏览并选中对应原节点。新增项目定位到已有父节点;同步账户、双方关系及科研等联动修改可在上方切换相关节点。“返回功能页面”保留未暂存输入和修改清单。这里始终显示加载时的原始结构,不显示尚未导出的新 XML。
每页最多 200 个节点,下一页使用节点游标;“返回”可回到上一页或上一个查询。大部分操作在后台进程执行,窗口不承担整份 XML 的解析。
高级结构浏览中的“常用节点”提供 15 个快捷入口:资金、角色、背包、蓝图、科研、声望、许可证、舰船、空间站、建造仓储、人员技能、货仓 / 弹药、改装、地图 / 百科及任务。自动按当前存档的玩家归属和父子关系定位,显示实际数量;只负责跳转,不自动修改。定位范围和参考来源见 SHORTCUTS.md。首次识别会额外建立小型缓存,之后直接复用。
左右面板之间的分隔条可拖动,也可聚焦后使用左右方向键调整;宽度保存在当前浏览器。窄窗口自动上下排列,表格与原文可独立滚动。修改清单只保存在当前标签页,刷新或关闭会丢失;有待修改内容或运行中的任务时,浏览器会提示离开。
底部在空闲时只显示“就绪”,隐藏动态进度线。执行任务时显示当前阶段与耗时:解析显示已读取 MiB 与节点数,建立索引显示阶段说明,导出显示百分比,回读校验显示已校验节点数。动态线只是忙碌提示,不代表百分比;文件选择器导入显示实际传输到本机的百分比。
- 资产详情(源码新增):按星区、名称、识别码、船型和型号筛选玩家飞船 / 空间站,列表每页 100 项。选中后在同一页切换货仓、弹药、改装、维修、船员技能与人数 / 岗位,或空间站资金、建造资金、资源、劳动力、交易设置及经理技能;总部还提供科研入口。特殊物品只列出属于当前资产的已保存物品位置。切换面板或资产保留草稿,统一暂存和导出;原始 XML 跳转后可回到当前资产面板。原有独立标签继续可用。此页尚未包含在 v1.3.0 下载包中。
- 金钱:输入金额或使用预设,同步玩家主账户、共享账户 ID 和摘要 / 统计。下方列出玩家空间站账户和对应建造仓储账户,可按名称、识别码和星区筛选,分别修改两种余额。存档中省略
amount的余额按 0 显示,修改时补入;账户 ID 被其他记录共用或建造仓储无法唯一关联时只读。预算栏显示存档账户的min/max区间,缺失时标记为“未保存”;游戏界面的建议预算会依据生产与建造需求动态计算,本工具不把区间当作建议预算。 - 空间站资源:按星区和名称选择玩家空间站,分别查看普通货仓与独立建造仓储的物资总量、实体货仓容量和生产模块清单;交易预留与存档缺口只读显示。可以设定物资总量或加入新物资,再用顶部按钮统一暂存;导出时只改相关货仓的物资记录。可添加物资排除带
module标签的建筑,后端也拒绝把建筑写成库存;存档中已有的异常记录保留显示为只读。添加时按物资运输类型和体积在各实体货仓间分配,容量不足、结构不明确或游戏目录缺失时拒绝写入。这里显示的是存档库存,不把库存当作游戏界面的自动仓储配额或生产速率;交易订单与生产逻辑不会自动调整。 - 势力关系:默认隐藏 visitor 内部势力,可勾选显示;按势力名称搜索,选择敌对、中立、友好、盟友等预设。同步双方基础值,并把双方临时加成归零;被游戏锁定的关系保持只读。这里显示存档内部数值,不把它冒充游戏界面的声望分数。
- 势力许可证:在“势力关系”下方选择发证势力,查看本机资源定义的购买权限、贸易订阅、警察执照及前置许可,分别授予或撤销。授予时补齐前置,撤销前置时撤销依赖许可;只调整选中势力的持有记录,保留同类型许可证中的其他势力。内部、未知或重复记录只读。声望条件、剧情与游戏中的许可规则仍可能影响实际权限。
- 总部 / 科研:定位唯一玩家总部,列出本机资源定义的科研及其前置条件,支持完成或取消完成。完成科研会补齐前置,取消完成会撤销依赖它的后续科研;界面显示关联变化。只处理玩家完成记录,科研中的项目、内部项目及歧义记录保持只读,不执行相关剧情任务或发放奖励。相互矛盾的依赖修改拒绝暂存。
- 行星改造(当前源码):位于“总部 / 科研”下方,也可从总部资产详情进入。按行星列出已保存的环境指标、人口、项目类别、完成次数和实际物资需求;项目搜索与分页每页 50 项。已有环境指标在本机游戏目录的明确范围内可修改;人口、训练人数、未知或重复指标及活动项目所在行星只读。总部位于同一星系时,可按项目保存的
scaledresources补齐库存,沿用实体货仓容量、货物类型和库存草稿冲突校验;多个补齐操作取需求最大值,不叠加消耗量。未保存的默认指标不创建。剧情任务、项目完成次数、运输、外观与奖励保持原样,后续事件仍可能改变指标;尚未经过游戏内验证,此功能不在 v1.3.0 下载包内。 - 飞船改装:按星区、船名、识别码、船型和型号选择玩家飞船,查看已经安装的船体、引擎、护盾和武器 / 炮塔改装及其现有随机属性。界面以百分比或增加数量输入,范围从本机
equipmentmods.xml读取,支持单项或全船取最优值。配置面板可更换同类别改装,选择该定义允许的附加属性并设定数值;主属性必选,附加数量不能超过定义上限,取消选择的旧属性会移除。未知属性、越界、非有限值、重复改装及冲突操作拒绝写入。不会创建尚未安装的改装槽。 - 空间站劳动力:在“空间站资源”内按种族查看当前人数与已实例化居住模块的对应容量,可分别修改或按容量补满。新增劳动力容器使用存档游戏时间初始化;已有容器的时间和其他种族记录保持原样。超过对应种族居住容量、重复记录或无法确认的居住模块拒绝写入。游戏仍会根据补给与生产规则动态调整人数。
- 外交与特工:单独显示玩家外交影响力、非玩家势力之间的双向关系,以及已登记特工的谈判与谍报经验。可分别设置两项经验,或选择 0–5 级并自动换算为该级最低经验。5 级从 200 经验开始;编辑器的经验写入上限为每项 200,影响力写入上限为 300。游戏内经验可继续累计;影响力的最高显示档位从 33 开始,但未确认余额的绝对上限,因此 300 是编辑器的保守限制,不是游戏硬上限。等级由经验计算,不是独立保存值。势力对的修改同步两向基础关系、清除该对临时加成;锁定或有重复记录的关系只读。存档没有保存某一方向的基础关系时标记为“游戏默认”,不猜测其当前游戏值。外交剧情可能再次改变关系;本工具不创建新特工或外交任务。
- 飞船货仓:默认选择最后控制的玩家飞船,按星区分组并显示数量,可先筛选星区,再搜索飞船名称、识别码、船型或型号。停靠中的飞船归入实际所在星区,未知位置单独列出。飞船选项、船员所属资产与高级结构浏览中的玩家飞船显示名称、识别码、XS/S/M/L/XL 尺寸、可确认的用途类别和游戏内型号;自定义名称仍与型号并列,无法确认的类别不猜测。X4 的尺寸与用途类别不直接对应 X3 的 M1–M7。可添加货物只列出本机资源中的实体货物,排除带
module标签的空间站建筑(如观景平台、仓储模块);后端也拒绝将这些项目作为新货物加入飞船。按名称 / ID 筛选货物,添加缺失物资、调整数量、以 0 移除。校验货物类型和所有待修改数量的总容量;无法确定容量时不允许写入。停靠的其他飞船、个人背包和弹药分开处理。 - 特殊物品:按玩家、飞船、空间站和船员背包选择存档中实际存在的
inventory位置。物品分为“其他物品”“喷漆 Paint MOD”“改装 MOD / 材料”三组,每次只显示一组;可在组内按名称 / ID 搜索并设定目标数量。现有物品还有明确的“删除”按钮:点击后标记为目标数量 0,可取消草稿,暂存后也可在修改清单撤销;导出时只删除该持有人的对应物品叶节点。玩家背包即使为空也可添加;飞船、空间站和船员只列出有独立inventory节点的位置,不把船员背包或飞船货仓冒充船体/总部库存。未在存档中出现的总部保管箱不会凭空创建。剧情专属与弃用物品只读;重复容器或重复物品记录拒绝写入。修改继续使用页面统一暂存和新存档导出。 - 解锁蓝图:读取本机游戏的可制造装备、舰船和空间站模块目录,区分已有和未拥有,可按分类和名称 / ID 搜索,勾选本页批量解锁,不重复写入。候选必须有制造定义;普通物资与带
noblueprint/noplayerblueprint标记的项目不列入新增候选。 - 船员技能:包括具名 NPC 和匿名船员,排除舰船电脑;与货仓面板共用星区 / 飞船筛选;支持单项或勾选本页批量设置五项技能,0–5 星,步进为 1/3 星。缺少的技能属性和技能容器会补入。人数和岗位在独立面板管理。
- 弹药与部署物:分别管理导弹、干扰弹、部署物和无人机,支持添加、改数量和删除。计入已识别的发射中 / 已部署占用;容量来自游戏默认值、舰船与发射器定义及合并后的改装。保留已部署记录,未知类型和歧义结构只读;已有超容量数据允许减少,不允许继续增加。
- 维修与换装:按百分比修改舰船及可确认装备的船体值;按现有装备节点更换引擎、护盾、武器和炮塔,保留 ID 与连接。默认核对类别、连接标签和连接名称;实验开关允许跳过同类别装备的连接校验,特殊搭配尚未经游戏验证。不创建新装备槽,不重建装备订单,也不修改护盾当前充能。
- 船员人数与岗位:调整普通勤务 / 陆战队人数及个人岗位,校验总人数与具名人员占用。新增时要求本船已有可复用的人员型号,以新 seed 和零技能创建;减少时优先移除技能较低的普通人员。具名军官、临时或转移中人员不删除。
- 地图与百科:可搜索、缩放并选择星区,逐项发现星区、空间站和星门;地图坐标结合存档偏移及本机基础游戏 / DLC 地图资源,未知位置另列。迷雾仅揭示存档已有探索树,保留边界与树形结构;缺失探索树时需先在游戏中进入星区。百科按分类分页,逐项解锁已确认的本机目录项目;不触发剧情。
- 蓝图撤销、科研资源与计时:已有蓝图可逐项撤销。总部科研显示所需物资,可合并补齐到实际货仓;仅已保存且可识别的活动任务提供剩余秒数修改,设为零后由游戏继续完成流程。不会制造剧情奖励、任务状态或未知计时结构。
- 空间站交易设置:空间站页面展示已有物资交易规则、势力限制和可识别的手动价格 / 配额字段。只编辑明确保存的原生字段;
prices/reference自动参考价格、历史交易日志保持只读。存档未保存手动价格或配额时不凭空生成,也不猜测经理自动分配。
货物、蓝图、飞船型号、星区与势力名称从本机游戏资源读取,始终保留 ID。星区名称按 macro 合并基础游戏和各 DLC 的条目,避免后加载的 DLC 覆盖其他星区。语言引用展开时去除资源中的括号注释,保留转义括号与自定义名称。只合并存档声明的已安装官方 DLC;不合并第三方模组资源,不猜测缺失名称或容量。游戏资源与存档版本不同时会提示,新增项目仍需在当前安装版本中验证。
星区地图额外显示基础游戏 / DLC 来源:彩色侧条、文字和图例共用固定配色,选中状态与探索状态继续分别显示。来源按本机 mapdefaults.xml 最初引入该 macro 的资源层判定,后续名称更新不改变归属;无法确认时显示灰色“来源未确认”。可搜索 DLC 名称或 ID。颜色为本工具的区分配色,不声称复刻某张第三方地图的颜色。
地图在当前源码中增加 DLC / 势力筛选、存档星区归属、本机地图资源定义的星门连线和相邻星区导航。连线只表示可识别的地图定义,不判断剧情、门的启用状态或当前是否可通行。所选星区的玩家资产分页列出,可直接进入资产详情;资产详情也可返回所在星区。未知路径不猜测连接,未知归属明确标记;这一批地图增强尚未包含在 v1.3.0 下载包中。
地图发现状态同时考虑玩家所有权、known 和 knownto 中的玩家记录。玩家空间站即使省略 known 也显示“玩家资产 · 已知”,不显示多余的发现操作;此判断只影响界面,不补写存档标志。
百科在当前源码中增加“DLC 来源”列、颜色标记与来源筛选,可同时按分类、已知 / 未知状态和名称搜索。来源按本机货物、势力或 macro 最初定义的资源层判定,后续 DLC 修改基础项目的属性不会改变来源;无法确认时显示“来源未确认”。只合并存档声明的本机官方 DLC,不根据 ID 前缀猜测,也不将来源标记写入存档。这项功能尚未包含在 v1.3.0 下载包中。
通用属性编辑保留在“高级结构浏览”,支持标签、ID、节点编号和名称搜索,每页 200 个节点。功能列表每页 100 项。功能操作与高级属性修改发生冲突时会拒绝导出,请撤销重复操作。
导出只改动明确选中的属性和必要的新节点 / 货物叶节点,保留其余 XML 原始字节;完整解析导出文件,并核对节点数变化和解压内容 SHA-256 后才发布新文件。不会覆盖原存档。
普通船员减少会删除经过结构检查的小型人员子树,取消改装属性会删除对应属性;带未知子节点或组件引用的人员记录拒绝删除。
尚未在游戏内验证修改后的存档;剧情可能重设关系,蓝图也不代替许可证、科研或任务条件。自定义导出名不一定直接列入游戏槽位。退出游戏后备份并管理槽位,再进入游戏核验。
SQLite 保存父子关系和标签索引;XML 解压后保存在 .cache,按需定位读取。第一次需要解析完整文件并构建索引,后续打开及分页更快。
完整索引以磁盘空间换内存和查询响应:每份存档会保存一份解压 XML 和一份数据库。名称包含查询需要扫描摘要表,比标签 / ID 精确查询慢,但在后台执行。
缓存和导出测试数据不上传。关闭程序后可删除整个 .cache 与 .local,不会影响原始存档。强制退出长任务可能留下没有 meta.json 的不完整缓存目录或 .x4-export-*.tmp 临时文件;确认程序关闭后可清理。启动不自动删除其他实例可能正在使用的文件。
文件选择器会按块把文件写到本机 .local/imports/,额外保留一份导入副本。优先从存档列表或完整路径打开,可避免这份复制并复用同一份缓存。浏览器只接收一页节点或一个原文片段,不加载整份 XML。
导出使用低压缩级别,优先速度,生成的 .gz 可能大于原始存档。相同加载快照可反复导出;清单仍保留,原文面板显示的是加载时原始内容。
python -m unittest discover -s tests -v
python benchmark.py "你的存档.xml.gz" --fresh --export可选桌面冒烟测试:python tests/gui_smoke.py。可选浏览器冒烟测试:本机已有 Playwright 和 Microsoft Edge 时,先启动服务,再运行 node tests/web_smoke.cjs;可用环境变量 X4_PLAYWRIGHT_MODULE 指向已安装的 Playwright 模块。该检查覆盖导入、分页、分栏拖动、属性修改与撤销、导出下载、窄窗口布局和空闲进度隐藏,不是应用运行依赖。
功能面板浏览器检查见 tests/gameplay_smoke.cjs,使用 tests/test_gameplay.py 中的合成存档和 make_game 生成 .local/gameplay-smoke/save.xml 与 .local/gameplay-smoke/game/。它验证资金、库存、声望、蓝图、船员、货仓、超容量拒绝、清单和下载;tests/diplomacy_smoke.cjs 使用同一测试模块的外交合成存档,验证影响力、势力对、特工经验与等级。不使用真实存档作为公开夹具。
特殊物品浏览器检查见 tests/inventory_smoke.cjs:使用 INVENTORY_SAVE 和 make_game 生成 .local/inventory-smoke/save.xml 与 .local/inventory-smoke/game/,覆盖分类、删除与取消、跨组草稿保留、持有人隔离、添加、导出和窄窗口布局。
扩展功能检查见 tests/expansion_smoke.cjs,使用 tests/test_expansion.py 的 EXPANSION_SAVE 和 make_expansion_game 准备 .local/expansion-smoke/。覆盖改装配置、蓝图撤销、弹药容量、维修换装、船员人数、地图百科、总部资源计时、交易设置、合并导出及窄窗口。合成数据验证编辑规则;真实存档的只读检查不等同于游戏内验证。
资产详情与地图检查见 tests/assets_smoke.cjs,使用 tests/test_assets.py 的 ASSET_SAVE 和 make_asset_game 准备 .local/assets-smoke/。覆盖跨资产草稿、人员与物品范围、XML 返回、地图连接和筛选、星区资产跳转、合并导出及窄窗口。测试只使用合成资源与存档。
百科来源检查见 tests/encyclopedia_smoke.cjs,使用 tests/test_encyclopedia.py 的 ENCYCLOPEDIA_SAVE 和 make_encyclopedia_game 准备 .local/encyclopedia-smoke/。覆盖 DLC 筛选分页、基础资源后续补丁的来源保留、未知来源、解锁导出,以及玩家空间站已知状态的显示修正。
科研、许可证、已安装改装、劳动力及完整蓝图目录的浏览器检查见 tests/management_smoke.cjs:使用 tests/test_management.py 的 MANAGEMENT_SAVE 与 make_management_game 生成 .local/management-smoke/save.xml 和 .local/management-smoke/game/。检查覆盖目录分类、改装范围与最优方向、科研前置、许可联动、各族居住容量、统一暂存、导出和窄窗口布局。
性能脚本在 .local 写本机报告及测试副本。它对完整大存档执行一次属性修改、回读全部节点、独立逐块比较未改动的原文,以及验证原存档 SHA-256 未变化。
实际大存档性能与验证结果见 PERFORMANCE.md,同类项目分析见 RESEARCH.md。工具不修改游戏安装目录。
项目自身代码和文档采用 MIT License,版权署名为 X4SaveEditor contributors。
感谢 X4Companion、x4-savegame-parser、X4-Info-Miner、x4-core 和 BeamerMiasma/X4-Foundations 提供的公开资料。具体参考内容、固定版本链接和许可核对记录见 第三方来源说明。当前实现未包含这些项目的代码或数据;引用不表示其作者为本项目背书。
本项目为非官方工具,与 Egosoft 无隶属或背书关系。MIT 许可不涵盖 X4: Foundations 游戏内容、商标或用户存档。
发布源码、测试、启动脚本、文档及许可文件。不要分发 .cache/、.local/、真实存档、日志、截图、个人配置或从游戏提取的资源。测试夹具由代码生成,不依赖随附的真实存档。
.gitignore 已排除本地数据,但不会自动过滤手工压缩整个文件夹的内容。发布前检查 Git 实际跟踪的文件及最终归档;归档中应保留 LICENSE 和 THIRD_PARTY_NOTICES.md。