单位编辑:修订间差异

来自RustedWarfare Wiki
无编辑摘要
无编辑摘要
标签移动版编辑 移动版网页编辑
 
(未显示2个用户的18个中间版本)
第1行: 第1行:
{{欢迎编辑|}}
游戏通过读取"Rusted Warfare\mods\units"目录下的mod文件来加载mod。<br>
{{面包屑|Mods}}
".rwmod"文件是mod的打包文件格式,实际游戏可通过直接读取目录下的mod文件夹来读取mod数据。<br>
 
一个常规的mod文件夹目录结构如下所示:<br>
铁锈里的单位参数信息以两种形式存储着,一种是直接写在游戏的dex文件或jar文件中,和游戏核心源码在一块儿,还有一种是游戏后面版本有了mod系统后写在实体ini文件中,我们现在制作mod单位都是通过创建新的ini文件来进行的。
<pre style="margin: 0;padding: 5px;border: 1px solid;background-color: #fffff5;white-space: pre;overflow-x: auto;">
 
XX模组
这里的ini文件是一种以ini为文件扩展名以UTF-8为编码格式的纯文本文件,每个单位对会应一个ini文件。其内容结构上由节(Section)、键值对(Key-value Pair)组成。一个文件会包含多个节,一个节包含多个键值对,每个键会对应一个值,键和值通过<code>:</code>进行连接。
  |- 单位
<pre>
      |- xx单位
#节由方括号包裹
            |- xx单位.ini
[section1]
            |- xx单位_身体.png
#每个节和每个键值对都需要单独占一行
            |- xx单位_炮塔.png
#键值对写在节后表示它从属于这个节
            |- xx单位_残骸.png
key1:value1
            |- xx单位_开火.ogg
key2:value2
            |- xx单位_子弹.png
            |- xx单位_子弹飞行轨迹.png
      |- all-units.template
  |- 地图
      |- xx.tmx
      |- xx_map.png
  |- 音乐
      |- xx.ogg
  |- mod-info.txt
</pre>
如果我们要创建一个有效的mod,其目录结构至少应该为:<br>
<pre style="margin: 0;padding: 5px;border: 1px solid;background-color: #fffff5;white-space: pre;overflow-x: auto;">
XX模组
  |- 单位
      |- xx单位
            |- xx单位.ini
      |- all-units.template
  |- mod-info.txt
</pre>
其中,mod-info.txt包含了对该mod的声明信息,这里您可以提供mod的名称、介绍、可运行的最低版本要求等信息,如:<br>
<pre style="margin: 0;padding: 5px;border: 1px solid;background-color: #fffff5;white-space: pre;overflow-x: auto;">
[mod]
minVersion:v1.15
title:在这里编写你的标题MOD
description: 你的MOD简介
</pre>
all-units.template文件是纯文本文件,其内容里声明的属性将自动应用到其所在目录的次级目录的所有.ini文件中,这通常用于省写某些通用于全mod的单位属性,如:<br>
<pre style="margin: 0;padding: 5px;border: 1px solid;background-color: #fffff5;white-space: pre;overflow-x: auto;">
#这里声明了一种mod里的一种消耗性资源黄金,如果不使用all-units.template文件的功能,我们需要在每个单位的.ini文件中都写一段下面的声明
[global_resource_gold]
displayName: 黄金
displayNameShort: 金
displayColor: #ffd700
displayWhenZero: true
displayPos: 1
</pre>
.ini文件是单位的参数配置文件,是纯文本文件。游戏里的一种单位对应一个.ini文件。我们在.ini文件中声明了一种单位所具有的属性,如单位的名称、生命值、攻击力等。下面我们将重点学习如何编辑单位的配置文件以及单位都可以由哪些属性。<br>
首先我们应该了解.ini文件是一种常见的配置文件格式,其为纯文本文件,使用特定的语法来存储声明信息。其语法结构上包含两部分:关键字和它的值(称为键值对)以及为不同功能划区的节。其具体语言格式为:<br>
<pre style="margin: 0;padding: 5px;border: 1px solid;background-color: #fffff5;white-space: pre;overflow-x: auto;">
[sectionA]
key1: VALUE
key2: VALUE


[section2]
[sectionB]
key3:value3
key1: VALUE


[section3]
[sectionC]
...
key1: VALUE
key2: VALUE
key3: VALUE
</pre>
</pre>
铁锈代码规定由几种不同的节来负担单位不同的功能。例如:
游戏定义了许多单位属性的关键字,如我们要声明一个单位的名称为“小坦克”,碰撞半径为“11”,重量为“3000”,生命值上限为“210”,移动方式为“陆地”,移动速度为“1,1”,转向速度为“4.1”,这样写:
<pre>
<pre style="margin: 0;padding: 5px;border: 1px solid;background-color: #fffff5;white-space: pre;overflow-x: auto;">
#core或称核心节承担了单位的基本和杂项的属性
[core]
[core]
#单位的名称
name: tank_custom
name: tank
displayName: 小坦克
#单位的造价
radius: 11
price: 1000
mass: 3000
maxHp: 210


