一种游戏中的地图绘制方法

文档序号:6559296阅读:244来源:国知局
专利名称:一种游戏中的地图绘制方法
技术领域
本发明涉及图像显示技术领域,尤其是一种游戏中的地图绘制方法。
背景技术
随着游戏的不断升级,人们对游戏画面的要求也越来越高。游戏过程是一个按时间为周期的循环,称为游戏循环,每个游戏循环中,进行一次游戏逻辑运算及游戏画面的绘制。游戏画面一般由静态画面和动态画面构成。静态画面指游戏的背景地图,一个游戏通常有一张世界地图,以象素为单位设定坐标。为了节省存储资源以及地图部分的重复利用,将世界地图划分为大小相同的正方形,称为地表图素块,世界地图还可以根据游戏逻辑需要进一步划分为关卡地图,例如玩家闯关成功,则进入到另一关,加载新的关卡地图,或者世界地图按游戏逻辑划分为华南地区、华北地区等,玩家每到一个地区,则加载新的地区地图,若包含关卡地图,则以关卡地图为单位,对每个关卡地图进行分块划分。具体做法以世界地图或关卡地图的原点(一般以世界地图或关卡地图的左上顶点为地图原点)为起始点顺序进行划分,并为每个地表图素块设置一个唯一编号。在每一个游戏循环中,对地图进行绘制时,获取当前玩家所在位置的世界坐标,再依据屏幕的大小,计算出当前屏幕中地图的起始点的世界坐标(即左上角顶点的世界坐标),依据当前屏幕中地图起始点的世界坐标以及屏幕大小,获取当前屏幕中所有的地表图素块,并一一进行绘制,从而完成背景地图的绘制,每个游戏循环中,都用同样的方法绘制背景地图。其中,世界地图,指游戏中的地图;世界坐标,指世界地图中每个象素点的坐标,起始点是世界地图的左上角;当前地图,指以玩家当前的位置以及屏幕大小所决定的地图范围,为了获取比较好的感观效果,除了地图边界与屏幕边界重合的情况,一般会将玩家始终置于屏幕的中心。动态画面,指游戏中所有的玩家及游戏中设置的角色,其状态会随游戏逻辑实时变化。动态画面由一系列连续的图片构成,每张图片称为一个帧,帧数越多,表现出来的动作越平滑,每个游戏循环中,绘制完静态画面后,再依据逻辑运算的结果对动态画面进行绘制,绘制时只绘制动态画面的一帧。
以上可以看出,每个游戏循环中都需要计算并获取当前屏幕中所有的地表图素块,即使上一个游戏循环与下一个游戏循环中的地图完全相同或仅仅有几个地表图素块不同,每个游戏循环中大量的计算,对于运行游戏的硬件要求高。
在手机网络游戏中,由于手机的处理速度低,内存小,在实现画面复杂的游戏时,用上述方法绘制地图需要花较长的时间,会导致在一个游戏循环内,无法完成所有的逻辑运算以及游戏画面的显示,就进入下一次游戏循环,使得游戏画面看起来有跳格,动画迟延的现象。

