单位编辑:修订间差异

为自己画饼...
无编辑摘要
(为自己画饼...)
 
(未显示2个用户的15个中间版本)
第1行:
<b>序言</b><br>
{{欢迎编辑|}}
本文引导想要学习制作mod单位的玩家具有制作自己单位的能力。<br>
{{面包屑|Mods}}
<br>
 
<b>概念</b><br>
铁锈里的单位参数信息以两种形式存储着,一种是直接写在游戏的dex文件或jar文件中,和游戏核心源码在一块儿,还有一种是游戏后面版本有了mod系统后写在实体ini文件中,我们现在制作mod单位都是通过创建新的ini文件来进行的。
游戏中的原版单位的属性信息有两种存储方式:一种为游戏早期的直接写在游戏的.jar或.dex文件中,另一种,在游戏具有mod系统后,以一个单位一个.ini文件的形式进行存储。我们制作mod单位使用这种形式。<br>
 
这里的.ini文件为UTF-8文本文件,使用记事本等文本编辑器即可修改。<br>
这里的ini文件是一种以ini为文件扩展名以UTF-8为编码格式的纯文本文件,每个单位对会应一个ini文件。其内容结构上由节(Section)、键值对(Key-value Pair)组成。一个文件会包含多个节,一个节包含多个键值对,每个键会对应一个值,键和值通过<code>:</code>进行连接。
具体属性存储方式使用键值对(key: value)进行存储。即单位具体某项属性名称后跟英文冒号然后填这个属性的值。如:
<pre>
<pre style="margin: 0;padding: 5px;border: 1px solid;background-color: #fffff5;white-space: pre;overflow-x: auto;">
#节由方括号包裹
# name为单位的名称,这里值为c_interceptor
[section1]
name: c_interceptor
#每个节和每个键值对都需要单独占一行
# price为单位的造价,即单位的造价为600
#键值对写在节后表示它从属于这个节
price: 600
key1:value1
maxHp: 250
key2:value2
 
[section2]
key3:value3
 
[section3]
...
</pre>
铁锈代码规定由几种不同.ini文件内容里还有小节概念,即使用英文方括号包裹小名称并单独占一行负担划分单位不同功能。例如:
<pre style="margin: 0;padding: 5px;border: 1px solid;background-color: #fffff5;white-space: pre;overflow-x: auto;">
<pre>
# 概念型坦克的四个炮台中两个炮台的设定,[turret_cannon2]和[turret_cannon3]
#core或称核心节承担了单位的基本和杂项的属性
[turret_cannon2]
[core]
#top right cannon
#单位的名称
x: 0
name: tank
y: 0
#单位的造价
attachedTo: base2
price: 1000
copyFrom: cannon1
linkDelayWithTurret: cannon1
warmup:30
 
[turret_cannon3]
#movement或称移动节承担了单位移动相关的属性
#bottom left cannon
[movement]
x: 0
#单位的移动速度
y: 0
moveSpeed: 2
attachedTo: base3
copyFrom: cannon1
linkDelayWithTurret: cannon1
warmup:60
</pre>
<br>
 
<b>.ini文件的位置</b><br>
每个铁锈单位有这几个必要的属性才能被游戏承认,否则你会在加载时收获报错。
一个mod在文件存储意义上,是一个具有多层目录结构的文件夹。(mod直接以文件夹的形式而非.rwmod打包形式放入游戏读取目录下也可被游戏正常加载)<br>
<pre>
mod文件想要加载到游戏中应该放在:(PC端)"Rusted Warfare/mods/units/" (Android端)"rustedWarfare/units/"或"/com.corrodinggames.rts/files/units/"
[core]
<pre style="margin: 0;padding: 5px;border: 1px solid;background-color: #fffff5;white-space: pre;overflow-x: auto;">
#单位的真名
#以PC端游戏目录为例
name: tank1
mods
#单位的生命值
└─units
maxHp: 210
│ custom_units_here.txt
#单位的造价
price: 350
└─中型坦克改_v0.2 ← 该mod的文件夹
#单位的重量
│ all-units.template
mass: 3000
│ mod-info.txt
#单位的体积半径
radius: 10
├─BGM
 
├─_未完成
[graphics]
├─其他
#单位的主体贴图
├─单位
image: tank.png
│ └─中型坦克 ← 该单位的文件夹
 
│ 中型坦克.ini ← 单位“中型坦克”的.ini文件
[attack]
│ 开火.ogg
#可攻击
│ 残骸.png
canAttack: false
│ 炮塔.png
#可攻击飞行单位
│ 车身.png
canAttackFlyingUnits: false
#可攻击地面单位
└─地图
canAttackLandUnits: false
#可攻击水下单位
canAttackUnderwaterUnits: false
 
