Games104-03如何构建游戏世界

怎样去构建一个游戏世界?

一个游戏世界由以下部件组成

  • 动态游戏物体 Dynamic Game Object
  • 静态游戏物体 Static Game Object
  • 环境 Environments
    • Sky
    • Vegetation
    • Terrain
  • 其他物体
    • 空气墙
    • Ruler
    • Trigger Area
    • Navigation Mesh

在游戏世界中,以上这些物体都是通过类来进行管理,如果类的数量过于庞大,则会导致效率下降,所以,在现代游戏引擎中推出了组件的概念,通过组件来形成一个个不同的系统来提高效率。

怎样构建一个动态的世界?

通过不断的tick()函数,在一定的时间内不停地对游戏物体进行更新,从而达到动态的效果(如Unity)。

但是在现代游戏引擎中,tick不是按照GameObject进行的tick的,而是会把一个个系统先进行tick,这样的操作更高效。

怎么样实现世界中各物体的交互?

利用事件(Events)机制来将各个GameObject联系起来。

怎样去管理世界中的GameObject?

Scene Management

  • GameObject在scene中被管理
  • GameObject query
    • By unique gameobject id
    • By object position
  • Simple space segmentation
    • 不对场景进行分割(不适用于大型游戏)
    • 将场景分割为网格
  • 按对象簇进行空间划分(Segmented space by object clusters)
  • 分层分割(Hierachical segmentation)
  • 空间数据结构(Spatial Data Structures)
    • 层次包围盒(Bounding Volume Hierarchies——BVH)
    • 二叉空间分区树(Binary Space Partioning Tree,BSP Tree)
    • 八叉树(Octree)
    • 场景图(Scene Graph)

游戏世界中更复杂的情况

在GameObject进行交互的时候,可能会产生事件的冲突,例如当A物体向B物体发送消息的时候,B物体还未接收到消息就向A物体发送消息,这种情况下会产生十分严重的问题,针对该情况,往往会通过建立一个“邮局”,将各个物体需要发送的消息先统一放入“邮局当中”,然后通过邮局对消息进行逐一地派发,这样子就能避免事件之间的冲突。

总结

  • 游戏世界中,所有事物都可以归为对象来处理。
  • 每个GameObject 可以由不同的功能组件组成。
  • 游戏对象的状态不断在tick函数中进行更新。
  • 游戏对象之间的交互依赖于Event Mechanism事件机制。
  • 游戏对象以高效的策略在场景中进行管理。
  • 组件模式的缺点:在某种十分简易的情景下,使用组件会复杂化流程,效率降低。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值