首页 > 其他 > 详细

游戏性基础系统

时间:2014-04-07 03:12:45      阅读:464      评论:0      收藏:0      [点我收藏+]

游戏性基础系统

  游戏性基础系统(gameplay foundation system):

    1)运行时游戏对象模型(runtime game object model)

    2)关卡管理及串流(level management and streaming)

    3)更新实时对象模型(real-time object model updating)

    4)消息及事件处理(messaging and event handling)

    5)脚本 (scripting)

    6)目标及游戏流程管理(objectives and game flow management)

  其中1)运行时对象模型是最复杂的,通常它需要提供以下功能:

    1)动态地产生(spawn)及消灭(destroy)游戏对象。

    2)联系底层引擎系统

    3)实时模拟对象行为

    4)定义新游戏对象类型

    5)唯一的对象标识符(unique object id)

    6)游戏对象查询(query):根据ID查找对象,或是根据任意条件做高级查找,如寻找玩家20m以内的所有敌人

    7)游戏对象引用(reference)

    8)有限状态机(finite state machine, FSM)

    9)网络复制(network replication)

    10)存档及载入游戏、对象持久性(object persistence)

运行时对象模型架构

  游戏对象模型的2种架构:

    1)以对象为中心(object-centric):每个对象含一组属性及行为,这些都会封装在那些对象实例的类之中。游戏世界只不过是游戏对象的集合。容易产生单一庞大的类层次结构(monolithic class hierarchy)。一个类越是在类层次结构中越深的地方,就越难以理解、维护及修改。因为要理解一个类,就需要理解其所有父类。

    此方式最大的问题是,当设计层次选择了某个标准,就很难甚至不可能用另一个完全不同的标准分类。比如按物种分类的生物,要按颜色分类就不好办。mix-in类可以改善改方式。一个类可以派生自主要继承层次结构中的一个且仅一个类,但也可以继承任意数量的mix-in类(无基类的独立类)。通常更好的做法是合成(composition)或聚合(aggregation),而不是继承他们。

    把Window派生自Rectangle类。然而,一个视窗并不是一个长方形,它只拥有一具长方形,用于定义其边界。因此,这个设计问题的更好解决方法是把Rectangle的实例安置于Window类之中,或是令Window拥有一个Rectangle的指针或参考。面向对象设计中,“有一个”的关系称为合成(composition),合成的对象与主对象有同样的生命周期。对于主对象与子对象生命周期不同步的设计,称为聚合(aggregation)。

    要降低游戏类层次结构的宽度、深度、复杂度,一个十分有用的方法是把“是一个”关系改为“有一个”关系。业界成熟的方式是使用组件模式:

      1)“枢纽”HUB组件模式

      2)通用组件模式

      3)纯组件模式

    2)以属性中心(property-centric):每个游戏对象仅以唯一标识符表示。我们先定义游戏对象可能含有的属性集合,然后为每个属性建表。此设计更能有效地使用内存,因为我们只需存储实际上用到的属性。SoA(struct of array)的性能优于AoS(array of struct)

世界组块的数据格式

      

游戏性基础系统,布布扣,bubuko.com

游戏性基础系统

原文:http://www.cnblogs.com/tekkaman/p/3649018.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!