一种游戏开发内存控制方法及系统的制作方法

文档序号:6629727阅读:297来源:国知局
一种游戏开发内存控制方法及系统的制作方法
【专利摘要】本发明公开了一种游戏开发内存控制方法,首先启动游戏进行初始化,预设游戏占用最大内存;然后获取需要加载的资源,判断资源中的游戏场景是否发生改变,以及判断游戏数据是否为静态数据,最后根据当前内存的大小并根据资源进行不同的置换换算,将当前未使用的资源的内存先行置换到外存,使得当前内存小于最大内存。本发明提供的游戏开发内存控制方法,对新游戏场景区分为静态数据和动态数据两类,再存入内存,避免内存过高;在加载数据之前,会判断当前内存占用量是否大于所约定的内存峰值,当前内存若超出,则会根据不同的资源使用不同的资源置换算法将其内存数据置换到外存,内存命中率高,能动态、灵活、高效的管理游戏内存。
【专利说明】一种游戏开发内存控制方法及系统

【技术领域】
[0001]本发明涉及游戏开发领域,特别涉及一种游戏开发的内存控制方法及系统。

【背景技术】
[0002]在游戏开发领域特别是大型游戏开发中,内存控制技术一直属于当中的难点,为此不同的游戏开发商有着不同的处理方法,而大多数游戏却是粗暴式的对内存不加以控制,导致一个游戏占用系统太多资源,因而给用户带来不好的体验。
[0003]因此需要一种动态、灵活、高效的管理游戏内存方法及系统。


【发明内容】

[0004]有鉴于此,本发明所要解决的技术问题是提供一种游戏开发内存控制方法及系统,该方法动态、灵活、高效的管理游戏内存。
[0005]本发明的目的之一是提出一种游戏开发内存控制方法;本发明的目的之二是提出一种游戏开发内存控制系统。
[0006]本发明的目的之一是通过以下技术方案来实现的:
[0007]本发明提供的一种游戏开发内存控制方法,包括以下步骤:
[0008]S1:启动游戏进行初始化,预设游戏占用最大内存;
[0009]S2:获取需要加载的资源,判断资源中的游戏场景是否发生改变,如果否,则不需要进行内存加载,结束算法;
[0010]S3:如果是,则判断游戏数据是否为静态数据,如果否,则不用立即进行加载,结束算法;
[0011]S4:如果是,判断当前内存是否超过最大内存,如果是,则根据资源进行不同的置换换算,将一部分当前未使用的资源的内存先行置换到外存,使得当前内存小于最大内存,进入步骤S5 ;如果否,则进入步骤S5 ;
[0012]S5:将资源加载进入内存。
[0013]进一步,所述置换换算采用采用FIFO置换算法。
[0014]进一步,所述置换换算采用采用LRU置换算法。
[0015]本发明的目的之二是通过以下技术方案来实现的:
[0016]本发明提供的一种游戏开发内存控制系统,包括初始化模块、游戏场景判断模块、游戏场景选择模块、内存判断模块、置换换算模块、加载模块;
[0017]所述初始化模块,用于启动游戏进行初始化,预设游戏占用最大内存;
[0018]所述游戏场景判断模块,用于获取需要加载的资源并判断资源中的游戏游戏场景是否发生改变;
[0019]所述游戏场景选择模块,用于加载静态数据;
[0020]所述内存判断模块,用于判断当前内存是否超过最大内存;
[0021]所述置换换算模块,用于根据资源进行不同的置换换算,将一部分当前未使用的资源的内存先行置换到外存或在当前内存小于最大内存时加载数据。
[0022]进一步,所述置换换算采用采用FIFO置换算法。
[0023]进一步,所述置换换算采用采用LRU置换算法。
[0024]本发明的有益效果在于:本发明提供的游戏开发内存控制方法,控制在一个可控的范围内。当每次进入一个新的游戏场景,首先把游戏所需分为静态数据和动态数据两类,这样可以将不会马上使用的数据存入内存,避免内存过高;每次在加载数据之前,会判断当前内存占用量是否大于所约定的内存峰值,当前内存若超出,则会根据不同的资源使用不同的资源置换算法将其内存数据置换到外存,针对不同的资源类型,有的会采用FIFO(先进先出)置换算法,有的会采用LRU(最久未使用)置换算法,这样达到内存较高的命中率,能动态、灵活、高效的管理游戏内存,给游戏玩家提供良好的用户体验。

【专利附图】

【附图说明】
[0025]为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步的详细描述,其中:
[0026]图1为本发明实施例提供的游戏开发内存控制方法流程图;
[0027]图2为本发明实施例提供的游戏开发内存控制系统示意图。