发明内容
本发明要解决的技术问题是提供一种游戏中的地图绘制方法,能够减少游戏地图的绘制时间,保证游戏的流畅性、美观性和可玩性。
为解决上述技术问题,本发明的目的是通过以下技术方案实现的(1)保存上一游戏循环的地像数据;(2)获取下一游戏循环与上一游戏循环中地图的纵横向象素差;(3)将保存的上一游戏循环的地像数据取出,根据象素差进行绘制。
(4)根据象素差,绘制所保存图像数据中未显示的部分。
其中,所述步骤(1)之前进一步包括(0)第一次绘制游戏循环地图时,顺序绘制地表图素块。
其中,所述步骤(0)之前进一步包括1)将世界地图划分成地表图素块;2)从世界地图的起始点开始为每个地表图素块设置一个唯一编号。
其中,所述步骤1)进一步包括11)将世界地图划分为关卡地图;12)以关卡地图左上角顶点为起始点划分成地表图素块。
其中,所述步骤(0)包括(01)获取玩家所在位置的世界坐标;(02)根据获取的世界坐标计算该游戏循环地图顶点的世界坐标;(03)根据计算出的顶点坐标世界坐标获取相应的地表图素块;(04)以左上角的顶点为起始点顺序绘制地表图素块。
其中,所述步骤(2)包括(21)获取上一游戏循环玩家所在位置的世界坐标;(22)获取下一游戏循环玩家所在位置的世界坐标;(23)根据上一游戏循环玩家横向世界坐标与下一游戏循环玩家横向世界坐标的差值得出下一游戏循环与上一游戏循环中地图的横向象素差;(24)根据上一游戏循环玩家纵向世界坐标与下一游戏循环玩家纵向世界坐标的差值得出下一游戏循环与上一游戏循环中地图的纵向象素差。
其中,所述步骤(3)进一步包括计算该地图在屏幕中的绘制点的世界坐标,并在屏幕中显示上下游戏循环地像数据相同的部分。
其中,所述步骤(4)包括(41)获取图像数据中未显示部分的地表图素块;(42)获取每个地表图素块的起始点坐标;(43)根据每个地表图素块对应的起始点坐标分别绘制游戏循环地图。
其中,所述步骤(4)进一步包括(41)删除缓冲区中保存的上一游戏循环中的地像数据;(42)将下一游戏循环中所显示的地像数据保存到内存中。
其中,对所述的游戏循环地图进行周期绘制。
以上技术方案可以看出,在上一游戏循环中绘制完地图时,保存了该地像数据,下一游戏循环时,从内存中获取所保存的上一游戏循环中的地像数据,根据上下游戏循环中地图象素差,直接对上一游戏循环地图进行绘制,然后再以地表图素块为单位绘制所保存图像中没有绘制的部分,这样就避免了重新以地表图素块为单位绘制上下游戏循环地图相同的部分。因此,减少了绘制地图时的逻辑运算,节省了时间,缩短了绘制游戏地图的循环周期,实现在不牺牲画面质量的情况下,保证游戏的流畅性、美观性和可玩性。


