|
|
发表于 2007-7-13 09:28:00
|
显示全部楼层
Re: 游戏之家,自己做过游戏的好朋友(做小游戏也算好朋
注:###### 后面为我写的内容,是根据我的以往的应用和实践来分析主题。
第一部分:
一,定义角色系统
在角色系统中,末端是角色动画系统,最前端则是角色的机能系统,角色的物品关系系统,角色系统的躯干部分则是数模系统。
划分原理:划分角色系统的末尾,前端,躯干时,是按照一贯的循序渐进开发原则来的。开发步骤是由末尾到躯干再到前端。因为图形引擎作为游戏引擎的基础层,而角色动画归属于图形范畴,所以角色系统在末端是角色的动画系统。然后在技能,物品系统中,几乎99%的数字操作都是基于数模系统来工作。所以角色的数模系统是作为躯干,提供给前端以基础去工作。
用形象方式来纵观整体,从角色系统的末端,再到最前端的机能,物品。相当易理解。
下面来分别阐述双极中的各个模块的工作原理。
一,角色动画系统
角色动画系统最简单的做法是使用数据驱动。数据驱动在概念上是这样的,角色进攻时,空闲时摇头晃脑,等等,这些动画使用一系列预先定义好的数据,然后在播放时通过程序对数据的处理,最后便形成了多种不同的动画效果。这就是数据驱动。
######(这个讲的是3D骨骼动画模型所具备的功能,模型文件是单个,但是他包含了很多角色的动作)
VB6 + TV3D的实例:
npc.Load "MODEL\name.mdl" '角色的模型
Pos.X = 100: Pos.Z = 100 '角色行列坐标
npc.SetRotation 0, 90, 0 '角色角度
Pos.Y = Land.GetHeight(Pos.X, Pos.Z) '判断高低地形
npc.SetPosition BarneyPos.X, Pos.Y, Pos.Z '角色摄像机上的坐标
npc.SetScale 1, 1, 1 '角色尺寸
npc.SetAnimationID 1 '角色动画编号
npc.PlayAnimation 30 '角色动画速度
npc.SetMaterial 1 '顶点光源
---------------------------------------------------------------------------------------------
角色动画系统第二种做法是使用脚本驱动。脚本驱动在概念上是,脚本本身具有播放动画的功能,然后脚本以流程方式来运行,将各种不同的动画全部子程序化。最后组合在一起时,通过不同的脚本子程序的工作,最后产生出角色的各种不同的动画效果。
######(这个脚本是操作由很多单张的连续动画图片构成的动画片,就是帧动画)
举例:爆炸动画脚本:VC6
TEXTURES 9
Animations\Expl\expl1.jpg > ExplA1
Animations\Expl\expl2.jpg > ExplA2
Animations\Expl\expl3.jpg > ExplA3
Animations\Expl\expl4.jpg > ExplA4
Animations\Expl\expl5.jpg > ExplA5
Animations\Expl\expl6.jpg > ExplA6
Animations\Expl\expl7.jpg > ExplA7
Animations\Expl\expl8.jpg > ExplA8
Animations\Expl\expl9.jpg > ExplA9
//
// Explosion2 effect
//
SHADER Explosion2
{
Layer map1
{
//
// Texture Animation :
// Syntax : anim [FramePerSecond] [Tex1] [Tex2] ... [TexN] [0]
//
anim 10 Explb1 Explb2 Explb3 Explb4 Explb5 Explb6 Explb7 Explb8 Explb9 [0]
blendFunc ONE ONE
depthFunc NOWRITE
}
}
---------------------------------------------------------------------------------------------
两种方式的优略比较:使用数据驱动的动画系统,因为配置和驱动的简单,在一些大型的多角色游戏中比较常见,比如即时战略,比如ARPG。使用数据驱动做出的角色系统统一性是非常好的。而使用脚本驱动的动画系统,因为配置和驱动比较专业,这种是非标准的专业,所以在统一性上并不如数据驱动。但是因为脚本驱动特定的纯程序的工作方式,这使得脚本驱动的角色系统在灵活性上很见长,比如角色可以脑袋飞起来在天上转360度,然后再掉落在角色身上,比如角色可以根据环境的条件,而产生特定的动作。
简单来总结:使用数据驱动,统一性较好,配置方便。使用脚本驱动,灵活性较好,改动困难。
######(数据驱动适合做角色动画,脚本驱动适合做效果动画,如果开发一个游戏两种驱动都要使用)
实际中:在实际中,往往是脚本和数据并行来驱动。纯粹的数据驱动只为特定的游戏而存在,这是因为系统需求以及开发者的缘故。比如星际,魔兽,周到的系统分析,然后配上稳定的驱动程序,使得数据式角色驱动变得非常具有统一性,改动非常方便,但是这些角色,却不常出现在别的游戏中,这便是纯粹的数据驱动最大的弊病。脚本和数据并行的开发,开发脚本和数据并行驱动,是因为脚本的灵活性虽高,但大量配置,非常麻烦,而结合数据,就刚好解决配置和驱动复杂的问题。并行驱动,可以在游戏中,使用多种游戏角色动画的资源,比如曾经的游戏A是数据驱动,现在是游戏B是并行驱动,在游戏B中,可以游戏A的所有角色动画资源。在实际工作中采用并行驱动,并不是为了功能的强大,而是因为系统的兼容性以及
衍生性可以大大提高。
######(早期星际用的是脚本驱动,魔兽用的是数据驱动,我的解释是2D游戏里用脚本驱动的多,3D游戏里数据驱动多)
--------------待续--------------
|
-
|