|
发表于 2013-10-11 18:32:33
|
显示全部楼层
本帖最后由 ff1407 于 2013-10-11 18:36 编辑
我不知道自己了解得到底好不好,不过也分享下吧。希望能省你一点时间
我现在是把整个结构理解成3层(从上到下)
1. 图像和声音层,也可以叫做多媒体层吧
2. 演算体层,也就是演算体了,它负责监听数据动画及逻辑层的各种消息,然后按照已经指定好的播放逻辑,把动画声音资源和如何播放等信息发送给图像和声音层,让图形和声音引擎去播放。在演算体的"事件"项里可以明显看到这个特征。
3. 数据动画及逻辑层,负责游戏运行的数据处理,其逻辑由地图制作者决定或者使用官方默认值。数据动画并非真正动画,它只是让数据修改的时间和动画效果同步,并负责触发事件和消息。
4. 外部动画和声音资源,这不算一层,而是一个外部的数据包一样,验算体里链接这这些资源,在播放时,图像和声音引擎会通过关联的数据找到正确的资源。
在我看来,数据编辑器所涉及的数据都在第2,3,4层。
演算体是第2层。那些看起来像外部资源,但实际上是指定一个外部资源的链接,这类数据对象可以算做第3层,也可以算做第4.其它东西都可以算是第3层。
行为和效果属于第3层,他们可以包含数据动画或者游戏逻辑或者两者同时拥有。因为行为和效果本身都可以包含逻辑,但不指定任何逻辑也是可以的。游戏系统在运行一个行为或者效果时发出运行期间的各种状态消息,并且运行其逻辑。不指定逻辑的时,这个东西就只会触发状态消息机制。而演算体就是靠监听这些状态消息运作的。
举个例子,劫掠者发射导弹并造成伤害。(只是例子,真实逻辑未必是这样)
技能的设计者会首先做一个发射导弹效果,这个效果里分为时间延迟和延迟后造成伤害两个子效果。时间延迟用于导弹飞行,设计者会做一个监听时间延迟效果的验算体,把导弹模型挂上,在监听到时间延迟效果开始时发出播放导弹飞行动画消息。然后设计者会做另一个爆炸演算体,挂载爆炸模型,在监听到延迟后的伤害效果时发出播放爆炸消息。如果这个导弹还有特效的话,那么设计者会在伤害后,用行为或者效果给被伤害的单位加上异常状态,如果异常状态有试听效果,也需要用演算体加上。
大概就这么多吧,如果你学过编程的设计模式,那么这其实是个比较标准的Mediator模式机制。第3层是核心逻辑层,它是数据运作核心并向外发出各种消息。外发消息接收者是验算体,还有触发器,你可以看到他们都是事件消息驱动的。验算体挂的是图形和声音逻辑,触发器挂的是额外的数据逻辑。至于效果和行为之间如何嵌套,你必须自己参照已有的技能来学习了。
得出这个理解大概花了我200个小时的实际工作时间,感觉,有它的话修改数据时的目的性会强很多。你能知道修改对不对和还需要哪些地方来配合修改。即使一个方案不行,也可以看看是否有其它方向可以入手。
|
|