CN103856336A - 一种游戏地图分时广播的方法 - Google Patents
一种游戏地图分时广播的方法 Download PDFInfo
- Publication number
- CN103856336A CN103856336A CN201210512536.2A CN201210512536A CN103856336A CN 103856336 A CN103856336 A CN 103856336A CN 201210512536 A CN201210512536 A CN 201210512536A CN 103856336 A CN103856336 A CN 103856336A
- Authority
- CN
- China
- Prior art keywords
- player
- map
- players
- server
- array
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明提供一种游戏地图分时广播的方法,将游戏地图以块为单位进行管理需要发送的玩家的信息,服务器通过分时间片段广播来分散流量和处理时间。只在玩家登陆和移动跨越区块的时候,才对周围玩家进行遍历,以块为单位缓存需要发送的玩家,并分时广播,每次只发送一定数量的玩家。且服务器能管理玩家的删除来避免客户端与服务器的不一致。给每个地图分配一定的时间,每个地图消耗一定的时间还没处理完玩家的广播后就中断此游戏地图的处理;繁忙的游戏地图,有些玩家的广播信息可能会累积很久,这时可以考虑丢弃掉。本发明可以有效改进游戏服务器的安全,提升游戏服务器的执行效率,改进玩家的体验。
Description
【技术领域】
本发明涉及一种游戏地图分时广播的方法。
【背景技术】
目前,在线角色扮演游戏中的玩家需要相互可见,要想使某一玩家为中心,让其他玩家以该中心玩家为中心进行可见的话;现在一般的做法是:服务器需要以一定的规则来管理玩家可见的其他玩家并发给游戏客户端表现,客户端也相应的对游戏世界的玩家进行管理。具体为:游戏服务器以地图为单位管理游戏世界的所有玩家,并把地图划分为多个区块。玩家登陆时,游戏服务器遍历玩家周围尽可能少的区块,收集这些区块内玩家可视范围内的其他玩家,并一次性发给客户端显示;玩家在游戏世界移动时,游戏服务器遍历并收集新增可见的其他玩家发送给客户端。在其他玩家离开该中心玩家的可视范围时客户端主动删除这部分玩家。玩家的登陆、位置改变,游戏服务器也需要把这个玩家广播给周围的其他玩家。因为游戏服务器发送游戏对象给客户端会产生一定的流量和时间消耗,并且这一部分消耗很容易成为服务器的性能瓶颈,所以现在一般只广播以某一玩家为中心玩家可见的范围内的其他玩家。
现有的技术实现了游戏世界中的玩家相互可见,但是存在一些缺点:1、如果大量玩家恶意聚集在某一区域,那任何一个玩家的登陆和移动都需要广播大量的玩家给客户端,这会瞬间产生大量的流量和处理时间,会影响到整个游戏服务器的响应时间,在客户端体现出来就是游戏服务器的响应很慢,使得玩家无法正常体现游戏的内容。2、玩家的任何一点点移动都需要重新遍历玩家周围的其他玩家,判断是否有新增的玩家需要发给客户端表现,增加了游戏的消耗。3、游戏对象离开玩家的可视范围是由客户端主动判断删除的,很容易因为移动位置跟游戏服务器的不同步导致可见的游戏对象不对。
现有技术中提供了一种"游戏地图的存储方法及装置、游戏地图的显示方法及系统",见公开号为:CN1924873,公开日为:2007.03.07的中国专利,其中游戏地图的显示方法为:将游戏的游戏地图采用地图块方式存储;获取玩家的位置坐标,根据所述位置坐标确定可见场景对应的多个地图块;用二维数组存储所述地图块的编号;从保存的游戏地图中获取存储于二维数组中的编号对应的地图信息;绘制获取的地图信息,并在屏幕上输出;使用该方法,可以实现无缝游戏地图,从而使游戏更为顺畅。该发明的技术方案只是将游戏地图采用地图块方式存储,然后需要时通过二维数组中的地图块编号进行调用;其解决的技术问题是实现无缝游戏地图,并不能有效解决服务器的瞬卡,提高游戏服务器的执行效率,减少游戏处理时的数据处理量。
【发明内容】
本发明要解决的技术问题,在于提供一种游戏地图分时广播的方法,有效改进游戏服务器的安全,提升游戏服务器的执行效率,改进玩家的体验。
本发明是这样实现的:一种游戏地图分时广播的方法,将每张游戏地图进行划分为对应的多个地图块的实例,并将所述每张游戏地图对应的多个地图块的实例在各游戏地图中分配各自的坐标位置,将每张游戏地图对应的多个地图块的实例均用一个二维数组进行存储,该二维数组的每个数组元素的一维下标和二维下标对应于所述各地图块的实例的坐标;
每个地图块的实例都设置有一个一维数组1,该一维数组1用于缓存:需要发送给新进入块的玩家的其他玩家的集合,所述新进入块为玩家从一个地图块的实例进入另一新地图块的实例;所述该一维数组1缓存的集合的下标为新进入块的玩家ID,集合内容为新地图块的实例内的其他玩家ID;
每张游戏地图都设置有一个一维数组2,该一维数组2用于缓存:刚登陆或者位置改变的玩家,进入该玩家的视野的地图块的实例;所述该一维数组2缓存的集合的下标为该玩家的ID,集合内容为用于索引所述二维数组的数组元素的二维下标;
定时分配给每张游戏地图一预设时间遍历各游戏地图的一维数组2,取出该一维数组2中有发生改变地图块的实例对应的数组元素;遍历该数组元素的集合,根据集合内容从所述二维数组中索引对应的地图块的实例;然后从索引出的地图块的实例的一维数组1中取出一定数量所述其他玩家的集合,所述一定数量为游戏服务器预先设定的数量;把这部分其他玩家的数据信息发送给所述该数组元素的集合的下标的玩家,并将取出的其他玩家的集合从一维数组1中的缓存中删除;当各张游戏地图遍历超出分配的预设时间时,主动退出。
本发明具有如下优点:将游戏地图以块为单位进行管理需要发送的玩家的信息,服务器通过分时间片段广播来分散流量和处理时间。由于采取了分时间片段发送,可以有效防止瞬间产生大量的流量和处理时间,提高了游戏服务器的稳定性,保证游戏服务器能稳定的提供高质量响应。由于只在玩家进行登陆或者跨块时才遍历并广播玩家,减少了遍历次数和广播量,有效提升了游戏服务器性能。由于游戏服务器通知客户端删除离开视野的玩家,能有效解决常见的游戏不同步,优化玩家体验。
【附图说明】
图1为本发明中各数组的依赖关系的结构示意图。
图2为本发明中玩家登陆时游戏服务器进行处理的流程示意图。
图3为本发明中玩家移动时游戏服务器进行处理的流程示意图。
【具体实施方式】
请参阅图1至图3所示,本发明的一种游戏地图分时广播的方法,将每张游戏地图进行划分为对应的多个地图块的实例,并将所述每张游戏地图对应的多个地图块的实例在各游戏地图中分配各自的坐标位置,将每张游戏地图对应的多个地图块的实例均用一个二维数组进行存储,该二维数组的每个数组元素的一维下标和二维下标对应于所述各地图块的实例的坐标;
每个地图块的实例都设置有一个一维数组1,该一维数组1用于缓存:需要发送给新进入块的玩家的其他玩家(其他玩家即新地图块中存在的玩家,新进入的玩家除外)的集合,所述新进入块为从一个地图块的实例进入另一新地图块的实例;所述该一维数组1缓存的集合的下标为新进入块的玩家ID,集合内容为另一新地图块的实例内的其他玩家ID;
每张游戏地图都设置有一个一维数组2,该一维数组2用于缓存:刚登陆或者位置改变的玩家,进入该玩家的视野的地图块的实例;所述该一维数组2缓存的集合的下标为该玩家的ID,集合内容为用于索引所述二维数组的数组元素的二维下标;
定时分配给每张游戏地图一预设时间(即时间片段)遍历各游戏地图的一维数组2,取出该一维数组2中有发生改变地图块(级该地图块中的玩家有刚进入的,或者离开的)的实例对应的数组元素;遍历该数组元素的集合,根据集合内容从所述二维数组中索引对应的二维下标的地图块的实例;然后根据该数组元素的集合的下标的玩家ID从索引出的地图块的实例的一维数组1中取出一定数量所述其他玩家的集合,所述一定数量为游戏服务器预先设定的数量;把这部分其他玩家的数据信息发送给所述该数组元素的集合的下标的玩家,并将取出的其他玩家的集合从一维数组1中的缓存中删除;当各张游戏地图遍历超出分配的预设时间时,主动退出,让出时间片段。
参见图2,本发明中玩家登陆时游戏服务器进行处理的流程示意图。当有刚登陆游戏的玩家时,游戏服务器根据记录该玩家所在游戏地图和所在位置将玩家加入到二维数组的游戏地图对应的地图块的实例中;
判断该玩家周围是否有可见视野内的其他玩家,是,则把该玩家的数据信息发送给周围的其他玩家,并遍历该玩家周围的可见的地图块的实例,将需要发送给该玩家的其他玩家的集合进行缓存到所述一维数组1中;否,则不做操作;
服务器按预设时间片段来取出一定数量所述缓存的其他玩家的数据信息,并调用服务器的消息模块把取出的其他玩家的数据信息发送给游戏客户端进行展现。
参见图3,本发明中玩家移动时游戏服务器进行处理的流程示意图。当有一玩家移动时,游戏服务器判断该玩家的移动是否跨出了当前所在的地图块的实例;是跨出,则需要遍历该玩家周围的地图块的实例,记录新增进入该玩家视野的地图块的实例,并判断新增进入该玩家视野的地图块的实例中是否有其他玩家,有,则将该部分的其他玩家进行缓存到所述一维数组1中,以供服务器分时发送给游戏客户端;无其他玩家,不做操作;遍历离开移动玩家视野的地图块的实例,判断离开移动玩家视野的地图块的实例内是否还存有离开块的玩家,是,则发送消息通知离开块的玩家的客户端,从客户端中进行删除离开块的该块中离开玩家的数据信息;未跨出,则不进行操作;
服务器按预设时间片段来取出一定数量所述缓存的其他玩家的数据信息,并调用服务器的消息模块把取出的其他玩家的数据信息发送给游戏客户端进行展现。
其中,所述游戏服务器预先设定的数量是根据游戏服务器的状态动态获得的,即当游戏服务器繁忙时预先设定的数量比游戏服务器不忙时预先设定的数量小。
总之,本发明将游戏地图以块为单位进行管理需要发送的玩家的信息,服务器通过分时间片段广播来分散流量和处理时间。只在玩家登陆和移动跨越区块的时候,才对周围玩家进行遍历,以块为单位缓存需要发送的玩家,并分时广播,每次只发送定量的玩家。且服务器能管理玩家的删除来避免客户端与服务器的不一致。给每个地图分配一定的时间,每个地图消耗一定的时间还没处理完玩家的广播后就中断此游戏地图的处理;繁忙的游戏地图,有些玩家的广播信息可能会累积很久,这时可以考虑丢弃掉。本发明可以有效改进游戏服务器的安全,提升游戏服务器的执行效率,改进玩家的体验。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
Claims (4)
1.一种游戏地图分时广播的方法,其特征在于:
将每张游戏地图进行划分为对应的多个地图块的实例,并将所述每张游戏地图对应的多个地图块的实例在各游戏地图中分配各自的坐标位置,将每张游戏地图对应的多个地图块的实例均用一个二维数组进行存储,该二维数组的每个数组元素的一维下标和二维下标对应于所述各地图块的实例的坐标;
每个地图块的实例都设置有一个一维数组1,该一维数组1用于缓存:需要发送给新进入块的玩家的其他玩家的集合,所述新进入块为玩家从一个地图块的实例进入另一新地图块的实例;所述该一维数组1缓存的集合的下标为新进入块的玩家ID,集合内容为新地图块的实例内的其他玩家ID;
每张游戏地图都设置有一个一维数组2,该一维数组2用于缓存:刚登陆或者位置改变的玩家,进入该玩家的视野的地图块的实例;所述该一维数组2缓存的集合的下标为该玩家的ID,集合内容为用于索引所述二维数组的数组元素的二维下标;
定时分配给每张游戏地图一预设时间遍历各游戏地图的一维数组2,取出该一维数组2中有发生改变地图块的实例对应的数组元素;遍历该数组元素的集合,根据集合内容从所述二维数组中索引对应的地图块的实例;然后从索引出的地图块的实例的一维数组1中取出一定数量所述其他玩家的集合,所述一定数量为游戏服务器预先设定的数量;把这部分其他玩家的数据信息发送给所述该数组元素的集合的下标的玩家,并将取出的其他玩家的集合从一维数组1中的缓存中删除;当各张游戏地图遍历超出分配的预设时间时,主动退出。
2.根据权利要求1所述的一种游戏地图分时广播的方法,其特征在于:
当有刚登陆游戏的玩家时,游戏服务器根据记录的该玩家所在游戏地图和所在位置将玩家加入到二维数组的游戏地图对应的地图块的实例中;
判断该玩家周围是否有可见视野内的其他玩家,是,则把该玩家的数据信息发送给周围的其他玩家,并遍历该玩家周围的可见的地图块的实例,将需要发送给该玩家的其他玩家的集合进行缓存到所述一维数组1中;否,则不做操作;
服务器按预设时间片段取出所述一定数量所述缓存的其他玩家的数据信息,并调用服务器的消息模块把取出的其他玩家的数据信息发送给游戏客户端进行展现。
3.根据权利要求1所述的一种游戏地图分时广播的方法,其特征在于:
当有一玩家移动时,游戏服务器判断该玩家的移动是否跨出了当前所呆的地图块的实例;是跨出,则需要遍历该玩家周围的地图块的实例,记录新增进入该玩家视野的地图块的实例,并判断新增进入该玩家视野的地图块的实例中是否有其他玩家,有,则将该部分的其他玩家进行缓存到所述一维数组1中,以供服务器分时发送给游戏客户端;无其他玩家,不做操作;遍历离开移动玩家视野的地图块的实例,判断离开移动玩家视野的地图块的实例内是否还存有离开块的玩家,是,则发送消息通知离开块的玩家的客户端,从客户端中进行删除离开玩家的数据信息;未跨出,则不进行操作;
服务器按预设时间片段取出所述一定数量所述缓存的其他玩家的数据信息,并调用服务器的消息模块把取出的其他玩家的数据信息发送给游戏客户端进行展现。
4.根据权利要求1所述的一种游戏地图分时广播的方法,其特征在于:
所述游戏服务器预先设定的数量是根据游戏服务器的状态动态获得的,即当游戏服务器繁忙时预先设定的数量比游戏服务器不忙时预先设定的数量小。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210512536.2A CN103856336B (zh) | 2012-12-04 | 2012-12-04 | 一种游戏地图分时广播的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210512536.2A CN103856336B (zh) | 2012-12-04 | 2012-12-04 | 一种游戏地图分时广播的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103856336A true CN103856336A (zh) | 2014-06-11 |
CN103856336B CN103856336B (zh) | 2017-06-16 |
Family
ID=50863581
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210512536.2A Active CN103856336B (zh) | 2012-12-04 | 2012-12-04 | 一种游戏地图分时广播的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103856336B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105991591A (zh) * | 2015-02-13 | 2016-10-05 | 广州四三九九信息科技有限公司 | 游戏aoi同步方法 |
CN109718543A (zh) * | 2018-12-28 | 2019-05-07 | 北京像素软件科技股份有限公司 | 一种同屏处理方法及装置 |
CN111643896A (zh) * | 2020-04-15 | 2020-09-11 | 完美世界(北京)软件科技发展有限公司 | 数据的处理方法和装置、存储介质和电子装置 |
CN112206509A (zh) * | 2020-10-12 | 2021-01-12 | 上海酷量信息技术有限公司 | 一种根据服务器状态动态发送通知的系统和方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060247059A1 (en) * | 2005-04-28 | 2006-11-02 | Nintendo Co., Ltd. | Game system, game apparatus, storage medium storing game program, and game controlling method |
CN1924873A (zh) * | 2006-09-19 | 2007-03-07 | 北京金山数字娱乐科技有限公司 | 游戏地图的存储方法及装置、游戏地图的显示方法及系统 |
CN101604358A (zh) * | 2009-07-13 | 2009-12-16 | 优万科技(北京)有限公司 | 一种资源更新方法、装置和系统 |
CN102646152A (zh) * | 2011-02-22 | 2012-08-22 | 腾讯科技(深圳)有限公司 | 一种游戏地图切换方法及系统 |
-
2012
- 2012-12-04 CN CN201210512536.2A patent/CN103856336B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060247059A1 (en) * | 2005-04-28 | 2006-11-02 | Nintendo Co., Ltd. | Game system, game apparatus, storage medium storing game program, and game controlling method |
CN1924873A (zh) * | 2006-09-19 | 2007-03-07 | 北京金山数字娱乐科技有限公司 | 游戏地图的存储方法及装置、游戏地图的显示方法及系统 |
CN101604358A (zh) * | 2009-07-13 | 2009-12-16 | 优万科技(北京)有限公司 | 一种资源更新方法、装置和系统 |
CN102646152A (zh) * | 2011-02-22 | 2012-08-22 | 腾讯科技(深圳)有限公司 | 一种游戏地图切换方法及系统 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105991591A (zh) * | 2015-02-13 | 2016-10-05 | 广州四三九九信息科技有限公司 | 游戏aoi同步方法 |
CN105991591B (zh) * | 2015-02-13 | 2019-02-26 | 广州四三九九信息科技有限公司 | 游戏aoi同步方法 |
CN109718543A (zh) * | 2018-12-28 | 2019-05-07 | 北京像素软件科技股份有限公司 | 一种同屏处理方法及装置 |
CN109718543B (zh) * | 2018-12-28 | 2022-07-12 | 北京像素软件科技股份有限公司 | 一种同屏处理方法及装置 |
CN111643896A (zh) * | 2020-04-15 | 2020-09-11 | 完美世界(北京)软件科技发展有限公司 | 数据的处理方法和装置、存储介质和电子装置 |
CN111643896B (zh) * | 2020-04-15 | 2021-12-28 | 完美世界(北京)软件科技发展有限公司 | 数据的处理方法和装置、存储介质和电子装置 |
CN112206509A (zh) * | 2020-10-12 | 2021-01-12 | 上海酷量信息技术有限公司 | 一种根据服务器状态动态发送通知的系统和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103856336B (zh) | 2017-06-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Campelo et al. | Comparing webshare services to assess mountain bike use in protected areas | |
CN103856336A (zh) | 一种游戏地图分时广播的方法 | |
CN105991591B (zh) | 游戏aoi同步方法 | |
US20060003823A1 (en) | Dynamic player groups for interest management in multi-character virtual environments | |
CN104408190B (zh) | 基于Spark的数据处理方法及装置 | |
CN104282140B (zh) | 基于分布式框架的大规模实时交通指数服务方法与系统 | |
CN105893628A (zh) | 一种数据实时收集系统及方法 | |
CN102147807A (zh) | 基于gis的海量雷电数据时空分析方法 | |
KR20140136480A (ko) | 실증적 전문가 결정 및 질문 라우팅 시스템 및 방법 | |
CN107087236A (zh) | 一种直播信息展示方法及装置 | |
CN104683450B (zh) | 视频服务监控云系统 | |
Fernández-Rodríguez et al. | Benchmarking real-time vehicle data streaming models for a smart city | |
WO2011144464A2 (en) | Providing scene data of virtual world | |
CN106354891A (zh) | 基于tgis的地理信息服务的查询方法 | |
CN104980417B (zh) | 一种ugc文件分发方法和设备 | |
CN106528793A (zh) | 一种分布式空间数据库的时空分片存储方法 | |
DE202014010950U1 (de) | Das Anzeigen von dynamischen Inhalten auf einer Karte auf Basis des Standorts des Benutzers und der geplanten Aufgabe | |
CN108846072A (zh) | 一种基于可视化分析的数据实现封装技术 | |
CN109724619A (zh) | 信息推送方法、装置及服务器 | |
CN104660690A (zh) | 云视频服务监控系统 | |
CN114187420A (zh) | 一种实时在线城市规划沙盘模拟方法 | |
CN110209756A (zh) | 一种输电运维的地图交互方法及系统 | |
CN103838861B (zh) | 一种基于三维gis动态显示信息的方法和显示系统 | |
CN103778041B (zh) | 用于互联网的数据监控方法和装置 | |
CN106570060A (zh) | 一种信息流中数据的随机抽取方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |