universal-modder实战:如何在帝国时代2里造一个全新文明(3D模型转16向精灵图全流程)
【免费下载链接】universal-modderPoint Claude at any game. Skills, tools and the fal MCP that let Claude Code mod almost any PC game you own: recon, reverse engineering, fal-generated art/3D/audio, in-game testing, showcase videos.项目地址: https://gitcode.com/gh_mirrors/un/universal-modder
🎮universal-modder是一套让 AI 编程代理为 PC 游戏制作 MOD 的工具集。这篇文章带你用它为《帝国时代2:决定版》从零打造一个可玩的新文明——"旧金山人":AI 生成单位概念图与 3D 模型,把 3D 模型渲染成游戏需要的16 个朝向精灵图帧,再写入游戏自己的.sld精灵格式,最后组装成数据 MOD 安装进游戏。整个过程就是一个完整的"3D 模型转 16 向精灵图"流水线。
最终效果:一个完整的新文明
这个 MOD 里的"旧金山人"文明包含:
- 🚗Robotaxi(无人出租车):城堡时代训练的独特单位,一辆会撞人的自动驾驶车,还有精英升级版
- 🚁Delivery Drone(快递无人机):城堡时代起的悬浮远程单位
- 🔺泛美金字塔:新奇迹建筑
- ✨ 文明加成(村民工作 +10%、骑兵移动 +10%)、两个独特科技、专属徽章与科技树
它占用了勃艮第人的槽位,只有在遭遇战大厅选中这个数据 MOD 时才生效,原版游戏完全不受影响,随时可移除。完整说明见 examples/aoe2-de-civ/README.md,踩坑经验沉淀在 knowledge/games/age-of-empires-ii-de/san-franciscans-civ.md。
快速开始:安装 universal-modder
只需一个 Python 环境(3.10+)、ffmpeg,以及重新渲染精灵图时的 Blender:
git clone https://gitcode.com/gh_mirrors/un/universal-modder uv tool install git+https://gitcode.com/gh_mirrors/un/universal-modder生成美术资源需要 fal 的 API Key(export FAL_KEY=...)。本示例脚本在 examples/aoe2-de-civ/,核心是三个脚本:make_sprites.py(3D 转精灵)、build_mod.py(生成数据 MOD)、sld.py(逆向出来的.sld精灵读写器)。
第一步:AI 生成概念图,再转成 3D 模型
美术资源全部由 fal 生成,提示词集中写在 assets/gen.sh,流程分两段:
- 概念图:用 FLUX 画"白色背景、干净产品照"风格的单位概念图。注意一个关键细节——想让哪个部位显示玩家颜色,就把它画成高饱和的蓝色,后面打包精灵时会按色相自动掩码。
- 3D 模型:
um fal model3d把概念图转成带贴图的 GLB 网格(Trellis 图生 3D 模型)。
奇迹建筑不走 3D:它是单帧贴图,直接用 FLUX 按帝国时代2 的等距视角画出来,make_wonder.py 再把它拟合到 5x5 格占地范围。
第二步:3D 模型转 16 向精灵图帧
这是整个流水线最核心的魔法。帝国时代2 的引擎要求:每个单位16 个朝向(从正东开始顺时针每 22.5° 一帧),相机为正交投影、俯角 30°,单位接地点位于画布中心。
um render3d --preset aoe2一条命令就搞定,Blender 会自动摆好相机和灯光,对 idle(待机)、walk(行走)、attack(攻击)、death(死亡)等每个动画逐帧渲染,外加一轮独立的地面阴影通道:
python make_sprites.py all robotaxi drone渲染参数(模型朝向forward_yaw、1x 下的像素长度length、每个动画的帧数与时长)都在 civ.py 里声明,改数即可微调。生成build/previews/<unit>_sheet.png预览表:一行一个动画、16 列朝向,一眼就能看出车头朝向或大小是否合适。
第三步:精灵帧打包成游戏的 .sld 文件
.sld是帝国时代2 DE 的专有精灵格式:BC1 压缩的主体层,外加 BC4 的阴影层和玩家颜色层。sld.py 是这个格式逆向出来的读写器,打包前先对原版骑士精灵做了往返测试(解码→编码→再解码,平均误差 0.91/255),确保格式完全正确。
打包时自动完成三件事(逻辑在 make_sprites.py):
- 🔵蓝色像素 → 玩家颜色掩码:脱色成灰色渐变,游戏运行时染上队伍色
- 🔥死亡帧做"烧焦"处理:压暗成残骸质感
- 📦 写入
build/graphics/*.sld,主体、阴影、玩家色三层分开放
第四步:构建数据 MOD 并安装进游戏
数据层面由 build_mod.py 基于genieutils-py完成:把新文明写进游戏数据的槽位 36,深拷贝模板单位再改属性,追加科技、字符串、图标与 JSON 配置。
python make_wonder.py # 奇迹精灵 python build_mod.py --install # 生成并安装到 <profile>/mods/local/游戏里:单人 → 遭遇战 →Data Mod 下拉框选 San Franciscans,文明列表里就能看到"旧金山人"(取代了勃艮第人)。分享前建议跑一下um publish check,确保没有混入游戏原文件。
如何改成你自己的文明
作者把整个文明定义成了纯数据,只改一个文件civ.py 就能造自己的文明:
- 选要占用的槽位(
SLOT)和基础文明(BASE_CIV,提供科技树与建筑风格) - 填文明名、加成、
UNITS(每个单位只写属性差异,其余从模板单位继承)和两个独特科技 - 换成你自己的美术:改 assets/gen.sh 的提示词重新生成,或直接放入同名文件
make_sprites.py all <unit>→build_mod.py --install→ 大厅选 MOD
容易踩的坑
- ❓新文明不出现在选择器:可执行文件的文明表是硬编码的,新增文明能玩但选不到,必须"替换槽位"
- ❓MOD 像没生效:带
.dat的数据 MOD 必须在大厅 Data Mod 下拉框里勾选 - ❓游戏内图标不变:命令面板图标来自不可扩展的图集,游戏内用原版图标,菜单里才用自己的美术
这套流程同样适用于其他老游戏——16 向精灵图只是其中一种投影,um render3d还支持iso8、topdown、turntable等预设。想要更完整的踩坑记录,可以翻 examples/aoe2-de-civ/README.md 的 Lessons 一节,那里把每一个"症状→原因→修复"都记下来了。
【免费下载链接】universal-modderPoint Claude at any game. Skills, tools and the fal MCP that let Claude Code mod almost any PC game you own: recon, reverse engineering, fal-generated art/3D/audio, in-game testing, showcase videos.项目地址: https://gitcode.com/gh_mirrors/un/universal-modder
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考