单位编辑:修订间差异

来自RustedWarfare Wiki
无编辑摘要
无编辑摘要
标签移动版编辑 移动版网页编辑
 
(未显示1个用户的4个中间版本)
第1行: 第1行:
本页面指导mod制作初学者制作游戏中的单位。
游戏通过读取"Rusted Warfare\mods\units"目录下的mod文件来加载mod。<br>
".rwmod"文件是mod的打包文件格式,实际游戏可通过直接读取目录下的mod文件夹来读取mod数据。<br>
一个常规的mod文件夹目录结构如下所示:<br>
<pre style="margin: 0;padding: 5px;border: 1px solid;background-color: #fffff5;white-space: pre;overflow-x: auto;">
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
</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


[sectionB]
key1: VALUE


==== 单位的界定 ====
[sectionC]
游戏中,具有名称、生命值、半径、重量的单元。
key1: VALUE
key2: VALUE
key3: VALUE
</pre>
游戏定义了许多单位属性的关键字,如我们要声明一个单位的名称为“小坦克”,碰撞半径为“11”,重量为“3000”,生命值上限为“210”,移动方式为“陆地”,移动速度为“1,1”,转向速度为“4.1”,这样写:
<pre style="margin: 0;padding: 5px;border: 1px solid;background-color: #fffff5;white-space: pre;overflow-x: auto;">
[core]
name: tank_custom
displayName: 小坦克
radius: 11
mass: 3000
maxHp: 210


==== 游戏存储单位属性的方式 ====
[movement]
游戏使用传统意义上的.ini配置文件格式存储单位的属性信息。<br>
movementType: LAND
包含的.ini文件的特征:UTF-8文本文件、小节(Section)、键值对(Key-value)。
moveSpeed: 1.1
maxTurnSpeed: 4.1
</pre>
所有这些关键字和功能描述都可以在[https://docs.google.com/spreadsheets/d/1aeP3pUic0IutZlgGix_cM8xR7LEH44gS4itAxETK954 官方文档]中查找。<br>
接下来我们将从游戏开发的角度了解游戏为单位定义了哪些属性。<br>


==== 游戏如何将单位配置文件信息加载到游戏中 ====
注册名称<br>
先将单位.ini文件置于指定目录,然后通过游戏内的mod管理界面对mod文件进行扫描和加载。
使用[core]name关键字为单位确定名称,当其他地方要用到这个单位时,我们会引用该名称。单位名称通常用英文字母和下划线命名。<br>
 
<pre style="margin: 0;padding: 5px;border: 1px solid;background-color: #fffff5;white-space: pre;overflow-x: auto;">
==== 单位中可用的属性API及配置文件语法在哪里 ====
#
见:[https://docs.google.com/spreadsheets/d/1aeP3pUic0IutZlgGix_cM8xR7LEH44gS4itAxETK954 Google 文档]<br>
[core]
上面表格文档记录了大多数属性API关键字和功能描述。但具体代码细节未能详尽,需要mod制作者留心在游戏中测试和记录。<br>
name: medium_tank
单位配置文件具有特殊语法,本文会在后面篇章进行介绍。
</pre>
 
 
==== 单位的存在机制 ====
<b>地图</b><br>
单位活动在地图之上,由地图生成(或称刷新)。<br>
每个地图上的单位都有自己在地图上的位置信息,即坐标(x, y)。
 
<b>生存</b><br>
游戏中,单位被刷新出来时,视为单位生存的开始。<br>
一般情况下,生成单位的情况:被建造者建造、由工厂生产、地图脚本功能、ini代码功能。<br>
游戏中,单位从地图上消失即为单位生存的结束。<br>
单位消失的情况:被回收、生命值为0、地图脚本功能、ini代码功能。
 
<b>生命值</b><br>
每个单位都有自己生命值(float类型),一般由ini配置文件定义其生命值上限。当单位生命值为0时,单位会从该局游戏中消失,即“死亡”。<br>
单位生命值变化的情况:被建造者维修、被建造者回收、被“弹丸”命中、地图脚本功能、ini代码功能。<br>
生命值实现了单位在一局游戏中的去留和更新。
 
<b>半径</b><br>
单位的半径在ini配置文件中定义(int类型)。半径使单位和单位之间存在最小距离,增加了真实性和趣味性。
 
<b>重量</b><br>
单位的

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