《Elemental: Reforged》Steam创意工坊支持即将上线。本指南将逐步教你如何使用它。
简介
制作Steam创意工坊模组
欢迎查阅《Elemental: Reforged》的综合模组制作指南!本指南将带你了解如何为游戏创建模组并上传至Steam创意工坊,供其他玩家体验。
我们将采用实操方法,逐步构建一个完整可用的模组:仪式之剑——这是一把华丽的刀刃,专为仪式和彰显身份而设计,而非追求纯粹的战斗威力。本指南结束时,你将了解如何:
创建具有正确结构的模组文件夹
在XML中定义物品、武器和其他内容
为你的内容添加本地化文本
将你的创作上传至Steam创意工坊
你的第一个模组
步骤2:创建目录结构
你的模组文件夹必须镜像游戏的文件结构。这能告诉游戏在哪里找到你的内容。
对于我们的剑模组,请创建以下文件夹和文件:
CeremonialSword
├── Data
│ ├── GameCore
│ │ └── CeremonialSword_Weapons.xml
│ └── Localization
│ └── English
│ └── CeremonialSword_Strings.xml
各文件夹包含的内容
Data GameCore - 游戏内容定义(物品、单位、法术等)然后,只需输入你的模组名称(其内部名称),它就会出现在你的物品栏中。
上传至Steam创意工坊
上传至Steam创意工坊
一旦你的模组可以正常运行,你就可以通过Steam创意工坊与全世界分享它。
打开上传界面
从主菜单点击【模组】按钮
从列表中选择你的模组(如【CeremonialSword】)
点击【上传】按钮
或者,如果你正在创建新模组:
从主菜单点击【模组】按钮
点击【上传】
点击【设置模组路径】并浏览到你的模组文件夹
上传对话框
【上传至创意工坊】界面包含多个字段:
【名称】
模组在Steam创意工坊上的显示名称。保持清晰且具有描述性。
示例:仪式之剑
【描述】
关于你的模组所添加内容的简短说明。这会显示在创意工坊列表中。
示例:一把华丽的刀刃,专为仪式和典礼打造,而非战斗。其镀金剑柄和抛光刀刃使其成为身份的象征,不过在战斗中仍可使用。
作者
自动填充你的Steam用户名。
预览图片
点击选择以挑选mod的缩略图。此图片将显示在Steam创意工坊页面上。推荐尺寸:512x512像素或类似的正方形格式
图片将自动复制到你的模组文件夹中
使用能代表你模组的截图或自定义图片
标签
点击【设置标签】以选择模组分类:
物品 - 装备、武器、盔甲、饰品
武器 - 专门的武器
法术 - 魔法技能
单位 - 新单位类型或怪物
任务 - 任务内容
以及更多...
选择所有适用的标签,以帮助玩家找到你的模组。可见性
控制谁可以查看你的模组:
所有人 - 公开,所有Steam用户可见
仅好友 - 只有你的Steam好友可以查看
私密 - 只有你自己可以查看(适合测试)
状态
显示当前上传状态:
准备上传 - 所有必填字段均已填写
缺少名称 - 你需要输入名称
缺少描述 - 你需要输入描述
缺少标签 - 你需要至少选择一个标签
上传
当状态显示为准备上传时:
检查所有信息
点击上传按钮
等待上传完成
完成后你将看到成功消息
上传后
你的模组现已发布到Steam创意工坊!玩家可以:
通过搜索创意工坊找到它
订阅以自动下载
对你的模组进行评分和评论
你可以随时通过修改文件并重新上传来更新你的模组。
内容类型
内容类型参考
不同类型的内容使用不同的根XML元素:
内容类型 根元素 示例文件名
物品、 armor、武器 <GameItemTypes> MyMod_Items.xml
法术 <Spells> MyMod_Spells.xml
单位和怪物 <UnitTypes> MyMod_Units.xml
制作配方 <RecipeTypes> MyMod_Recipes.xml
奖励小屋 <GoodieHutTypes> MyMod_GoodieHuts.xml
任务 <Quests> MyMod_Quests.xml
能力 <Abilities> MyMod_Abilities.本地化文本
最佳实践
遵循以下指南,创建专业且兼容的模组。
1. 使用唯一名称
始终在InternalName前加上你的模组名称作为前缀,以避免冲突:
正确示例:
<GameItemType InternalName="CeremonialSword_Blade">
错误示例 - 可能与其他模组冲突:
<GameItemType InternalName="Sword">
2. 始终进行文本本地化
切勿在物品定义中直接硬编码显示文本:
正确示例:
<DisplayName>TXT_CEREMONIALSWORD_NAME</DisplayName>
错误示例:
<DisplayName>Ceremonial Sword</DisplayName>
3. 复用现有美术资源
游戏拥有数百种美术资源。浏览基础游戏文件,查找可复用的ArtDef值。这能节省时间并确保你的物品看起来精致。
4. 与基础游戏保持平衡
参考基础游戏中类似物品的合适属性范围:
普通物品:小幅加成(+5至+10攻击)
稀有物品:中等加成(+10至+15攻击)
史诗物品:良好加成(+15至+25攻击)
传说物品:显著加成(+25或更高)
5. 上传前测试
上传至创意工坊前务必在本地测试你的模组。检查以下内容:
物品是否在商店中出现
名称和描述是否正确显示
属性是否如预期生效
加载时游戏是否崩溃
6.撰写优质描述
你的Steam创意工坊描述应包含以下内容:
- 说明该模组添加的内容
- 列出物品的属性或效果
- 包含任何特殊功能或背景故事
- 如相关,提及与其他模组的兼容性
故障排除
常见问题及解决方法。Mod无法加载
1. 确认你的mod文件夹直接位于Mods文件夹下(不要嵌套在其他文件夹中)
2. 检查是否存在XML语法错误——缺少闭合标签或未加引号的属性
3. 确保mod已在Mod管理器中启用
物品不显示
1. 确认你的InternalName是唯一的
2. 检查物品文件和字符串文件中的本地化键是否匹配
3. 尝试提高Likelihood值使物品更常见
4. 开始新游戏——某些更改不会影响已保存的游戏
游戏加载时崩溃
1. 检查是否存在XML解析错误——即使是小的拼写错误也可能导致崩溃
2. 确认所有ArtDef值引用的是实际存在的资源
3. 确保数值有效(不要在数字字段中输入文本)
4. 尝试移除mod以确认是否是mod导致的问题
上传错误
缺少名称——在名称处输入名称字段缺失描述 - 请输入描述 标签缺失 - 点击设置标签并选择至少一个类别 用户非作者 - 您只能更新您最初创建的模组 XML语法提示 每个开始标签都需要一个结束标签:<Type>Weapon</Type> 标签区分大小写:<Type> 与 <type> 不同 使用带有XML高亮显示的文本编辑器来捕捉错误 参考 了解XML结构 现在让我们分解武器定义的每个部分的含义。 根元素 <GameItemTypes> 这告诉游戏“此文件包含物品定义”。不同的内容类型使用不同的根元素(请参阅后面的参考部分)。数据本地化英语 - 为你的内容显示文本
重要提示
文件夹结构必须完全匹配。如果将文件放在错误的位置,游戏将无法找到它们。
步骤2:创建目录结构
你的模组文件夹必须镜像游戏的文件结构。这能告诉游戏在哪里找到你的内容。
对于我们的剑模组,请创建以下文件夹和文件:
CeremonialSword
├── Data
│ ├── GameCore
│ │ └── CeremonialSword_Weapons.xml
│ └── Localization
│ └── English
│ └── CeremonialSword_Strings.xml
各文件夹包含内容
Data GameCore - 游戏内容定义(物品、单位、法术等)物品标识
<游戏物品类型 内部名称="CeremonialSword_Blade">
内部名称 - 物品的唯一标识符
重要提示:务必以你的模组名称作为前缀,以避免与其他模组产生冲突
<显示名称>TXT_CEREMONIALSWORD_NAME</显示名称>
<描述>TXT_CEREMONIALSWORD_DESC</描述>
这些引用的是你的本地化键,而非实际文本。游戏会在你的字符串文件中查找这些键以获取显示文本。武器属性
类型 - 装备槽位:
武器 - 剑、斧、法杖、弓
饰品 - 戒指、项链、饰品
躯干 - 胸甲
足部 - 靴子
头部 - 头盔、皇冠
盾牌 - 盾牌
坐骑 - 马匹、魔法生物
武器类型 - 武器的握持方式:
单手 - 可搭配盾牌使用
双手 - 需双手握持
钝器 - 棍棒、锤类
商店价值
基础金币价值。商店以约50%的价格出售物品;玩家出售时可获得约25%。
稀有度显示 - 界面中显示的颜色:
普通 - 白色
uncommon - 绿色
rare - 蓝色
epic - 紫色
legendary - 橙色
出现概率
该物品在战利品和商店中的出现频率。数值越高=越常见。基础游戏物品的数值范围为5(非常稀有)到100+(常见)。英雄专属
1 = 仅英雄可装备此物品
0 = 常规单位也可使用此物品
游戏修正值 - 效果
游戏修正值定义物品在战斗中的实际作用。<游戏修正器>
<修正类型>单位</修正类型>
<属性>调整单位属性</属性>
<字符串值>单位属性_攻击_穿刺</字符串值>
<数值>10</数值>
</游戏修正器>
详细解析
元素 用途 修正类型 影响对象:单位、资源、地图或城市 属性 执行的操作(调整单位属性用于修改某项属性) 字符串值 要修改的具体属性 数值 增加的数值(使用负数表示减少) 提供 物品工具提示中显示的 bonus 说明文本
多重修正
物品可以拥有多种效果!我们的仪式之剑有两个效果:
<游戏修正>
<修正类型>单位</修正类型>
<属性>调整单位属性</属性>
<字符串值>单位属性_攻击_穿刺</字符串值>
<数值>10</数值>
</游戏修正>
<游戏修正>
<修正类型>单位</修正类型>
<属性>调整单位属性</属性>
<字符串值>单位属性_精准度</字符串值>
<数值>5</数值>
<提供>仪式之剑提供的加成说明</提供>
</游戏修正>
第一个效果增加10点物理攻击。第二个效果增加5%精准度,并显示一个解释该加成的提示文本。通用单位属性参考
使用AdjustUnitStat修改器时,请使用以下属性名称:
战斗属性
属性名称 描述
UnitStat_Attack_Pierce 物理攻击伤害
UnitStat_Attack_Fire 火焰伤害
UnitStat_Attack_Cold 寒冷伤害
UnitStat_Attack_Lightning 闪电伤害
UnitStat_HitPoints 最大生命值
UnitStat_CombatSpeed 战术战斗中的 initiative
UnitStat_MaxCounterAttack 每回合反击次数
防御属性
属性名称 描述
UnitStat_Defense_Pierce 物理防御
UnitStat_ResistFire 火焰抗性(%)
UnitStat_ResistCold 寒冷抗性(%)
UnitStat_ResistLightning 闪电抗性(%)
UnitStat_Dodge 闪避攻击几率(%)
UnitStat_DamageReflect 反弹给攻击者的伤害
命中与暴击
属性名称 描述
UnitStat_Accuracy 命中率(%)单位属性_暴击几率 暴击几率(%)
单位属性_暴击倍率 暴击伤害倍率
移动
属性名称 描述
单位属性_移动力 世界地图上的移动点数
视觉自定义
艺术定义 <ArtDef>Shortsword_Crude_ArtDef</ArtDef> 此引用来自基础游戏中现有的艺术定义。开始时,重用现有艺术资源是最简单的方法。
自定义染色
你可以通过对现有艺术资源进行染色,为物品赋予独特外观:
<GameItemTypeArtDef InternalName="CeremonialSword_ArtDef">
<GameItemTypeModelPack InternalName="CeremonialSword_Default">
<IconFile>W_Rusty_Shortsword_01.TintR、TintG、TintB - RGB颜色值(0-255)
这些色调会为基础图标着色,以创建独特的颜色
我们的仪式之剑使用金色色调(255, 215, 0),使其看起来庄严华丽
常见色调示例
金色/镀金:R=255,G=215,B=0
银色:R=192,G=192,B=192
火红:R=255,G=69,B=0
冰蓝:R=135,G=206,B=250
剧毒绿:R=50,G=205,B=50
暗影紫:R=148,G=0,B=211
模组加载机制
了解游戏加载模组的方式有助于更好地组织你的内容。加载流程
游戏启动时会扫描Mods文件夹
每个子文件夹都会被识别为潜在的Mod
启用的Mod会按照Mod管理器中指定的顺序加载
Mod文件会添加(而非替换)基础游戏内容
具有唯一InternalName值的项目会被添加到游戏中
具有重复InternalName值的项目会覆盖基础版本
用户文件夹
Mods User文件夹是特殊的:
它始终会自动启用
它会在其他Mod之前加载
非常适合用于你希望始终生效的个人调整
加载顺序很重要
在Mod管理器中,你可以使用箭头按钮重新排序Mod。较晚加载的Mod可以覆盖较早加载的Mod内容。
如果两个Mod修改了同一个项目,最后加载的那个会“胜出”。数据本地化英语 - 显示您内容的文本
重要提示
文件夹结构必须完全匹配。如果将文件放在错误位置,游戏将无法找到它们。
步骤3:创建武器定义
现在我们创建实际武器。打开文本编辑器(记事本即可)并创建文件:
Data GameCore CeremonialSword_Weapons.xml
将以下内容复制到文件中:
<?xml version='1.0' encoding='utf-8'?><游戏物品类型>
<游戏物品类型 内部名称="CeremonialSword_Blade">
<显示名称>TXT_CEREMONIALSWORD_NAME</显示名称>
<描述>TXT_CEREMONIALSWORD_DESC</描述>
<类型>武器</类型>
<武器类型>单手</武器类型>
<武器升级类型>刀刃</武器升级类型>
<可装备>1</可装备>
<商店价值>85</商店价值>
<稀有度显示> uncommon</稀有度显示>
<出现概率>25</出现概率>
<仅英雄可用>1</仅英雄可用>
<游戏修正器>
<修正类型>单位</修正类型>
<属性>调整单位属性</属性>
<字符串值>UnitStat_Attack_Pierce</字符串值>
<数值>10</数值>
</游戏修正器>
<游戏修正器><ModType>单位</ModType> <Attribute>调整单位属性</Attribute> <StrVal>单位属性_精准度</StrVal> <Value>5</Value> <Provides>TXT_CEREMONIALSWORD_PROVIDES</Provides> </GameModifier> <AIData AIPersonality="AI_General"> <AIPriority>40</AIPriority> </AIData> <ArtDef>短剑_粗糙_艺术定义</ArtDef> <GameItemTypeArtDef InternalName="CeremonialSword_ArtDef"> <GameItemTypeModelPack InternalName="CeremonialSword_Default"> <IconFile>W_Rusty_Shortsword_01.武器的主要区别
武器与饰品相比具有一些特殊属性:
1. 武器类型 - 武器的握持方式:单手、双手、钝器等。
2. 武器升级类型 - 升级类别:刀刃、钝器、法杖等。HeroOnly - 若仅英雄可使用此武器,则设为1
本地化(可选)
步骤4:创建本地化字符串
现在添加玩家将看到的显示文本。创建文件:
Data Localization English CeremonialSword_Strings.xml
将以下内容复制到文件中:
<GameText>
<Locale ID="en_US">
<Line Key="TXT_CEREMONIALSWORD_NAME">
<Text>仪式之剑</Text>
</Line>
<Line Key="TXT_CEREMONIALSWORD_DESC">
<Text>一把为仪式和典礼而非战斗打造的华丽刀刃。其镀金剑柄和抛光剑身使其成为身份的象征,不过在战斗中仍可使用。为什么使用单独的文本文件?
将文本与物品定义分开保存有以下好处:
1.便于翻译成其他语言
2.让你的模组结构更清晰
3.无需修改游戏逻辑即可轻松编辑文本
测试你的模组
步骤5:在本地测试模组
上传至创意工坊前,请测试模组确保其能正常运行!启动《元素:重铸》
从主菜单点击【模组】按钮
在已安装模组列表中找到【CeremonialSword】
勾选方框以启用该模组
点击【完成】保存更改
开始新游戏
寻找物品
仪式之剑(Ceremonial Sword)现在会出现在:
城市中的商店库存
敌人掉落的战利品
宝箱和补给小屋
测试提示
检查城市中的武器商店——你的剑会随机出现
【出现概率】值(25)意味着它属于较为罕见的物品
如果没有立即找到,请多检查几家不同的商店
确认名称、描述和属性显示正确
重要提示:上传至创意工坊前务必先进行本地测试!
按下Ctrl+Shift+S可弹出生成对话框。