收 稿日期 : 2008-03-15; 修 回日期 : 2008-05-21 基 金项 目: 国 家自 然科学 基金 资助项 目( 60572015)
作 者简介 : 薛胜军 , 男 , 教授, 主要 研究 方向为 计算机 网络 、人 工智 能( sjxue@ whut. edu. cn) ; 张小 华, 男, 硕 士 研究 生 , 主 要 研究 方 向为 计 算机 网
络、操作系 统.
游 戏 网 格 服 务 划 分 算 法 研 究
*
薛胜军, 张小华
( 南京 信息 工程 大学 计算 机与 软件 学院 , 南京 210044)
摘 要: 为 了充 分利 用游 戏网 格的 计算 资源 , 使 用其 强大 的 并行 计 算 能 力, 部 署 在 游 戏 网 格 的 网络 游 戏 必 须 要
划分 成可 以并 行的多 个服 务。 提出 了一 种基 于动态 二叉 树的 游戏 网格 服务 划分 算法 ; 讨 论了 如何 采 用 二叉 树 的
数据 结构 来组 织服务 节点 并根 据服 务节 点的 负载 动态 调整 其 服 务划 分 ; 最 后 实 现一 个 模 拟 游 戏 网 格 环境 , 通 过
实验 结果 证明 该算法 可以 取得 良好 的性 能。
关键 词: 游戏网 格; 服 务划 分; 负 载平 衡
中图 分类 号: TP301.6 文 献标 志码 : A 文 章编 号: 1001-3695( 2009) 01-0082-03
Study on game grid service partitioning algorithm
XUE Sheng-jun, ZHANG Xiao-hua
( College of Computer & Software, Nanjing University of Information Science & Technology, Nanjing 210044, China)
Abstract: In order to make the most of computing resources and computing power of game grid, the network game, deployed
in game grid, should be divided into several parallel services. Thispaper putforward agame grid service partitioning algorithm
based ondynamical binary space partitioningtree. It discussed howto use datastructure of binary space partitioning tree to or-
ganize service node and adjusted service division dynamically according to the load of service node, thus achieving a simulative
game grid environment. In the end, the paper demonstrated the good performance of the game grid service partitioning algo-
rithmthrough experiments.
Key words: game grid; service partition; load balance
大型 多 人 角色 扮 演 游 戏 ( massively multiplayer online role
playing games, MMORPG) 经 常 有百 万数 量 的游 戏 玩家 同 时 在
线参与游戏。任何单一的服务 器都没 有能力 处理百 万游戏 玩
家同时在线, 这就 需要 通 过网 格技 术
[ 1]
来解 决。网 格技 术 可
以提供强大的计算资源和很好的可扩展性, 可以减少网络游戏
的初始投资, 降低游戏运 营的风 险, 很 好地解 决当游 戏玩家 大
量增加或减少时对计算资源的动态需求。
目前只能通过将整个 MMORPG 划分成多个小的游戏服务
来将其部署到游戏网格上。可 以对整 个游戏 采用逻 辑功能 划
分得到多个功能服务, 如数 据库服 务、网关服务 等。这些服 务
不能再加以逻辑划分, 而只能同时运行多个服务实例来提高游
戏整体性能。但是游戏场景服务是一类特殊的游戏服务, 它不
能采用直接运行多个实例的方式, 因为整个游戏的场景必须保
持实时一致, 如果多个服 务器运 行整个 游戏场 景, 则 多个场 景
服务器之间的通信代价将远远 大于其 并行逻 辑计算 带来的 好
处。游戏网格服务划分就成为一个非常重要的问题。
1 游戏服务划分的关键问题和研究现状
游戏服务划分需要考虑的问题有
[ 2]
:
a) 连通性。游戏 世界 类 似于 真 实的 世界, 它所 划分 的 小
区域都与其他的小区域互相连通或者存在逻辑联系, 孤立存在
的小区域很少。这些小区域可能不是运行在同一个服务器上,
但是在一个小区域内的游戏对 象所产 生的活 动和事 件可能 会
对其他邻近小区域的游戏对象产生影响, 或同时对几个小区域
内的游戏对象产生影响的 事件也 是存在 的。 任何一 种游戏 世
界划分方法都必须保证整个游 戏世界 的完整 性和游 戏状态 的
一致性。
b) 数据交换。整个游戏只由一台 服务器 运行就 不会存 在
数据交换的需求, 但是这也就不能充分利用网格并发带来的优
势。由于游戏世界划分成了很多小区域, 这些区域可以在多个
游戏服务器上同时运行, 为 了保持 游戏状 态的一 致性, 在多 个
游戏服务器之间必须进行数据交换。
c) 划分粒度。游戏世界划 分的一 个关键 问题是 确定划 分
的游戏区域的大小, 也就是游戏世界划分的粒度。如果区域划
分太大, 这样并行的区域服 务器相 应很少, 当 游戏中 的玩家 聚
集在某一个区域时, 可能导 致该区 域服务 器过载; 而 区域划 分
太小, 会产生很多小的区域, 假 设一个 区域只 运行在 一个服 务
器上, 这样会造成服务器之间的状态同步需求过多而降低系统
的整体性能。所以选择一个有 效的划 分粒度 既要考 虑服务 器
数量的上限, 也要考虑游戏世界中各个区域之间的耦合程度。
目前这 方 面 的 研 究已 经 取 得 了 很 多 成 果。 Vleeschauwer
等人
[ 3]
提出了 microcell 的概念以 及动态将 microcell 分配给 服
务器的一组算法、平衡算 法、Clustering 算 法、模拟退 火划 分 算
法和最优算法。
RING
[ 4]
支持一种将虚 拟世 界划 分成 部分 区域 的模 型, 每
一个被划分的部分区域只能由事先绑定好的服务器来运行, 不
第 26 卷第 1 期
2009 年 1 月
计 算 机 应 用 研 究
Application Research of Computers
Vol. 26 No. 1
Jan. 2009