【具体实施方式】
[0028]以下将参照附图,对本发明的优选实施例进行详细的描述。应当理解,优选实施例仅为了说明本发明,而不是为了限制本发明的保护范围。
[0029]图1为本发明实施例提供的游戏开发内存控制方法流程图,如图所示:本发明提供的一种游戏开发内存控制方法,包括以下步骤:
[0030]S1:启动游戏进行初始化,预设游戏占用最大内存;
[0031]S2:获取需要加载的资源,判断资源中的游戏场景是否发生改变,如果否,则不需要进行内存加载,结束算法;场景发生了变化才会有继续加载资源的请求,而且每次加载必须按照判断静态数据,判断超出内存这种步骤进行,这样才能确保内存始终维持在一个可控范围;
[0032]S3:如果是,则判断游戏数据是否为静态数据,如果否,则不用立即进行加载,结束算法;静态数据表示此游戏场景必须的数据,而动态数据则不是一定需要的数据,可能是下一个场景需要,所以动态数据可以后面根据需要加载,但是静态数据必须加载;
[0033]S4:如果是,判断当前内存是否超过最大内存,如果是,则根据资源进行不同的置换换算,将一部分当前未使用的资源的内存先行置换到外存,使得当前内存小于最大内存,进入步骤S5 ;如果否,则进入步骤S5 ;
[0034]S5:将资源加载进入内存。
[0035]所述置换换算采用采用FIFO置换算法。
[0036]FlFO(FirstInFirstOut)算法即先进先出算法,该算法是淘汰最先进入内存的资源,即选择在内存中驻留时间最久的资源予以淘汰,直到内存大小满足条件。该算法实现简单
[0037]所述置换换算采用采用LRU置换算法。
[0038]LRU(LeastRecentlyUsed)算法即最久未使用置换算法,是根据资源调入内存后的使用情况来决策的。由于无法预测各资源将来的使用情况,只能利用“最近的过去”作为“最近的将来”的近似。该算法赋予每个资源一个访问字段,用来记录一个资源自上次使用以来经历的时间t,当须淘汰一个资源时,选择资源中t值最大的,即最近最久未使用的资源进行淘汰。
[0039]所述最大内存要根据不同硬件情况进行预设。
[0040]图2为本发明实施例提供的游戏开发内存控制系统示意图,如图所示,本发明提供的一种游戏开发内存控制系统,包括初始化模块、游戏场景判断模块、游戏场景选择模块、内存判断模块、置换换算模块、加载模块;
[0041]所述初始化模块,用于启动游戏进行初始化,预设游戏占用最大内存;
[0042]所述游戏场景判断模块,用于获取需要加载的资源并判断资源中的游戏游戏场景是否发生改变;
[0043]所述游戏场景选择模块,用于加载静态数据;
[0044]所述内存判断模块,用于判断当前内存是否超过最大内存;
[0045]所述置换换算模块,用于根据资源进行不同的置换换算,将一部分当前未使用的资源的内存先行置换到外存或在当前内存小于最大内存时加载数据。
[0046]所述置换换算采用采用FIFO置换算法。
[0047]所述置换换算采用采用LRU置换算法。
[0048]本实施例中的预设内存占用最大峰值为500M。现举例具体说明如下:
[0049]在进入一个新场景时,根据需求,判断得到三个静态数据,分别为10M,300M,100M ;动态数据三个分别为100M,200M,30M ;
[0050]先行加载第一个静态数据10M,10M<500M,所以直接加载;
[0051]加载第二的静态数据300M,300M+10M〈500M,所以直接加载;
[0052]加载第三个静态数据100M,10M+300M+100M〈500M,所以直接加载。
[0053]当进入另一个新的游戏场景,重新判断静态和动态数据,上步动态数据三个动态数据其中有两个转换为静态数据,其中分别为30,200M。
[0054]先行加载第一个静态数据10M+300M+100M+30M〈500M,所以直接加载;
[0055]加载第二个静态数据10M+300M+100M+30M+200M>500M,超出内存设定峰值,为此采用内存置换算法;
[0056]资源属于普通资源,采取FIFO先进先出置换算法,当置换出钱两个资源时,100M+30M+200M〈500M满足条件,所以将前面两个10M,300M置换出;
[0057]若再次进入新的场景或者需要新的内存请求,重复之前的步骤。
[0058]最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管通过参照本发明的优选实施例已经对本发明进行了描述,但本领域的普通技术人员应当理解,可以在形式上和细节上对其作出各种各样的改变,而不偏离所附权利要求书所限定的本发明的精神和范围。
【权利要求】
1.一种游戏开发内存控制方法,其特征在于:包括以下步骤: S1:启动游戏进行初始化,预设游戏占用最大内存; 52:获取需要加载的资源,判断资源中的游戏场景是否发生改变,如果否,则不需要进行内存加载,结束算法; 53:如果是,则判断游戏数据是否为静态数据,如果否,则不用立即进行加载,结束算法; S4:如果是,判断当前内存是否超过最大内存,如果是,则根据资源进行不同的置换换算,将一部分当前未使用的资源的内存先行置换到外存,使得当前内存小于最大内存,进入步骤S5 ;如果否,则进入步骤S5 ; S5:将资源加载进入内存。
2.根据权利要求1所述的游戏开发内存控制方法,其特征在于:所述置换换算采用采用FIFO置换算法。
3.根据权利要求1所述的游戏开发内存控制方法,其特征在于:所述置换换算采用采用LRU置换算法。
4.一种游戏开发内存控制系统,其特征在于:包括初始化模块、游戏场景判断模块、游戏场景选择模块、内存判断模块、置换换算模块和加载模块; 所述初始化模块,用于启动游戏进行初始化,预设游戏占用最大内存; 所述游戏场景判断模块,用于获取需要加载的资源并判断资源中的游戏场景是否发生改变; 所述游戏场景选择模块,用于加载静态数据; 所述内存判断模块,用于判断当前内存是否超过最大内存; 所述置换换算模块,用于根据资源进行不同的置换换算,将一部分当前未使用的资源的内存先行置换到外存或在当前内存小于最大内存时加载数据。
5.根据权利要求4所述的游戏开发内存控制系统,其特征在于:所述置换换算采用采用FIFO置换算法。
6.根据权利要求4所述的游戏开发内存控制系统,其特征在于:所述置换换算采用采用LRU置换算法。
【文档编号】G06F12/06GK104268104SQ201410531033
【公开日】2015年1月7日 申请日期:2014年10月10日 优先权日:2014年10月10日
【发明者】熊仕勇, 潘豪, 林金朝, 周敏, 田航, 杜伟奇, 王江涛, 聂婧, 李沁翰, 唐浩, 谭世雨, 刘秋恋 申请人:重庆邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1