#movement或称移动节承担了单位移动相关的属性
[movement]
[movement]
#单位的移动速度
movementType: LAND
moveSpeed: 2
moveSpeed: 1.1
maxTurnSpeed: 4.1
</pre>
</pre>
所有这些关键字和功能描述都可以在[https://docs.google.com/spreadsheets/d/1aeP3pUic0IutZlgGix_cM8xR7LEH44gS4itAxETK954 官方文档]中查找。<br>
接下来我们将从游戏开发的角度了解游戏为单位定义了哪些属性。<br>


每个铁锈单位有这几个必要的属性才能被游戏承认,否则你会在加载时收获报错。
注册名称<br>
<pre>
使用[core]name关键字为单位确定名称,当其他地方要用到这个单位时,我们会引用该名称。单位名称通常用英文字母和下划线命名。<br>
<pre style="margin: 0;padding: 5px;border: 1px solid;background-color: #fffff5;white-space: pre;overflow-x: auto;">
#
[core]
[core]
#单位的真名
name: medium_tank
name: tank1
#单位的生命值
maxHp: 210
#单位的造价
price: 350
#单位的重量
mass: 3000
#单位的体积半径
radius: 10
 
[graphics]
#单位的主体贴图
image: tank.png
 
[attack]
#可攻击
canAttack: false
#可攻击飞行单位
canAttackFlyingUnits: false
#可攻击地面单位
canAttackLandUnits:  false
#可攻击水下单位
canAttackUnderwaterUnits: false
 
[movement]
#移动类型
movementType: LAND
</pre>
</pre>
单位不同属性(键)要填的值的类型是不同的。比如单位重量mass只能填正整数,建筑类单位的占地大小footprint只以<code>1,2,1,1</code>这种格式表示单位占地以单位为中心向左延伸一格向上延伸两格向右向下延伸一格。这些要求在代码表中会有提示。
铁锈在一行的开头使用<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 />
== 相关链接 ==
* [[自定义内存]]
* [[模组导入]]
* [[变量]]
[[分类:模组制作]]

2024年12月29日 (日) 13:42的最新版本

游戏通过读取"Rusted Warfare\mods\units"目录下的mod文件来加载mod。
".rwmod"文件是mod的打包文件格式,实际游戏可通过直接读取目录下的mod文件夹来读取mod数据。
一个常规的mod文件夹目录结构如下所示:

XX模组
  |- 单位
      |- xx单位
            |- xx单位.ini
            |- xx单位_身体.png
            |- xx单位_炮塔.png
            |- xx单位_残骸.png
            |- xx单位_开火.ogg
            |- xx单位_子弹.png
            |- xx单位_子弹飞行轨迹.png
      |- all-units.template
  |- 地图
      |- xx.tmx
      |- xx_map.png
  |- 音乐
      |- xx.ogg
  |- mod-info.txt

如果我们要创建一个有效的mod,其目录结构至少应该为:

XX模组
  |- 单位
      |- xx单位
            |- xx单位.ini
      |- all-units.template
  |- mod-info.txt

其中,mod-info.txt包含了对该mod的声明信息,这里您可以提供mod的名称、介绍、可运行的最低版本要求等信息,如:

[mod]
minVersion:v1.15
title:在这里编写你的标题MOD
description: 你的MOD简介

all-units.template文件是纯文本文件,其内容里声明的属性将自动应用到其所在目录的次级目录的所有.ini文件中,这通常用于省写某些通用于全mod的单位属性,如:

#这里声明了一种mod里的一种消耗性资源黄金,如果不使用all-units.template文件的功能,我们需要在每个单位的.ini文件中都写一段下面的声明
[global_resource_gold]
displayName: 黄金
displayNameShort: 金
displayColor: #ffd700
displayWhenZero: true
displayPos: 1

.ini文件是单位的参数配置文件,是纯文本文件。游戏里的一种单位对应一个.ini文件。我们在.ini文件中声明了一种单位所具有的属性,如单位的名称、生命值、攻击力等。下面我们将重点学习如何编辑单位的配置文件以及单位都可以由哪些属性。
首先我们应该了解.ini文件是一种常见的配置文件格式,其为纯文本文件,使用特定的语法来存储声明信息。其语法结构上包含两部分:关键字和它的值(称为键值对)以及为不同功能划区的节。其具体语言格式为:

[sectionA]
key1: VALUE
key2: VALUE

[sectionB]
key1: VALUE

[sectionC]
key1: VALUE
key2: VALUE
key3: VALUE

游戏定义了许多单位属性的关键字,如我们要声明一个单位的名称为“小坦克”,碰撞半径为“11”,重量为“3000”,生命值上限为“210”,移动方式为“陆地”,移动速度为“1,1”,转向速度为“4.1”,这样写:

[core]
name: tank_custom
displayName: 小坦克
radius: 11
mass: 3000
maxHp: 210

[movement]
movementType: LAND
moveSpeed: 1.1
maxTurnSpeed: 4.1

所有这些关键字和功能描述都可以在官方文档中查找。
接下来我们将从游戏开发的角度了解游戏为单位定义了哪些属性。

注册名称
使用[core]name关键字为单位确定名称,当其他地方要用到这个单位时,我们会引用该名称。单位名称通常用英文字母和下划线命名。

#
[core]
name: medium_tank