金庆的专栏

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  423 随笔 :: 0 文章 :: 454 评论 :: 0 Trackbacks
网关按区域聚集玩家

(转载请注明来源于金庆的专栏)

目前网游系统中的网关只发挥了隔离内外网和转发的功能, 至少征途和KOK3是这样.
按照尹红春的设计构想,网关还有个区域聚集功能.

区域聚集是这样的意思: 场景中的许多事件都是区域内广播的,
如角色或NPC的移动, 攻击, 状态变化, 场景服务器不必直接向该区域内的所有人广播,
而是只需向网关广播, 然后由各网关向该区域内的人广播.

因为目前场景服务器的负载并不重, 所以并没有实现网关的区域聚集.

在KOK3中可能有必要实现网关的区域聚集.
因为KOK3中玩家之间没有阻挡, 是可以相互重叠和穿越的.
无阻挡设定是为了增大区域内的玩家密度, 让界域战争之类的大型群体活动更爽.
(个人认为这种设定有点怪异, 感觉自己象个鬼魂, 整个世界也是虚无的.)
KOK3场景区域内聚集上万玩家是可能的, 所以网关的区域聚集功能也是必要的.
玩家的聚集程度越大, 网关区域聚集效果就越明显.

目前网关选择是按负载平衡分散的. 一个区域内的玩家应该是平均分散在各个网关.
这种方案是否可以改为按场景选择网关?
一个场景对应一个网关, 这样就不必向所有网关广播了, 只需向对应的网关单独发送.
玩家切换场景同时切换网关(目前客户端与网关是保持连接不变的).

客户端与网关保持连接是否必要?
帐号登录验证之后, 角色连接服务器是不需要再次输密码的.
连接占用的时间很短, 即使是无缝地图切换, 也不会造成游戏停顿.

如果网关数量增加到成百上千, 场景向所有网关广播也比较浪费,
可改为向两三个网关单独发送.
对于仅有一两个玩家的区域, 更是没必要进行网关广播.

网关可改为动态增长的, 区域内玩家过多就自动分裂成多个网关.
并且可以助此实现负载均衡.

网关切换可以不立即断开连接, 保持一段时间后再断, 防止来回频繁切换网关.
或者网关对应的场景是重叠的, 不会造成来回频繁切换网关.
因为网关上的用户之间无需处理交易之类的交互, 所以这种重叠是简单的, 可行的.


posted on 2009-11-06 10:43 金庆 阅读(1511) 评论(0)  编辑 收藏 引用 所属分类: 2. 网游开发

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理