文档目录

CCM 压缩包标准

CCM 用 metadata.txt 描述战役的键值格式、目录布局与安装落点,以及星际枢纽读取这类包时的处理方式。

最后更新 2026年11月1日

新作品推荐按星际枢纽标准打包。 CCM 格式在这里只作兼容旧作的说明:星际枢纽能识别、能安装,但它表达不了类型、启动器地图、封面与文档,安装位置只能从 title 反推。改按星际枢纽压缩包标准打包,清单是明确的 JSON,字段与落点一一对应;已经用 CCM 发过的旧作不必重做。

CCM(SC2 Campaign Manager)是《星际争霸II》战役包的另一套管理工具,它用一份 metadata.txt 描述作品,把战役放在游戏的 Maps/CustomCampaigns 目录下。星际枢纽的导入与扫描都能读这种包,按 CCM 的约定安装,因此同一份作品可以同时给两种工具使用。

本页说明 CCM 侧的约定,以及星际枢纽读取时补上的判定。

metadata.txt 的格式

文件内容是一行一个 键=值,键名固定为小写:

title=远征军之遗
desc=三章的单人战役,含自定义模组
author=示例作者
version=1.2.0
campaign=WOL
键必填说明
title是作品名称,同时决定安装目录名
desc否作品简介,缺省为空
author否作者署名,缺省为空
version否版本号,缺省为空
campaign是WOL、HOTS、LOTV、NCO 之一

解析规则:

  • 逐行读取,每行以第一个 = 分隔键与值,两侧空白会被去掉;所以值里可以再出现 =(desc=x=y 读到的简介是 x=y)。
  • 键区分大小写,必须写成小写;不认识的键会被忽略,不会报错。
  • 文件按 UTF-8 解码,允许带 BOM;不是合法 UTF-8 时按 GB18030 再解一次,早年用 GBK 保存的包也能读。两种都解不出来时按清单损坏处理。
  • 文件名是 metadata.txt(大小写不敏感),单个文件不超过 1 MiB,且不能放在 .SC2Map / .SC2Mod 组件目录里面。
  • campaign 缺失或不在四个值里,整个包判为无效——CCM 格式只描述战役,没有别的类型。

目录布局

远征军之遗.zip
├─ metadata.txt
├─ Campaign.SC2Map           # 入口地图
├─ Mission01.SC2Map
├─ Mission02.SC2Map
├─ evolution/                # 虫群之心专用
│  └─ Evolution01.SC2Map
└─ Mods/
   └─ Retribution.SC2Mod
  • metadata.txt 与地图文件同级,放在压缩包根目录。
  • 地图直接摆在根部,不要再套一层 Maps/;模组放在 Mods/ 里。
  • 与星际枢纽标准一样,压缩包外再套一层文件夹是可以的,应用会向下找到唯一一组文件;出现两套同级内容时无法判断,会判为不支持。

落点怎么算

打包时不用写 maps、mods 清单,落点由文件名和 campaign 推导:

包内位置目标
根部的 X.SC2Map该战役的地图区域:WOL → Maps/Campaign/,HOTS → Maps/Campaign/swarm/,LOTV → Maps/Campaign/void/,NCO → Maps/Campaign/nova/
HOTS 包里的 evolution/X.SC2MapMaps/Campaign/swarm/evolution/
LOTV 包里的 voidprologue/X.SC2MapMaps/Campaign/voidprologue/
根部的 X.SC2ModMods/,包内路径原样保留
Mods/ 下的 .SC2ModMods/ 下同样位置
  • 组件形式的地图或模组(以 .SC2Map、.SC2Mod 结尾的目录)按整个目录处理,内部文件不逐个判断。
  • 写在别的子目录里的地图不会被规划到任何位置,例如 Campaign/Level1.SC2Map;想让地图生效,就摆在根部或上面列出的战役子目录里。
  • 目标是按扩展名和文件名认的,改文件名等于改落点,所以重命名地图前要确认战役里的引用。

安装后放在哪

星际枢纽不按上一节的规划把地图写进 Maps/Campaign,而是按 CCM 自己的约定安装:

  • 整个包解压到CCM 管理目录下与 title 同名的子目录里,包内相对路径保持不变。默认位置是 <游戏目录>/Maps/CustomCampaigns,可以在「设置」里改。
  • 其中的模组会另外复制到游戏 Mods/,因为游戏按路径加载模组,留在管理目录里没用。
  • 因此 CCM 包不会覆盖官方战役的地图文件;卸载或取消激活时只清理管理目录,已经复制进 Mods/ 的模组不会被删除,也不会恢复被它替换过的同名模组。导入时界面会明确提示这一点:「CCM 导入时即安装 Mods,后续取消激活和卸载不会删除或恢复这些 Mods。」
  • 已经存在于 CCM 管理目录里的作品,扫描时会被重新识别并出现在战役管理里;目录里只要有一份 metadata.txt 就够。

目录名由 title 生成

管理目录下的子目录名不是原样复制 title,而是先清洗成能跨平台使用的名字:

处理说明
去掉 <>:"/|?* 与控制字符这些字符在文件名里不安全
去掉首尾空白,空白替换为 _远征军之遗 改 → 远征军之遗_改
去掉结尾的点Windows 不允许目录名以点结尾
拒绝保留名con、prn、aux、nul、com1–com9、lpt1–lpt9 不能作为目录名
长度上限255 字节(UTF-8)以内

名字洗成空串、撞上保留名或超过长度上限时,导入会失败并提示标题无法组成可用的目录名——换一个 title 再试。同一目录已存在同名子目录时,按「已安装」处理,需要先卸载或改名。

星际枢纽怎么识别这类包

导入或扫描时,客户端按下面的顺序找描述文件:

  1. 找到 package.json 与 metadata.txt 中最外层的那一份。同一层里出现多份描述文件无法判断用哪个,判为不支持。
  2. 两份都在且作品类型不同时,会让你选择按哪一种安装;类型相同则优先用 package.json。
  3. 只有 metadata.txt 时按 CCM 包处理,类型固定为战役。
  4. 两份都没有时,看包内有没有 Maps/Campaign 目录:有按战役处理,没有按自制作品处理。

与星际枢纽标准的差别

项目星际枢纽压缩包标准CCM 压缩包标准
清单文件package.json(JSON)metadata.txt(键值对)
能描述的作品战役、自制作品、共享模组包只有战役
安装位置由清单逐项声明按约定推导,落在 CCM 管理目录
版本校验结构校验 + 发布时语义化版本检查只当作文本,不做版本比较
多语言、图片、说明文档支持不支持
编辑器提示与 Schema有无

需要多语言条目、封面图、说明文档或依赖包时,用星际枢纽标准;只是把已有的 CCM 作品交给玩家,保持原样即可。

自检清单

  1. metadata.txt 与地图同级,键名全小写,campaign 是四个值之一。
  2. 文件用 UTF-8 保存;从旧工具导出的 GBK 文件也能读,但新作品不要再依赖这一点。
  3. 地图摆在根部(或 evolution/、voidprologue/),模组放在 Mods/。
  4. title 里没有路径分隔符之类的字符,也不会撞上保留名。
  5. 导入后核对规划出来的目标文件,再进游戏确认章节能正常加载。