单位编辑:修订间差异
(等) |
(为自己画饼...) |
||
(未显示同一用户的2个中间版本) | |||
第1行: | 第1行: | ||
<b>序言</b><br> |
|||
本页面指导mod制作初学者制作游戏中的单位。 |
|||
本文引导想要学习制作mod单位的玩家具有制作自己单位的能力。<br> |
|||
<br> |
|||
<b>概念</b><br> |
|||
游戏中的原版单位的属性信息有两种存储方式:一种为游戏早期的直接写在游戏的.jar或.dex文件中,另一种,在游戏具有mod系统后,以一个单位一个.ini文件的形式进行存储。我们制作mod单位使用这种形式。<br> |
|||
这里的.ini文件为UTF-8文本文件,使用记事本等文本编辑器即可修改。<br> |
|||
具体属性存储方式使用键值对(key: value)进行存储。即单位具体某项属性名称后跟英文冒号然后填这个属性的值。如: |
|||
<pre style="margin: 0;padding: 5px;border: 1px solid;background-color: #fffff5;white-space: pre;overflow-x: auto;"> |
|||
# name为单位的名称,这里值为c_interceptor |
|||
name: c_interceptor |
|||
# price为单位的造价,即单位的造价为600 |
|||
price: 600 |
|||
maxHp: 250 |
|||
</pre> |
|||
.ini文件内容里还有小节的概念,即使用英文方括号包裹小节名称并单独占一行来划分单位的不同功能,如: |
|||
<pre style="margin: 0;padding: 5px;border: 1px solid;background-color: #fffff5;white-space: pre;overflow-x: auto;"> |
|||
# 概念型坦克的四个炮台中两个炮台的设定,[turret_cannon2]和[turret_cannon3] |
|||
[turret_cannon2] |
|||
#top right cannon |
|||
x: 0 |
|||
y: 0 |
|||
attachedTo: base2 |
|||
copyFrom: cannon1 |
|||
linkDelayWithTurret: cannon1 |
|||
warmup:30 |
|||
[turret_cannon3] |
|||
#bottom left cannon |
|||
x: 0 |
|||
y: 0 |
|||
attachedTo: base3 |
|||
copyFrom: cannon1 |
|||
linkDelayWithTurret: cannon1 |
|||
warmup:60 |
|||
</pre> |
|||
<br> |
|||
<b>.ini文件的位置</b><br> |
|||
一个mod在文件存储意义上,是一个具有多层目录结构的文件夹。(mod直接以文件夹的形式而非.rwmod打包形式放入游戏读取目录下也可被游戏正常加载)<br> |
|||
mod文件想要加载到游戏中应该放在:(PC端)"Rusted Warfare/mods/units/" (Android端)"rustedWarfare/units/"或"/com.corrodinggames.rts/files/units/" |
|||
<pre style="margin: 0;padding: 5px;border: 1px solid;background-color: #fffff5;white-space: pre;overflow-x: auto;"> |
|||
#以PC端游戏目录为例 |
|||
mods |
|||
└─units |
|||
│ custom_units_here.txt |
|||
│ |
|||
└─中型坦克改_v0.2 ← 该mod的文件夹 |
|||
│ all-units.template |
|||
│ mod-info.txt |
|||
│ |
|||
├─BGM |
|||
├─_未完成 |
|||
├─其他 |
|||
├─单位 |
|||
│ └─中型坦克 ← 该单位的文件夹 |
|||
│ 中型坦克.ini ← 单位“中型坦克”的.ini文件 |
|||
│ 开火.ogg |
|||
│ 残骸.png |
|||
│ 炮塔.png |
|||
│ 车身.png |
|||
│ |
|||
└─地图 |
|||
</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> |
|||
==== 单位的界定 ==== |
|||
设置不同兵种创造一个动态平衡的世界。<br> |
|||
游戏中,具有名称、生命值、半径、重量的单元。 |
|||
我们可以给你的帮助是:明了的零件市场。使动态平衡的战略战术概念。 |
|||
==== 游戏存储单位属性的方式 ==== |
|||
游戏使用传统意义上的.ini配置文件格式存储单位的属性信息。<br> |
|||
包含的.ini文件的特征:UTF-8文本文件、小节(Section)、键值对(Key-value)。 |
|||
==== 游戏如何将单位配置文件信息加载到游戏中 ==== |
|||
先将单位.ini文件置于指定目录,然后通过游戏内的mod管理界面对mod文件进行扫描和加载。 |
|||
==== 单位中可用的属性API及配置文件语法在哪里 ==== |
|||
见:[https://docs.google.com/spreadsheets/d/1aeP3pUic0IutZlgGix_cM8xR7LEH44gS4itAxETK954 Google 文档]<br> |
|||
上面表格文档记录了大多数属性API关键字和功能描述。但具体代码细节未能详尽,需要mod制作者留心在游戏中测试和记录。<br> |
|||
单位配置文件具有特殊语法,本文会在后面篇章进行介绍。 |
|||
==== 单位的存在机制 ==== |
|||
<b>地图</b><br> |
|||
单位活动在地图之上, |
2024年2月26日 (一) 22:19的最新版本
序言
本文引导想要学习制作mod单位的玩家具有制作自己单位的能力。
概念
游戏中的原版单位的属性信息有两种存储方式:一种为游戏早期的直接写在游戏的.jar或.dex文件中,另一种,在游戏具有mod系统后,以一个单位一个.ini文件的形式进行存储。我们制作mod单位使用这种形式。
这里的.ini文件为UTF-8文本文件,使用记事本等文本编辑器即可修改。
具体属性存储方式使用键值对(key: value)进行存储。即单位具体某项属性名称后跟英文冒号然后填这个属性的值。如:
# name为单位的名称,这里值为c_interceptor name: c_interceptor # price为单位的造价,即单位的造价为600 price: 600 maxHp: 250
.ini文件内容里还有小节的概念,即使用英文方括号包裹小节名称并单独占一行来划分单位的不同功能,如:
# 概念型坦克的四个炮台中两个炮台的设定,[turret_cannon2]和[turret_cannon3] [turret_cannon2] #top right cannon x: 0 y: 0 attachedTo: base2 copyFrom: cannon1 linkDelayWithTurret: cannon1 warmup:30 [turret_cannon3] #bottom left cannon x: 0 y: 0 attachedTo: base3 copyFrom: cannon1 linkDelayWithTurret: cannon1 warmup:60
.ini文件的位置
一个mod在文件存储意义上,是一个具有多层目录结构的文件夹。(mod直接以文件夹的形式而非.rwmod打包形式放入游戏读取目录下也可被游戏正常加载)
mod文件想要加载到游戏中应该放在:(PC端)"Rusted Warfare/mods/units/" (Android端)"rustedWarfare/units/"或"/com.corrodinggames.rts/files/units/"
#以PC端游戏目录为例 mods └─units │ custom_units_here.txt │ └─中型坦克改_v0.2 ← 该mod的文件夹 │ all-units.template │ mod-info.txt │ ├─BGM ├─_未完成 ├─其他 ├─单位 │ └─中型坦克 ← 该单位的文件夹 │ 中型坦克.ini ← 单位“中型坦克”的.ini文件 │ 开火.ogg │ 残骸.png │ 炮塔.png │ 车身.png │ └─地图
接下来
了解完.ini文件如何加载后,现在可以关注单位属性信息本身了。
让我们看看我们的单位是要存在在铁锈世界里,需要有什么条件。
- 单位的名字是必要的,请先在脑中想一个单位的名称吧。
- 单位需要有生命值,这是它在这个战争的世界里存亡的根本。
- 单位应该具备空间上的体积,并加上其身体重量,这是物理的世界。
- 战争需要招兵买马,生产制造都需要资源的支持,那么应该定义单位被生产出需要的资源多少。
- 而生产建造需要时间,为自己mod的单位定义参差的时间,来左右游戏的节奏。
以上是单位在[core]节所应该填写的项。
- 游戏是2d画面,单位应该有一个视觉上的身体,使用一张完全俯视角的图片作为单位的身体,当单位移动和旋转时,图片会移动和旋转。(呃,建筑和地图贴图是斜45°俯视,单位是垂直俯视,这是奇怪的事实)
- 游戏有死亡后残骸的设定以增加真实感,出于玩家观感考虑,你应该再画出单位被摧毁后的样子。
- 为单位添加其映在地板上的阴影,增加真实感。
image_shadow:
的值可以填图片路径,但通常填"AUTO"游戏自动在“身体”下绘制一个相同轮廓的半透明黑色的图片作为阴影。
以上是单位在[graphics]节所应该填写的项。
- 可能您的单位需要一些攻击手段来“自保”,先使用
canAttack: true
让单位能够瞄准敌人吧。 - 除了意念攻击,多数攻击手段都是有攻击距离的,使用
maxAttackRange:
填写整数来限制单位的最大攻击距离(也许你知道原版坦克的最大射程)
以上是单位在[attack]节所应该填写的项。
铁锈里的攻击是炮台用于旋转瞄准和发射弹丸,弹丸用于飞行和落到敌人身上造成伤害。
#一个炮台 [turret_1] x: 0 ← 炮台相对单位自身中心的x轴位置 y: 0 ← 炮台相对单位自身中心的y轴位置 projectile: 1 ← 发射哪种弹丸 shoot_sound:tank_firing:0.3 ← 射击时的音效,":0.3"是音量 shoot_flame:small ← 射击时的火焰帧动画(使用游戏自带的帧动画,有自定义的) shoot_light:#FFEECCCC ← 射击时渲染的闪光的颜色 #这只是一个例子,有更多的参数选项
#一个弹丸 [projectile_1] directDamage: 25 ←对命中的敌人造成的伤害 life: 60 ←弹丸至多存在多长时间 speed: 5 ←弹丸的飞行速度 frame: 1 ←弹丸图片使用游戏自带贴图集的哪一帧 drawSize: 1 ←贴图绘制的大小
[turret_NAME]和[projectile_NAME]节在一个.ini文件可以设置多个,即是一个单位可以有多个炮塔,通过变“NAME”来区分它们。
- 铁锈有海陆空兵种的设定,这取决于单位的移动类型,常见有:LAND,WATER,AIR,还有HOVER(悬浮,水陆都可通行)等。
- 单位移动需要设定移动速度、启动时加速的加速度和停止时减速的加速度。转向速度和加速度。
以上是[movement]节应填的内容。
设置单位的各个属性像是组装一台汽车,为几块功能区域选择零件,确定零件的参数,组装。在许多种属性中选择一个配方,让自己满意。
设置不同兵种创造一个动态平衡的世界。
我们可以给你的帮助是:明了的零件市场。使动态平衡的战略战术概念。