【冰话XS】002:XS为何物与前摇新解

※☆冰の引言☆※
前面简要介绍了XS的必备字典AGE,相信各位对于AGE也能实现简单的查询功能(仅地图编辑器玩家/设计者暂不要求掌握相应修改DAT方法和流程,故跳过),下面就来讲讲XS到底是什么以及隐藏效果--攻击前摇(Attack Delay,AD) ,这个似曾相识但又有点距离的隐藏属性,如何在地图编辑器中修改对应兵种的属性及其计算方法科普。

※☆XS为何物☆※
XS代表外部子程序(eXternal Subroutine),是一种类似C/C++的语言,其基本语法也与C/C++类似,但它在帝国时代2决定版中的应用相对于C语言类又有比较大的不同,使用范围比之较窄,为避免先入为主,后面会以能生成效果的部分作几期详细介绍讲解。XS可用于地图编辑器中进行单位属性变更的函数编写和打通变量、资源以及属性的隔阂(次元壁)的多方联动,适用于单人战役和联机场景,本教程主要侧重于单人战役制作方面,联机场景制作人可参考其共通之处进行设计,基本上是原理是相通的,都可作为借鉴参考的一手资料。

※☆冰聊杂谈の攻击前摇☆※
攻击前摇(Attack Delay,AD),简称前摇,又名抬手,是影响走A、风筝(Hit&Run,Kiting)的重要因素之一,直接关系到战斗微操与手感,所谓细微之处见真招,即是如此。攻击前摇の定义,单位在发出首次攻击指令到第一次进行实际攻击为止所需要的额外时间。一般多用于弓兵或骑射手这两个种属(ps:种属是任何单位的类别--class,每个单位都归属于唯一的种属,后续会详细讲细节),以及有距离的步兵或骑兵(比如马穆鲁克、掷斧兵、飞刀女兵、飞轮刃投掷手,以及英雄单位哈拉尔、查理马特等但不包括草原突骑和枪兵长)。一个很好的形容就是远程兵种(这里仅指代攻击距离不为0的兵种,与伤害类型是远程还是近战无关)从玩家发出攻击指令到射出首个抛射物所需的时间,而这个时间只作用于玩家下达指令的首次攻击,后续的连续针对同一目标的攻击不再对前摇进行计算。
攻击前摇的长短直接影响风筝的手感,高移速和无/低抬手让这些单位非常适合走A,高前摇的单位就会因此受到压制而吃亏,导致处处受制于人,然后被集火团灭,这种情况在对射先手的问题比较凸显,高前摇的(重装)骑射手,掷斧兵在机动骚扰上很容易就落了下风。毕竟前摇越短,单位便有更多的时间可用来移动走位miss掉对方的攻击,特别是没有升级弹道学或指环的情况下尤为明显。下面来展示一下各兵种的前摇数据。【数据来源于AGE】
※☆各兵种前摇数据最初の発表(编辑器单位&英雄含む)☆※
无距离近战兵种(枪兵长,草原突骑含む)
-- 0~0.5s --

-- 0.51~0.6s --

-- 0.61~0.65s --

-- 0.66~0.7s --

-- 0.71~0.79s --

-- 0.8s+ --

-- 印度王朝DLC增补 --

远距离兵种(马穆鲁克,飞刀女兵,掷斧兵,飞轮刃投掷手含む)
-- 0s --

-- 0.2~0.49s --

-- 0.5~0.69s --

-- 0.7s+ --

-- 印度王朝DLC增补 --

※☆前摇的计算与修改提示☆※
前面把帝国里截至目前兵种的前摇数据作了一个罗列,那大家肯定很好奇这个抬手是怎么算出来的,下面就从数学的角度讲一下前摇的具体计算方法,以下方法需要用到AGE,请学会使用AGE的相关搜索功能,并搜索以下参数(建下图)。




具体公式如下【注意:有类别之分】





从公式可以看出,无距离近战兵种的前摇只与帧时长有关,与帧延迟无关,故此类兵种无法通过地图编辑器修改相关对应抬手属性。简而言之,就是地图编辑器中无法修改这一属性。
而有距离兵种的前摇受帧延迟影响,故可以通过地图编辑器改变相关兵种的抬手属性,并且帧延迟的大小与抬手的长短成正比关系,帧延迟越大,抬手则越长。可以这么说,改前摇是通过改帧延迟间接实现的。

※☆冰の小结☆※
抬手实现了从动画帧数到游戏时间的单位换算,给人对兵种有了更直观的感受,也明确了攻击前摇与帧延迟之间的关系,并为模组作者指明了前摇修改的方向:从帧延迟入手进行修改,从而实现更多更丰富的游戏效果。下面章节将介绍一下修改属性与脚本调用之间相爱相杀、爱恨情仇的故事以及XS一些基本语法,笔者才疏学浅,有纰漏缺失,欢迎各位批评指正。
欲知后事如何,请听下回分解。


