饭中淹的避难所~~~~~

偶尔来避难的地方~

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  94 随笔 :: 0 文章 :: 257 评论 :: 0 Trackbacks

问题背景:

   游戏中,玩家可以在场景某处放置一个监控器,从而接收该处周围的物件的广播消息。不过,当玩家观察区域和监控器观察区域出现重叠时,在重叠区域的广播消息就会收到两次。

解决方案:
   场景中有一个广播计数器,用来记录当前广播的顺序。一个有效的广播接受者(指一个玩家,或者其他广播观察者),保有一个最后广播顺序的变量,来记录最后一次广播的全局顺序。当收到广播消息时,接受者更新这个变量。碰到广播消息的顺序号小于等于最后广播的顺序号时,丢弃这个广播消息。从而过滤掉重复的消息。
posted on 2010-04-28 13:48 饭中淹 阅读(2449) 评论(6)  编辑 收藏 引用 所属分类: 游戏服务器

评论

# re: MMORPG游戏服务器场景中对于多个观察者的广播消息重复解决方案。 2010-04-29 10:17 金庆
消息不是发给角色或监控器,而是发给它们的客户端。先列举可接收的客户端,再广播,就不会重复了。  回复  更多评论
  

# re: MMORPG游戏服务器场景中对于多个观察者的广播消息重复解决方案。 2010-04-29 22:12 饭中淹
@金庆
列舉過程消耗太大。  回复  更多评论
  

# re: MMORPG游戏服务器场景中对于多个观察者的广播消息重复解决方案。 2011-05-05 18:46
@金庆
@饭中淹
我们采用的方法是九宫格通道划分客户端,广播消息到通道,通道发送到客户端。一个客户端仅在一个通道。
  回复  更多评论
  

# re: MMORPG游戏服务器场景中对于多个观察者的广播消息重复解决方案。 2011-05-06 00:51 饭中淹
@康
我这里也是这种方法,不过,这里是在解决另外的问题:

当一个角色有多个可见区域的时候,
可见区域重叠,带来的广播消息的重复。


  回复  更多评论
  

# re: MMORPG游戏服务器场景中对于多个观察者的广播消息重复解决方案。 2011-05-06 10:45
@饭中淹
假设角色有多个可见区域 A,B
则应该发消息到 (A∪B) - (A∩B),来去掉重复的区域以及重复的通道,从而控制消息不会重复发送。  回复  更多评论
  

# re: MMORPG游戏服务器场景中对于多个观察者的广播消息重复解决方案。 2011-05-08 15:27 饭中淹
@康

你说的是每个方法最初的理论基础。但并不是最好的方法。






  回复  更多评论
  


只有注册用户登录后才能发表评论。
【推荐】超50万行VC++源码: 大型组态工控、电力仿真CAD与GIS源码库
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理