[movement]
#移动类型
movementType: LAND
</pre>
<br>
<b>接下来</b><br>
了解完.ini文件如何加载后,现在可以关注单位属性信息本身了。<br>
让我们看看我们的单位是要存在在铁锈世界里,需要有什么条件。<br>
#单位的名字是必要的,请先在脑中想一个单位的名称吧。
#单位需要有生命值,这是它在这个战争的世界里存亡的根本。
#单位应该具备空间上的体积,并加上其身体重量,这是物理的世界。
#战争需要招兵买马,生产制造都需要资源的支持,那么应该定义单位被生产出需要的资源多少。
#而生产建造需要时间,为自己mod的单位定义参差的时间,来左右游戏的节奏。
以上是单位在[core]节所应该填写的项。
#游戏是2d画面,单位应该有一个视觉上的身体,使用一张完全俯视角的图片作为单位的身体,当单位移动和旋转时,图片会移动和旋转。(呃,建筑和地图贴图是斜45°俯视,单位是垂直俯视,这是奇怪的事实)
#游戏有死亡后残骸的设定以增加真实感,出于玩家观感考虑,你应该再画出单位被摧毁后的样子。
#为单位添加其映在地板上的阴影,增加真实感。<code>image_shadow:</code>的值可以填图片路径,但通常填"AUTO"游戏自动在“身体”下绘制一个相同轮廓的半透明黑色的图片作为阴影。
以上是单位在[graphics]节所应该填写的项。
#可能您的单位需要一些攻击手段来“自保”,先使用<code>canAttack: true</code>让单位能够瞄准敌人吧。
#除了意念攻击,多数攻击手段都是有攻击距离的,使用<code>maxAttackRange:</code>填写整数来限制单位的最大攻击距离(也许你知道原版坦克的最大射程)
以上是单位在[attack]节所应该填写的项。<br>
铁锈里的攻击是炮台用于旋转瞄准和发射弹丸,弹丸用于飞行和落到敌人身上造成伤害。
<pre style="margin: 0;padding: 5px;border: 1px solid;background-color: #fffff5;white-space: pre;overflow-x: auto;">
#一个炮台
[turret_1]
x: 0 ← 炮台相对单位自身中心的x轴位置
y: 0 ← 炮台相对单位自身中心的y轴位置
projectile: 1 ← 发射哪种弹丸
shoot_sound:tank_firing:0.3 ← 射击时的音效,":0.3"是音量
shoot_flame:small ← 射击时的火焰帧动画(使用游戏自带的帧动画,有自定义的)
shoot_light:#FFEECCCC ← 射击时渲染的闪光的颜色
#这只是一个例子,有更多的参数选项
</pre>
<br>
<pre style="margin: 0;padding: 5px;border: 1px solid;background-color: #fffff5;white-space: pre;overflow-x: auto;">
#一个弹丸
[projectile_1]
directDamage: 25 ←对命中的敌人造成的伤害
life: 60 ←弹丸至多存在多长时间
speed: 5 ←弹丸的飞行速度
frame: 1 ←弹丸图片使用游戏自带贴图集的哪一帧
drawSize: 1 ←贴图绘制的大小
</pre>
[turret_NAME]和[projectile_NAME]节在一个.ini文件可以设置多个,即是一个单位可以有多个炮塔,通过变“NAME”来区分它们。
#铁锈有海陆空兵种的设定,这取决于单位的移动类型,常见有:LAND,WATER,AIR,还有HOVER(悬浮,水陆都可通行)等。
#单位移动需要设定移动速度、启动时加速的加速度和停止时减速的加速度。转向速度和加速度。
以上是[movement]节应填的内容。
 
设置单位的各个属性像是组装一台汽车,为几块功能区域选择零件,确定零件的参数,组装。在许多种属性中选择一个配方,让自己满意。<br>
单位不同属性(键)要填的值的类型是不同的。比如单位重量mass只能填正整数,建筑类单位的占地大小footprint只以<code>1,2,1,1</code>这种格式表示单位占地以单位为中心向左延伸一格向上延伸两格向右向下延伸一格。这些要求在代码表中会有提示。
设置不同兵种创造一个动态平衡的世界。<br>
 
我们可以给你的帮助是:明了的零件市场。使动态平衡的战略战术概念。
铁锈在一行的开头使用<code>#</code>来将该行的内容注释掉,即游戏在加载时会忽略这行内容。
 
 
 
== 调试单位 ==
 
=== 重新加载单位 ===
通常情况下,每次进入铁锈时,模组会被自动加载。单击主界面中“模组”按钮后,找到“重载数据”按钮,单击即可重新加载模组数据。
 
如果你正在沙盒中进行模组调试,在actions、all和modded中可以找到“Reload units”,单击此按钮铁锈将会重新加载所有单位。如果你只是更改了单位的数据,也可以在modded中单击“Quick Reload”,此时铁锈会以很快的速度重新加载单位。
 
=== Debug按钮 ===
在沙盒的actions中,有一个“Debug”选项,默认为关闭,打开此选项后,单击任意单位的血量都会看到“--Debug--”字样和当前单位的信息。
{{折叠|Debug可以显示的信息|* 单位name
* 单位id
* x
* y
* 高度
* 角度
* 图层
* 自定义资源
* 自定义内存(memory数组中的值不能显示)
* 自定义目标(customTarget1)}}
如果你的单位使用了自动触发(AutoTrigger),在打开“Debug”选项后,还可以打开“Trigger Debug”选项,打开此选项后,选中任意单位将能够看到它们的自动触发,并且能够看到自动触发中单个条件的值。<references />
 
== 相关链接 ==
 
* [[自定义内存]]
 
* [[模组导入]]
 
* [[变量]]
 
[[分类:模组制作]]
573

个编辑