简易 GIF → Westwood SHP(TS / RA2) 转换器。
本工具用于将 .gif 动图转换为《命令与征服:泰伯利亚之日 / 红色警戒2 / 尤里的复仇》可使用的 .shp 文件。
- 支持将 GIF 转换为 SHP(TS / RA2)。
- 支持读取指定
.pal调色板。 - 支持交互式命令行。
- 支持一次运行后连续转换多个 GIF。
- 如果某一次转换失败,程序不会直接退出,可以继续输入下一条命令。
- 如果输入路径没有包含目录,程序会默认从 exe 所在目录查找或输出文件。
需要将以下文件放在源码同目录:
stb_image.h
stb_image.h 可从 stb 项目获取。
- C++17
- Windows
- Visual Studio / MSVC
如果需要生成更方便分发的 exe,建议在 Release 配置中将运行库设置为:
/MT
GIF2SHP/
├─ GIF2SHP.cpp
├─ stb_image.h
├─ test.gif
├─ cameo.pal
└─ GIF2SHP.exe
直接运行程序:
.\GIF2SHP.exe进入交互模式后输入:
makeshp test.gif test.shp cameo.pal
也可以连续转换多个文件:
makeshp test.gif test.shp cameo.pal
makeshp a.gif a.shp unittem.pal
makeshp b.gif b.shp cameo.pal
exit
.\GIF2SHP.exe makeshp test.gif test.shp cameo.pal.\GIF2SHP.exe test.gif test.shp cameo.palmakeshp <gif> <outshp> <palette>
参数说明:
<gif> 输入 GIF 文件
<outshp> 输出 SHP 文件
<palette> 转换时使用的 PAL 调色板
示例:
makeshp test.gif test.shp cameo.pal
如果输入的是这种没有目录的文件名:
test.gif
test.shp
cameo.pal
程序会默认到 exe 所在目录 下查找或输出。
例如 exe 位于:
C:\Tools\GIF2SHP\
输入:
makeshp test.gif test.shp cameo.pal
实际会被解析为:
C:\Tools\GIF2SHP\test.gif
C:\Tools\GIF2SHP\test.shp
C:\Tools\GIF2SHP\cameo.pal
如果输入的是完整路径或带目录的路径,程序会按原路径处理。
例如:
makeshp C:\input\cat.gif C:\output\cat.shp C:\pal\cameo.pal
或者:
makeshp .\test.gif .\test.shp .\cameo.pal
或者:
makeshp folder\test.gif folder\test.shp folder\cameo.pal
如果路径中有空格,需要使用双引号:
makeshp "C:\input files\cat.gif" "C:\out files\cat.shp" "C:\pal files\cameo.pal"
根据实际用途选择合适的 .pal 文件:
cameo.pal 侧边栏图标 / cameo
unittem.pal 温带单位
unitsno.pal 雪地单位
isotem.pal 温带地形 / 建筑相关
isosno.pal 雪地地形 / 建筑相关
如果生成的 SHP 在编辑器中颜色不对,请确认:
- 转换时使用的
.pal是否正确。 - 查看 SHP 时使用的
.pal是否与转换时一致。 - 当前素材是否适合该调色板。
本工具生成的是基础 SHP 文件,适合用于测试和简单素材转换。
需要注意:
- SHP 本身只保存调色板索引,不直接保存 RGB 颜色。
- 颜色是否正确取决于转换时和查看时使用的
.pal。 - 照片类 GIF、复杂渐变、抗锯齿、阴影和压缩噪点可能会导致颜色变脏。
- 如果要制作游戏内正式素材,建议尽量使用颜色简单、边缘清晰、背景透明的 GIF。
- 本工具当前优先保证转换稳定性,不追求最小文件体积。
建议先使用简单 GIF 测试:
尺寸:32x32 / 48x48 / 64x64
背景:透明
颜色:尽量少
帧数:1~16 帧
不建议一开始就使用照片类 GIF 测试,因为照片类 GIF 对 SHP + PAL 来说颜色非常复杂。
.\GIF2SHP.exe然后输入:
makeshp test.gif test.shp cameo.pal
输出成功后,会生成:
test.shp
可以使用 OS SHP Builder 或 XCC Mixer 打开检查效果。