open-sourcegamertsstratagusstarcraftasset-extraction type: concept 创建: 2026-04-10 更新: 2026-04-10
Stargus
StarCraft 1998 数据导入器 — 将原版 StarCraft 资产转换为 Stratagus 引擎可用格式的开源项目
基本信息
核心技术点
Stratagus 引擎集成
- Stargus 不是独立引擎,而是 Stratagus 引擎的数据转换层/游戏适配器
- 需要与 Stratagus 引擎 版本严格匹配 才能运行
- stratagus + stargus 版本必须对齐,否则不兼容
资产提取管线
startool.cpp — 从原版 StarCraft MPQ 压缩包(stardat.mpq / starcraft.mpq)中提取游戏数据
- 支持 CD 安装版和已安装版自动检测(
install.exe / stardat.mpq / starcraft.mpq)
- 提取后资产复制到 Stratagus 可读的目录结构
数据格式转换
Stargus 实现了多个 StarCraft 专有格式的读取/转换器:
| 格式 |
用途 |
关键文件 |
| GRP |
sprite 动画帧序列 |
Grp.h/cpp |
| CHK |
地图关卡数据(Rezneit Miller 格式) |
Chk.h/cpp |
| SMC/SMW |
StarCraft 地图格式 |
startool.cpp |
| CASC |
暗黑破坏神系列档案格式 |
Casc.h/cpp |
| SMACKER |
视频/过场动画 |
Smacker.h/cpp |
| WAV |
音频 |
Wav.h/cpp |
| DDS |
压缩纹理 |
Dds.h/cpp |
| PCX |
图片格式 |
Pcx.h/cpp |
tileset 转换系统
tileset/MegaTile.* — 大瓷砖图组合系统
tileset/TiledPaletteImage.* — 调色板图像切片
tileset/TilesetHub.* — tileset 中心转换器
- 处理 StarCraft 原始 tileset 数据为 Stratagus 格式
dat 数据系统
dat/DataHub.* — 所有单位/物品数据的中心访问
dat/Flingy.* — Flingy 运动数据(移动类型、速度、转向)
dat/IScript.* — StarCraft 脚本指令系统
dat/ObjectAccess.* — 单位属性访问接口
JSON 配置导出
dataset/units.json — 单位定义(攻击力/护甲/科技等)
dataset/palettes.json — 调色板配置
- Stratagus 通过 JSON 读取游戏数据而非硬编码
构建系统
- Meson(主构建系统):
meson build && ninja -C build
- CMake(备用):传统 CMakeLists.txt
- 支持 nlohmann_json(CMake subproject fallback)和 StormLib(CASC/MPQ 库)
contrib/ 包含 fog.png 和 transparent.png 等 UI 素材
玩法特点
- 运行时首次启动会提示用户提供 原版 StarCraft CD 或安装文件
- 自动提取 stardat.mpq/starcraft.mpq 中的游戏数据
- 完整保留原版 StarCraft 兵种、单位、地图数据
- 在 Stratagus 引擎上运行 StarCraft 1998 体验
对公司 AI 游戏的参考价值
| 方向 |
启示 |
| 数据驱动架构 |
JSON 配置分离游戏数据与引擎逻辑,便于 AI 读取和修改 |
| 多格式解析层 |
Kaitai Struct + 自定义解析器组合处理多种二进制格式 |
| 资产提取工具链 |
startool 的 MPQ → 可用数据管线对 AI 游戏资源管理有参考价值 |
| 外部引擎适配模式 |
Stargus 作为 Stratagus 的"游戏模块"而非独立引擎 — 类似地将 AI 逻辑与游戏引擎解耦 |
| 版本对齐依赖 |
stratagus/stargus 版本匹配约束的依赖管理策略 |
架构图
原版 StarCraft CD/MPQ
│
▼
startool 提取
│
▼
┌───────┴────────────────────────────────┐
│ Stargus 转换层 │
│ ┌──────────┐ ┌──────────┐ ┌───────┐ │
│ │ GRP 转换 │ │ CHK 转换 │ │ tileset│ │
│ │ sprites │ │ maps │ │转换 │ │
│ └──────────┘ └──────────┘ └───────┘ │
│ ┌──────────┐ ┌──────────┐ ┌───────┐ │
│ │ dat/单位 │ │SFX/音频 │ │ SMACK │ │
│ │ 数据 │ │ 转换 │ │视频 │ │
│ └──────────┘ └──────────┘ └───────┘ │
└───────┬────────────────────────────────┘
▼
┌─────────────────┐
│ Stratagus 引擎 │ ← 外部依赖(版本必须匹配)
└─────────────────┘