图1为本发明实施例的流程图;图2为本发明的世界地图;图3为本发明上一游戏循环所显示的地图;图4为本发明当前游戏循环所显示的地图;图5为本发明上一游戏循环与当前游戏循环比较所得到的地图。
具体实施例方式
本发明为一种游戏中的地图绘制方法,为使本发明的目的、技术方案、及优点更加清楚明白,以下参照附图并举实施例,对本发明进一步进行详细说明。
首先,对本发明所提供的方法进行总体描述本发明所提供的方法包括步骤步骤(1)第一次绘制背景地图时,依据玩家位置的世界坐标、屏幕大小计算出当前地图起始点的世界坐标,获取当前屏幕中相应的地表图素块,顺序绘制;步骤(2)将上一游戏循环的当前地图作为图像数据保存在内存中;步骤(3)获取玩家在下一循环中的世界坐标,计算出与上一游戏循环中世界坐标的纵横向的象素差;步骤(4)下一游戏循环时,将保存的上一游戏循环的地像数据取出,根据象素差,计算出该地图在屏幕中的绘制点的世界坐标,进行绘制;
步骤(5)根据象素差,获取所保存的图像中没有显示的地表图素块,进行绘制。
计算过程假设世界地图为500×500,划分为20*20的地表图素块,则该世界地图有25*25个地表图素块,按横向排列为地表图素块设置编号,分别为1,2,3.....625,编号1的地表图素块的四个顶点坐标为(0,0),(20,0),(0,20),(20,20);编号2的地表图素块的四个顶点坐标为(20,0),(40,0),(0,20),(40,40);依此类推,编号为625的地表图素块的四个顶点坐标为(480,480),(480,500),(500,480),(500,500)假设屏幕大小为100×100象素,屏幕的四个顶点的屏幕坐标是(0,0),(100,0),(0,100),(100,100)假设当前玩家的世界坐标为(60,80),玩家位置位于屏幕中心。
第一次绘制该地图时,通过以下计算,进行绘制当前地图的四个顶点坐标为(x0,y0),(x1,y0),(x0,y1),(x1,y1),根据公式(x0+x1)/2=60,x0+x1=100,(y0+y1)/2=80,y0+y1=100,可以计算出当前地图4个顶点的世界坐标分别为(10,30),(110,30),(10,130),(110,130),其中(10,30)为屏幕(0,0)点的世界坐标,也是当前地图起始点的世界坐标。
根据该起始点坐标(10,30),可获知该点坐标位于第一列,第二行的地表图素块中。由于屏幕大小为100×100,可获知当前地图四个顶点的坐标为(10,30),(110,30),(10,130),(110,130),应绘制的地表图素块为第1列至第6列,第2行至第7行获取该图素块,进行绘制时,将第1列,第2行的地表图素块的(10,30)点绘制在屏幕的(0,0)点上。即绘制的地表图素块共为36个,绘制的地图实际大小为120×120,玩家通过屏幕看到的地图大小是100*100。将显示的100×100地图的图像数据保存在内存中,该地图以P表示,其对应的四个顶点坐标,即当前地图坐标是(10,30),(110,30),(10,130),(110,130)。
下一游戏循环时,若玩家位置横向移动了+15个象素,即玩家坐标为(75,80),由于象素差小于地表图素块的大小,因此,当前地图对应的地表图素块仍是第1列至第6列,第2行至第7行的地表图素块,保存的图像P中覆盖了当前地图中点(25,30)和点(110,130)构成的面积,此面积即为上一游戏循环与下一游戏循环地图的相同部分,上下游戏循环地图不同部分为第6列中6个地表图素块偏移+15个象素后的部分,再绘制这部分地图时是以地表图素块为单位进行绘制的,因此需要重新绘制第6列中的6个地表图素块,绘制时,取出内存中保存的上一游戏循环中的地图的图像数据P,进行绘制,将该图像的(25,30)点绘制在屏幕的(0,0)点上,绘制完该图像后,重新绘制第6列中的6个地表图素块,每个地表图素块的绘制起始点,分别为图像P上的世界坐标为(100,30),(100,50),(100,70),(100,90),(100,110),(100,130)的6个点。绘制完成后,将当前地图保存到内存中,该地图以P1表示,其对应的四个顶点坐标是(25,30),(125,30),(25,130),(125,130)。
下面参照附图进行详细说明参见图1,实现本发明的具体流程如下步骤101判断当前游戏循环中的世界地图或关卡地图是否是第一次绘制,若是,则进行步骤102,否则,进行步骤104;步骤102依据玩家位置的世界坐标、屏幕大小计算出当前地图四个顶点的世界坐标,获取相应的地表图素块,并顺序进行绘制;步骤103将当前地图作为图像数据保存在缓冲区中;步骤104从缓冲区中取出保存的上一游戏循环中的地像数据,根据象素差,计算出该地图在屏幕中的绘制点的世界坐标,进行绘制;步骤105获取玩家当前位置的世界坐标,计算与上一游戏循环中玩家位置的象素差;步骤106根据象素差,获取所保存的图像中没有显示的地图部分所对应的地表图素块,顺序进行绘制;
步骤107删除缓冲区中所保存的上一游戏循环中的地像数据,将下一游戏循环中所显示的地像数据保存到内存中。
其中,进行本流程之前还需如下步骤,具体包括(a)将世界地图划分成地表图素块;(b)为每个地表图素块设置一个唯一编号;其中,步骤(a)中,若世界地图进一步划分为关卡地图,则以关卡地图为单位,对每个关卡地图进行划分。
下面结合本发明的游戏循环界面,进一步进行详细说明参见图2,将世界地图划分成大小相等,形状为正方形的地表图素块,然后以世界地图的左上角作为起始点对每个地表图素块设置一个编号,在本发明中将世界地图分为大小相等,形状为正方形的20个地表图素块,从左上角开始用1至20的数字对这20个地表图素块顺序编号。
在第一次绘制背景地图时,依据当前玩家的坐标位置,计算出当前地图起始点在世界地图中的世界坐标,根据世界坐标,可顺序绘制该世界坐标开始的地表图素块。
参见图3,为本发明的上一游戏循环所显示的地图,上一游戏循环所显示的地图用A区表示,包括编号分别为1、2、3、5、6、7、9、10、11的地表图素块,其中,标号为6的地表图素块表示当前玩家所在的位置。
标号为1、2、3、5、6、7、9、10、11的地表图素块所在的地图,即标号为6的地表图素块为中心,手机屏幕所能显示的地图作为当前地图;将A区表示的地图保存到缓冲区。
将A区保存到缓冲区的目的是为了在下一游戏循环时避免在每个游戏循环中绘制背景时,减少背景中的地表图素块的重复绘制,由于玩家游戏过程中,不论是行走,跑动,还是静止状态,其所在的上一游戏循环所显示的地图与当前游戏循环所显示的地图的差别不会太大,例如如果玩家处于静止状态,则地图不发生变化,若要重新绘制所有地表图素块,则会占用有限资源;若玩家处于行走或跑动状态,玩家所在的位置,一般情况下只是在原有位置基础上,移动有限的象素,地图的变化,只是几个象素位置的变化,大部分的地表图素块,在下一游戏循环时仍需重新绘制。
参见图4,为下一游戏循环所显示的地图,下一游戏循环所显示的地图用B区表示,包括标号为2、3、4、6、7、8、10、11、12的地表图素块,其中,标号为7的地表图素块表示当前玩家所在的位置。
当前游戏循环所显示的地图的绘制包括以下步骤步骤(1)依据当前玩家所在的位置,计算出与上一游戏循环中玩家位置的象素差;步骤(2)从缓冲区中取出上一游戏循环所表示的地图,根据象素差,计算出该地图在屏幕中的绘制坐标,进行绘制;步骤(3)根据像素差,绘制图像中没有显示的地图部分所对应的地表图素块,即标号分别为4、8、12的地表图素块;至此,完成了当前游戏循环所显示的地图的绘制,最后显示在屏幕中的当前地图用B区表示,包括标号分别为2、3、4、6、7、8、10、11、12的地表图素块,在此之后还应包括步骤(4)将B区表示的地图保存到缓冲区中。
在绘制当前地图时,利用了上一游戏循环所保存的地像数据,即A区,根据上一游戏循环玩家所在的位置即标号为6的地表图素块,与当前游戏循环玩家所在的位置即标号为7的地表图素块,可看出当前游戏循环玩家所在的位置只是在上一游戏循环玩家所在位置的基础上,移动有限的象素,因此,地图的变化,只是几个象素位置的变化,在绘制当前游戏循环地图的过程中,就避免了重复绘制标号分别为2、3、6、7、10、11的地表图素块,只需绘制变化的部分,即标号分别为4、8、12的地表图素块。
参见图5,为本发明上一游戏循环与下一游戏循环比较所得的地图。
其中,I区表示上一游戏循环与下一游戏循环不同的部分,II区表示上一游戏循环与下一游戏循环相同的部分,在绘制地图时,先将A区保存在缓冲区中,在绘制B区时将A区从缓冲区中取出,根据玩家位置在上下游戏循环中的横纵向象素差,计算出A区在屏幕中的绘制坐标,进行A区的绘制,然后再绘制B区中A区所没有显示的部分,即标号分别为4、8、12地表图素块,这时在手机内存中有I区、II区和标号分别为4、8、12地表图素块,但是由于手机的屏幕有限,玩家所能看到的地图为II区和标号分别为4、8、12地表图素块。
绘制一个游戏地图时,将绘制好的当前游戏循环所显示的地图保存到缓冲区,是为了下一游戏循环绘制游戏地图时,减少游戏地图中相同部分地图重新以地表图素块为单位进行绘制,本实施例中,上下游戏循环中游戏地图相同的部分为II区,在绘制时,只需以地表图素块为单位绘制上一游戏循环中没有显示的部分地图,即标号分别为4、8、12的地表图素块。
以上对本发明所提供的一种游戏中的地图绘制方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式
及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
权利要求
1.一种游戏中的地图绘制方法,其特征在于,包括步骤(1)保存上一游戏循环的地像数据;(2)获取下一游戏循环与上一游戏循环中地图的纵横向象素差;(3)将保存的上一游戏循环的地像数据取出,根据象素差进行绘制;(4)根据象素差,绘制所保存图像数据中未显示的部分。
2.根据权利要求1所述的游戏中的地图绘制方法,其特征在于,所述步骤(1)之前进一步包括(0)第一次绘制游戏循环地图时,顺序绘制地表图素块。
3.根据权利要求2所述的游戏中的地图绘制方法,其特征在于,所述步骤(0)之前进一步包括1)将世界地图划分成地表图素块;2)从世界地图的起始点开始为每个地表图素块设置一个唯一编号。
4.根据权利要求3所述的游戏中的地图绘制方法,其特征在于,所述步骤1)进一步包括11)将世界地图划分为关卡地图;12)以关卡地图左上角顶点为起始点划分成地表图素块。
5.根据权利要求2所述的游戏中的地图绘制方法,其特征在于,所述步骤(0)包括(01)获取玩家所在位置的世界坐标;(02)根据获取的世界坐标计算该游戏循环地图顶点的世界坐标;(03)根据计算出的顶点坐标世界坐标获取相应的地表图素块;(04)以左上角的顶点为起始点顺序绘制地表图素块。
6.根据权利要求1所述的游戏中的地图绘制方法,其特征在于,所述步骤(2)包括(21)获取上一游戏循环玩家所在位置的世界坐标;(22)获取下一游戏循环玩家所在位置的世界坐标;(23)根据上一游戏循环玩家横向世界坐标与下一游戏循环玩家横向世界坐标的差值得出下一游戏循环与上一游戏循环中地图的横向象素差;(24)根据上一游戏循环玩家纵向世界坐标与下一游戏循环玩家纵向世界坐标的差值得出下一游戏循环与上一游戏循环中地图的纵向象素差。
7.根据权利要求1所述的游戏中的地图绘制方法,其特征在于,所述步骤(3)进一步包括计算该地图在屏幕中的绘制点的世界坐标,并在屏幕中显示上下游戏循环地像数据相同的部分。
8.根据权利要求1所述的游戏中的地图绘制方法,其特征在于,所述步骤(4)包括(41)获取图像数据中未显示部分的地表图素块;(42)获取每个地表图素块的起始点坐标;(43)根据每个地表图素块对应的起始点坐标分别绘制游戏循环地图。
9.根据权利要求1所述的游戏中的地图绘制方法,其特征在于,所述步骤(4)进一步包括(41)删除缓冲区中保存的上一游戏循环中的地像数据;(42)将下一游戏循环中所显示的地像数据保存到内存中。
10.根据权利要求1所述的游戏中的地图绘制方法,其特征在于,对所述的游戏循环地图进行周期绘制。
全文摘要
本发明属于图像显示技术,提供了一种游戏中的地图绘制方法,该方法具体为判断当前游戏中的地图是否是第一次绘制,如果是,获取地表图素块,顺序绘制,否则,保存上一游戏循环的地像数据,在下一游戏循环时,计算下一游戏循环与上一游戏循环中地图的纵横向象素差,并将保存的上一游戏循环的地像数据取出,根据象素差进行绘制,然后以地表图素块为单位绘制所保存图像数据中未显示的部分。利用本发明,避免了重新以地表图素块为单位绘制上下游戏循环地图相同的部分,减少了绘制地图时的逻辑运算,节省了时间,缩短了绘制游戏地图的循环周期,实现在不牺牲画面质量的情况下,保证游戏的流畅性、美观性和可玩性。
文档编号G06F19/00GK1885296SQ200610089679
公开日2006年12月27日 申请日期2006年7月11日 优先权日2006年7月11日
发明者张宝晖 申请人:北京金山软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1