第2章 建立一个新单位.docx
- 文档编号:765150
- 上传时间:2022-10-12
- 格式:DOCX
- 页数:15
- 大小:29.28KB
第2章 建立一个新单位.docx
《第2章 建立一个新单位.docx》由会员分享,可在线阅读,更多相关《第2章 建立一个新单位.docx(15页珍藏版)》请在冰豆网上搜索。
第2章建立一个新单位
第二章建立一个新单位
首先我以建立一个新单位——灰熊坦克为例,来讲解SAGE基本代码的结构和相互调用规律。
之所以要以灰熊为例,主要是因为这个单位没有什么特殊功能,基本上可以复制原版的现成代码,所以比较容易讲解清楚。
1、建立单位代码
比较特别的是,SAGE的Object.ini比较自由,你可以将灰熊的定义代码写在已有的那些Object.ini里,例如AmericaVehicle.ini,也可以单独建立一个全新的GrizzlyTank.ini来单独储存灰熊定义代码。
理论上我比较推荐后者,因为这样方便今后迅速找到这个单位并修改其代码和功能,避免了TS里在RULES里翻来覆去地查找一个东西的烦琐。
在编写代码的过程中特别要注意End,很多新手最容易犯的错误就是漏掉End,导致游戏无法正确识别函数而报错。
;灰熊坦克
ObjectMTNK
;============视觉、图像部分===========
SelectPortrait=HEAD122_MTNK选取该单位时界面上显示的大头像
ButtonImage=ICON64_MTNK生产该单位时旋转时钟图标的图像
UpgradeCameo1=Upgrade_SyntheticalFuel该单位具有的可升级科技项目图标,最多有5个,依次排列在单位大头像的右侧和下侧共5个格子里
Draw=W3DTankDrawModuleTag_01模型绘制模块
OkToChangeModelColor=Yes是否将模型里凡是以HouseColor%02d命名的模型快转换成所属色
DefaultConditionState默认状态时的模型规则,通常可以理解为初生状态
Model=MTNK调用哪个W3D来显示其图像,需要自己用3DMAX来画这个模型,今后再讲如何画W3D模型
Turret=Turret炮塔对应名称为“Turret”的模型块或骨骼点
WeaponFireFXBone=PRIMARYMuzzle主武器炮口特效产生位置对应名称为“Muzzle%02d”的模型块或骨骼点
WeaponRecoilBone=PRIMARYBarrel主武器炮管滑膛部分对应名称为“Barrel%02d”的模型块或骨骼点
WeaponMuzzleFlash=PRIMARYMuzzle主武器炮口闪光产生位置对应名称为“Muzzle%02d”的模型块或骨骼点
WeaponLaunchBone=PRIMARYMuzzle主武器开火点位置对应名称为“Muzzle%02d”的模型块或骨骼点
End
ConditionState=REALLYDAMAGED破损状态时的模型规则,由于已经写了默认状态,因此其他状态里凡是和默认状态相同的规则可以略掉不写,
Model=MTNK_D游戏平台会自动从默认状态里提取规则配给这个状态使用
End
ConditionState=RUBBLE尸体/残骸状态时的模型规则,同样可以简略
Model=MTNK_D
End
TrackMarks=EXTnkTrack.tga坦克在地面上开过后将留下什么样的履带印迹贴图
End
;--------------------------------------------------------------------------------------------------
;============基本属性定义部分===========
DisplayName=VECHILE:
MTNK鼠标悬停到该单位上时,显示的单位名称,需要CSF翻译
Side=GDI无实际作用,仅仅为WB分类成列时作为依据,参数可以随便乱写
EditorSorting=VEHICLE同上,作为WB的又一个分类成列依据,但参数不能随便乱写
TransportSlotCount=3被装载时需要占用的空间量
VisionRange=90视野范围,只有进入了该单位视野范围的敌人才会引起该单位主动开火
ShroudClearingRange=90能揭开黑雾和灰雾的范围
MaxSimultaneousOfType=16最大名额上限,即任何一方,该单位最多只能同时拥有16个,类似TS的人口限制
MaxSimultaneousLinkKey=MTNK使用哪个人口空间,可以随意设置参数,通常只在特别要求该单位和别的单位共享同一个人口空间时才使用
BuildCost=700造价,这个不用多说
BuildTime=7生产时间,单位为秒
ExperienceValue=70140210280被敌人杀死后送给敌人多少经验值,当自己为新兵、老兵、精英、王牌时分别送出70、140、210、280
ExperienceRequired=0210420630需要积累多少经验值才能达到对应级别,新兵级需要0点,老兵级需要210,精英级需要420,王牌级需要630
IsTrainable=Yes是否可以训练,仅当参数为Yes时,ExperienceRequired语句才有意义
CrusherLevel=2碾压级别,通常坦克都填2,表示自己属于2级碾压者,可碾压小于2级的被碾压者
CrushableLevel=2被碾压级别,通常坦克都填2,表示自己属于2级被碾压者,凡是碾压级别大于2的碾压者都能碾压它
CommandSet=GeneralUnitCommandSet建造栏/操作栏界面使用哪一套布局,GeneralUnitCommandSet需要在CommandSet.ini里进行编写
WeaponSet武器系统,类似模型绘制模块,可以利用Conditions来让单位在不同条件下使用不同的武器
Conditions=None
Weapon=PRIMARYGrizzlyGun主武器为哪个武器,GrizzlyGun需要在Weapon.ini里进行编写
End
ArmorSet护甲系统,和武器系统差不多的设置原理
Conditions=None
Armor=TankArmor使用哪个护甲类型,护甲设置比较复杂,所以我们暂时借用一个现成的护甲,今后再着重讲解特殊护甲的之作
DamageFX=TankDamageFX被攻击时产生什么样的受损特效(感觉是个没啥意义的花瓶功能,是把游戏变卡的重要途径)
End
Prerequisites建造前提系统,可以用物体作为建造前提(不光是建筑,也可以是坦克、士兵、将军技能等)
Object=GAWEAP可以做成与、或逻辑,但尚不知道能不能做出非逻辑
End
;--------------------------------------------------------------------------------------------------
;============单位语音、音效定义部分===========
VoiceSelect=GrizzlyTankSelect选取时的汇报音
VoiceMove=GrizzlyTankMove移动时的汇报音
VoiceGuard=GrizzlyTankMove自由警戒时的汇报音
VoiceAttack=GrizzlyTankAttack攻击时的汇报音
SoundMoveLoop=GrizzlyTankMoveLoop正常移动时发出的车辆运行音效,可做成循环音效,大概就是TS里坦克启动时会发出的发动机轰鸣声
SoundMoveLoopDamaged=GrizzlyTankMoveLoop受损后移动时发出的车辆运行音效
UnitSpecificSounds特殊语音及音效
VoiceCreate=NoSound建造完毕后的汇报音,让我想起了基洛夫经典的“KirovReporting”
TurretMoveStart=NoSound炮塔开始旋转时的音效,SAGE特有的功能,不过没啥意思
TurretMoveLoop=TurretMoveLoop炮塔持续旋转时的音效
VoiceCrush=NoSound碾压别人时发出的音效
VoiceEnter=GrizzlyTankMove装载时的汇报音
End
;--------------------------------------------------------------------------------------------------
;============基本属性定义部分===========
RadarPriority=UNIT雷达里的标记类型,不同的标记有不同的优先权(没搞懂啥意思,难道优先权越高就越先被显示不成?
)
KindOf=PRELOADSELECTABLECAN_ATTACKATTACK_NEEDS_LINE_OF_SIGHTCAN_CAST_REFLECTIONSVEHICLEINFANTRYSCORE
属性标签,这是SAGE里的一大重点,放到后面来讲,先吊个胃口
Body=ActiveBodyModuleTag_02生命值模块,定义了生命值上限、初生时的生命值以及被封冻武器封锁的准备时间和持续时间
MaxHealth=300生命值上限
InitialHealth=300初生时的生命值,又一个没啥意思的语句,一般都设置得和上限相同,除非你有特别邪恶的目的
SubdualDamageCap=310被封冻武器封锁的准备时间,其实不叫时间,应该说封冻武器必须“打”够这么多点“血”才能封冻住它
SubdualDamageHealRate=500下面这两句没测试出啥意思,一般都填成500和50
SubdualDamageHealAmount=50
End
;--------------------------------------------------------------------------------------------------
;============功能模块定义部分===========
Behavior=AIUpdateInterfaceModuleTag_03智能模块,决定该单位在不受玩家人工控制时能自主干些什么事
Turret炮塔智能定义
TurretTurnRate=1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第2章 建立一个新单位 建立 一个 单位