一种电子游戏资源高效加载方法及系统
技术领域
本发明涉及计算机技术领域,尤其涉及一种电子游戏资源高效加载方法及系统。
背景技术
现在的各种电子游戏在运行过程中都需要加载各类游戏资源,同类游戏资源一般既有需要渲染线程同步加载的部分,也有可以通过加载线程进行异步加载的部分。但是现在大部分的技术方案中是在将整个加载功能中包含的各子功能作为一个整体,渲染线程和加载线程需要加载时都执行相同的流程,这样的话渲染线程和加载线程之间必然需要进行同步、互斥或加锁,因此这样比较容易导致加载线程会拖累渲染线程从而卡顿的现象。
发明内容
为了解决上述技术问题,本发明的目的是提供一种能有效减少卡顿现象,提升用户体验的一种电子游戏资源高效加载方法及系统。
本发明所采用的技术方案是:
一种电子游戏资源高效加载方法,包括以下步骤:
A、渲染线程接收加载资源请求,并查找资源管理器内是否已存在该资源,若是,则返回加载完成并结束;反之,则执行步骤B;
B、渲染线程创建存放该资源所需的内存;
C、根据加载资源请求的类型,读取对应的资源数据到内存中并返回加载状态。
作为所述的一种电子游戏资源高效加载方法的进一步改进,所述步骤C包括:
C1、判断加载资源请求是否是同步请求,若是,则渲染线程读取对应的资源数据到内存中,进而返回加载完成并结束;反之,则执行步骤C2;
C2、将加载资源请求添加至异步加载请求队列中,并返回等待加载状态;
C3、加载线程对异步加载请求队列中的加载资源请求进行处理,并返回加载状态。
作为所述的一种电子游戏资源高效加载方法的进一步改进,所述步骤C3包括:
C31、加载线程依次取出异步加载请求队列中的加载资源请求;
C32、根据取出的加载资源请求,加载线程读取对应的资源数据到内存中;
C33、返回加载完成并结束。
本发明所采用的另一技术方案是:
一种电子游戏资源高效加载系统,包括:
查找单元,用于渲染线程接收加载资源请求,并查找资源管理器内是否已存在该资源,若是,则返回加载完成并结束;反之,则执行创建单元;
创建单元,用于渲染线程创建存放该资源所需的内存;
加载单元,用于根据加载资源请求的类型,读取对应的资源数据到内存中并返回加载状态。
作为所述的一种电子游戏资源高效加载系统的进一步改进,所述加载单元包括:
判断单元,用于判断加载资源请求是否是同步请求,若是,则渲染线程读取对应的资源数据到内存中,进而返回加载完成并结束;反之,则执行异步队列添加单元;
异步队列添加单元,用于将加载资源请求添加至异步加载请求队列中,并返回等待加载状态;
加载线程处理单元,用于加载线程对异步加载请求队列中的加载资源请求进行处理,并返回加载状态。
作为所述的一种电子游戏资源高效加载系统的进一步改进,所述加载线程处理单元包括:
请求取出单元,用于加载线程依次取出异步加载请求队列中的加载资源请求;
数据读取单元,用于根据取出的加载资源请求,加载线程读取对应的资源数据到内存中;
状态返回单元,用于返回加载完成并结束。
本发明的有益效果是:
本发明一种电子游戏资源高效加载方法及系统通过将渲染线程和加载线程的功能进行分配,能最大程度消除渲染线程与加载线程之间的各种锁,并且能确保慢速的资源数据读取不会拖累到要求快速进行的渲染功能,从而能有效减少游戏体验过程中的卡顿现象,大大提升用户的游戏体验。
附图说明
下面结合附图对本发明的具体实施方式作进一步说明:
图1是本发明一种电子游戏资源高效加载方法的步骤流程图;
图2是本发明一种电子游戏资源高效加载方法步骤C的步骤流程图;
图3是本发明一种电子游戏资源高效加载方法步骤C3的步骤流程图;
图4是本发明一种电子游戏资源高效加载系统的模块方框图。
具体实施方式
参考图1,本发明一种电子游戏资源高效加载方法,包括以下步骤:
A、渲染线程接收加载资源请求,并查找资源管理器内是否已存在该资源,若是,则返回加载完成并结束;反之,则执行步骤B;
B、渲染线程创建存放该资源所需的内存;
C、根据加载资源请求的类型,读取对应的资源数据到内存中并返回加载状态。
参考图2,作为所述的一种电子游戏资源高效加载方法的进一步改进,所述步骤C包括:
C1、判断加载资源请求是否是同步请求,若是,则渲染线程读取对应的资源数据到内存中,进而返回加载完成并结束;反之,则执行步骤C2;
C2、将加载资源请求添加至异步加载请求队列中,并返回等待加载状态;
C3、加载线程对异步加载请求队列中的加载资源请求进行处理,并返回加载状态。
参考图3,作为所述的一种电子游戏资源高效加载方法的进一步改进,所述步骤C3包括:
C31、加载线程依次取出异步加载请求队列中的加载资源请求;
C32、根据取出的加载资源请求,加载线程读取对应的资源数据到内存中;
C33、返回加载完成并结束。
参考图4,本发明一种电子游戏资源高效加载系统,包括:
查找单元,用于渲染线程接收加载资源请求,并查找资源管理器内是否已存在该资源,若是,则返回加载完成并结束;反之,则执行创建单元;
创建单元,用于渲染线程创建存放该资源所需的内存;
加载单元,用于根据加载资源请求的类型,读取对应的资源数据到内存中并返回加载状态。
作为所述的一种电子游戏资源高效加载系统的进一步改进,所述加载单元包括:
判断单元,用于判断加载资源请求是否是同步请求,若是,则渲染线程读取对应的资源数据到内存中,进而返回加载完成并结束;反之,则执行异步队列添加单元;
异步队列添加单元,用于将加载资源请求添加至异步加载请求队列中,并返回等待加载状态;
加载线程处理单元,用于加载线程对异步加载请求队列中的加载资源请求进行处理,并返回加载状态。
作为所述的一种电子游戏资源高效加载系统的进一步改进,所述加载线程处理单元包括:
请求取出单元,用于加载线程依次取出异步加载请求队列中的加载资源请求;
数据读取单元,用于根据取出的加载资源请求,加载线程读取对应的资源数据到内存中;
状态返回单元,用于返回加载完成并结束。
本发明的具体实施例的流程为:
S1、渲染线程接收加载资源请求,并查找资源管理器内是否已存在该资源,若是,则返回加载完成并结束;反之,则执行步骤S2;
S2、渲染线程创建存放该资源所需的内存;
S3、判断加载资源请求是否是同步请求,若是,则渲染线程读取对应的资源数据到内存中,进而返回加载完成并结束;反之,则执行步骤S4;
S4、将加载资源请求添加至异步加载请求队列中,并返回等待加载状态;
S5、加载线程依次取出异步加载请求队列中的加载资源请求;
S6、根据取出的加载资源请求,加载线程读取对应的资源数据到内存中;
S7、返回加载完成并结束。
在《剑侠情缘网络版叁》游戏中,通过采用本发明,将渲染线程和加载线程专职化,分别进行查找、创建和加载的功能,仅通过异步加载请求队列进行通信,进行了快慢分离,使得卡顿现象大大减少,fps提升约10帧,性能提升接近30%。
在基于智能手机的手游中,采用本发明方案,在各种资源受限的情况下,通过渲染线程和加载线程各司其职并仅通过异步加载请求队列通信,能有效明显减少卡顿现象,提升了用户的游戏体验。
本发明一种电子游戏资源高效加载方法及系统通过将渲染线程和加载线程的功能进行分配,能最大程度消除渲染线程与加载线程之间的各种锁,并且能确保慢速的资源数据读取不会拖累到要求快速进行的渲染功能,从而能有效减少游戏体验过程中的卡顿现象,大大提升用户的游戏体验。
以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可做作出种种的等同变形或替换,这些等同的变形或替换均包含在本申请权利要求所限定的范围内。