【教程】红色警戒2美工设计入门指引 - 第三章 - SHP创作基本指南(一) - SHP原理概论

第三章 SHP创作基本指南
SHP也是TS和RA2的一种基本美工素材格式,在开始这一章的介绍之前,首先我要劝退对3D建模创作,或者对二维点阵像素画绘制完全没基础的人,对以上内容没啥基础,你看了以下教程指南也不会有什么收获。

老样子,进行SHP原创开发的基本工具:






我们对SHP素材创作的讲解,将分为几个分章节,在本章节中主要讲授关于SHP的原理概论。
在后面的章节中将会逐一讲述:
SHP Builder使用基本手册
ImageShaper使用基本手册
Photoshop像素画基本绘画指南
3ds Max RA2模型创作基本思路自学指南
SHP色盘应用初级入门
按照惯例,我不长篇大论说废话,直接从怎么用开始说起。
关于SHP的基本原理,通俗地讲,就是在一个文件里通过色盘的色号索引,来保存了一大堆图片帧,然后游戏程序使用代码来在游戏里调用对应序列的帧或者多个帧。
SHP做素材,主要做几种:
建筑物
步兵
单位(飞行器/载具)
特效和动画
建筑物
用SHP制作建筑物,简单概括其基本原理的话,建筑物的SHP素材主要包括:本体,本体动画,损坏动画,运作动画
其中,本体包括:本体帧(1),本体损坏帧(2),本体影子帧(1),本体损坏帧(2)
具体到素材原图,那就是:

上图中的0到5号帧,就是建筑的本体序列帧
建筑物的本体需要按照这个顺序来排列序列帧,并导入到SHPB里。
此外,我们都知道在建筑物上还有一些日常小动画,比如建筑上闪烁的小灯,还有盟军兵营和重工上面的小旗子,还有空指部的那个停机坪动画,这些都是独立于本体帧以外的“动画帧”
本体动画帧理论上并不限制帧数,而且可以没有影子,动画是否启用影子是可以在art.ini或artmd.ini中独立设置的。

但是,本体动画的正常状态,和本体动画的损坏状态是在ini中分开的,不过只是代码层面分开,在素材层面,正常状态和损坏状态依然可以合成在同一个SHP里

除了建筑物日常动画,还有一种是建筑物运作动画,这种动画包括:重工生产时的动画(比如原版的开门关门,开天窗关天窗),生产建筑时基地的大爪子抓箱子,和矿场被倒矿时的动画(在RA2原版里被砍没了)

还有一种类型,那就是建筑物的建造动画,建筑物建造动画理论上无帧数上限,但存在帧数下限,取值与建筑物拔起全局值相关。同时,建筑物建造动画帧存在硬编码,只能使用建筑物本体使用的调色盘。
附:
建筑物拔起与建筑动画帧相关计算公式
(提供:Uranusian)
BuildupTimex900
步兵
SHP步兵素材,一般不像建筑物素材,文件碎一地,大多所有序列帧都放置在同一个shp文件中,然后通过art代码来引用shp中的序列片段。

步兵shp素材,一般包含的基本序列类型:
静止(站立)
闲置A
闲置B
行走
开火
匍匐(受到攻击)
死亡
而且根据所做步兵的特殊性,还可以增加额外的内容:
部署(使用能力)
游泳
特殊死亡动画
等等等

代码词典中介绍的有效动作序列标签:
Ready=
用于当步兵单位站在那里等待的时候。 ■
Guard=
用于当步兵单位被置于防御模式中。在红警2中似乎使用的不多。
Tread=
指定当步兵单位在水中游泳,并不断打水保持自己浮在水面上的帧序列。(谭雅?)
Prone=
指定步兵单位卧倒(企图减少伤害)的所有帧序列。
Walk=
指定当步兵行走的时候的帧序列。 ■
Swim=
指定当步兵在水中游泳的帧序列。
FireUp=
指定当步兵单位站着向敌方单位开火的帧序列。 ■
WetAttack=
指定当步兵单位在水中向敌方单位开火的帧序列。
Down=
指定当步兵单位遭到攻击卧倒的帧序列。
Crawl=
指定当步兵单位爬行的帧序列。当步兵在移动的时候遭到攻击会出现这种动作。
Up=
和down=相反。指定当危险过后步兵单位站起来的帧序列。
FireProne=
指定当步兵卧倒开火的帧序列。
Idle1=
Idle2=
指定当步兵单位站着闲得没事的帧序列。这会使步兵单位不至于看起来像一尊雕像一样。 ■
WetIdle1=
WetIdle2=
同上。不同点是这里的标签指的是水中。
Die1=
指定当步兵单位被某种拥有InfDeath=1弹头的武器杀死的帧序列。 ■
Die2=
指定当步兵单位被某种拥有InfDeath=2弹头的武器杀死的帧序列。可能会从Die2=和Die3=中随机选择一种。 ■
Die3=
指定当步兵单位被某种拥有InfDeath=1弹头的武器杀死的帧序列。可能会从Die3=和Die2=中随机选择一种。 ■
Die4=
指定当步兵单位被某种拥有InfDeath=3弹头的武器杀死的帧序列。 ■
Die5=
指定当步兵单位被某种拥有InfDeath=4弹头的武器杀死的帧序列。 ■
WetDie1=
指定当步兵单位在水中被杀死的帧序列。可能会从WetDie1=和WetDie2=中随机选择一种。
WetDie2=
指定当步兵单位在水中被杀死的帧序列。可能会从WetDie2=和WetDie1=中随机选择一种。
Deploy=
指定当步兵单位被命令“部署”从而激活某种功能(就像美国大兵会在身边摆放沙袋并架起机关枪)的帧序列。
Deployed=
指定当步兵单位被部署且目前闲的没事的帧序列。
Undeploy=
指定当步兵被命令“取消部署”的帧序列。
Cheer=
指定步兵单位欢呼的帧序列。 ■
Paradrop=
指定当步兵单位被空投到战场上的帧。该帧不要有影子。 ■
(YR) SecondaryFire=
(仅用于尤里的复仇)和FireUp=相同,不同的是这里使用第二武器开火。 ■
(YR) SecondaryProne=
(仅用于尤里的复仇)和FireProne=相同,不同的是这里使用第二武器卧倒开火。
单位(飞行器/载具)
SHP单位素材类似于SHP步兵,但是相比步兵来说,SHP单位被允许使用8x(x≥1,x∈N*)个方向。

但是素材本身的基本制作流程和步兵基本一致,不同处仅在于代码和朝向方向面数。
特效和动画

特效,或者动画的SHP素材,本质上就是动画帧序列了,并没有特殊之处,不同的点在于,理论上很多个动画可以被塞在同一个文件里,因为游戏程序是通过art代码来调用相应的动画帧序列,但是并不建议这样做,因为如果色系差异较大的动画特效,而且使用了自定义色盘,会因为色系类型过多而影响自定义色盘的效果发挥。

本章节主要讲述了关于SHP素材的基本原理概论,以及主要素材类型应用途径。在后面的章节,我将通过SHPB和IS这两种软件的使用基本方法来引入如何制作一个可以被使用在游戏中的SHP素材。