事件处理方案

http://www.cnblogs.com/yaoyansi/articles/1837679.html

 

http://www.gamedev.net/topic/605016-general-design-of-game-event-system/

 

游戏事件系统的一般设计方法

问:

 我在寻找一种游戏简单的事件系统设计方法指导。我已经利用了观察者/监听者模式来对一个事件队列产生处理。

我的问题是,为了在完整游戏循环中通过顺序的处理产生事件的几个阶段,用户输入,物理事件/运动,游戏状态新号等,

我认为有几个选项,

1) 容忍消息的延迟,将新旧消息排成队列,只进行一次消息处理,

2) 事件管理器在一次循环中进行多次处理tick

3) 可以将新发生的事件附加在事件队列中

4) 选择性的触发事件

5) 混合

6) 其他

我总结出到一种通用的并且可以很容易与远程玩家兼容的一种方式。

 

 

标准的做法是将事件分为两类: 事件通知和状态改变,

事件通告对于事件要求不严格,例如,“喂,xyz 发生了,当你有能力去做的时候去应答”这对,AI,物理,

其他形式的模拟很管用,因为它们没必要每个事件都运行。通常你使用事件队列。

 

对于状态改变而言,你必须即可进行处理,因为它直接影响这游戏模拟的状态,这包含用户输入,应答AI即事件通告,等等。

任何在下一帧可以被观察到的都应视作状态改变。通常状态改变是直接相应的。call back 函数为这一类。

 

这将为多线程处理带来的优点。例如,事件通知将被独立在每个线程中,然后被汇总到最后的分发。

状态改变通常需要额外的处理,如果你已经对其进行分开处理,那么将会简单许多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值