工程文件的加载方法及装置转让专利

申请号 : CN201610723357.1

文献号 : CN106334319B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 翟昊钟宏建

申请人 : 网易(杭州)网络有限公司

摘要 :

本发明公开了一种工程文件的加载方法及装置。其中,该方法包括:确定待加载的游戏环境;获取待加载的游戏环境所包含的游戏内容对应的待加载对象;加载与待加载对象关联的工程文件。本发明解决了相关技术中因FMOD引擎在同一时间内加载的Event总数超过上限时,易导致FMOD引擎崩溃的技术问题。

权利要求 :

1.一种工程文件的加载方法,其特征在于,包括:确定待加载的游戏环境;

获取所述待加载的游戏环境所包含的游戏内容对应的待加载对象;

加载与所述待加载对象关联的工程文件;

其中,加载与所述待加载对象关联的工程文件包括:根据所述待加载对象确定待选用的调用参数;依次判断所述工程文件所包含的一个或多个事件中每个事件是否包含与所述待选用的调用参数对应的样本;如果存在,则调用与所述待选用的调用参数对应的样本;如果不存在,则调用与默认参数对应的样本。

2.根据权利要求1所述的方法,其特征在于,获取所述待加载的游戏环境所包含的游戏内容对应的待加载对象包括:检测为所述游戏环境所包含的游戏内容设置的标识信息,其中,所述标识信息用于区分不同游戏环境下分别包含的游戏内容;

根据所述标识信息获取所述待加载对象。

3.根据权利要求2所述的方法,其特征在于,在加载与所述待加载对象关联的工程文件之前,还包括:根据所述待加载对象确定所述工程文件所包含的一个或多个事件以及所述一个或多个事件中每个事件所包含的一个或多个样本;

为所述一个或多个样本中的每个样本配置对应的调用参数,并在为所述一个或多个样本配置的调用参数中设置所述默认参数。

4.根据权利要求1至3中任一项所述的方法,其特征在于,在加载与所述待加载对象关联的工程文件之后,还包括:确定待切换的游戏环境;

对所述工程文件进行清除,并准备加载所述待切换的游戏环境下的工程文件。

5.一种工程文件的加载装置,其特征在于,包括:第一确定模块,用于确定待加载的游戏环境;

获取模块,用于获取所述待加载的游戏环境所包含的游戏内容对应的待加载对象;

加载模块,用于加载与所述待加载对象关联的工程文件;

其中,所述加载模块包括:确定单元,用于根据所述待加载对象确定待选用的调用参数;判断子单元,用于依次判断所述工程文件所包含的一个或多个事件中每个事件是否包含与所述待选用的调用参数对应的样本;第一调用子单元,用于在所述判断子单元输出为是时,调用与所述待选用的调用参数对应的样本;第二调用子单元,用于在所述判断子单元输出为否时,调用与默认参数对应的样本。

6.根据权利要求5所述的装置,其特征在于,所述获取模块包括:检测单元,用于检测为所述游戏环境所包含的游戏内容设置的标识信息,其中,所述标识信息用于区分不同游戏环境下分别包含的游戏内容;

获取单元,用于根据所述标识信息获取所述待加载对象。

7.根据权利要求6所述的装置,其特征在于,所述装置还包括:第二确定模块,用于根据所述待加载对象确定所述工程文件所包含的一个或多个事件以及所述一个或多个事件中每个事件所包含的一个或多个样本;

配置模块,用于为所述一个或多个样本中的每个样本配置对应的调用参数,并在为所述一个或多个样本配置的调用参数中设置所述默认参数。

8.根据权利要求5至7中任一项所述的装置,其特征在于,所述装置还包括:第三确定模块,用于确定待切换的游戏环境;

处理模块,用于对所述工程文件进行清除,并准备加载所述待切换的游戏环境下的工程文件。

说明书 :

工程文件的加载方法及装置

技术领域

[0001] 本发明涉及计算机领域,具体而言,涉及一种工程文件的加载方法及装置。

背景技术

[0002] 在游戏行业飞速快速发展的当今时代,着力提升游戏品质逐步成为游戏业内相互竞争的重要环节。多年间,游戏产品中的游戏玩法、角色模型、场景环境、游戏特效、社交方式等,都处在一条快速发展的通道上。配合着硬件和软件系统性能的不断提升,游戏产品为游戏玩家带来了一波又一波的惊喜,让玩家们享受到了更多前所未有的神奇体验。在这一过程中,游戏音频内容不论从内容设计还是从音响效果的进步,同样是有目共睹。
[0003] 当今时代,随着玩家们体验过的优秀游戏越来越多,玩家们对游戏体验的需求也变得越来越苛刻,普通的内容设计和产品体验已经无法满足玩家对游戏提出的高要求。因此,不断挖掘游戏产品的潜能,不断提升游戏产品的细节体验,已经成为游戏行业研发人员努力的方向。
[0004] 随着单纯的视觉刺激带给玩家的惊喜程度不断趋同,玩家们更多地开始寻找游戏内能够带给他们享受的其他体验,例如:专属成长体验、深度社交体验、虚拟现实技术体验等。丰富的音像内容和出众的音响效果体验同样是多数玩家偏好的方向。在部分新近推出的游戏中,已经出现根据播放环境或者玩家状态来替换音频内容,或是在游戏运营一段时间后提供全新的语音内容供玩家使用等玩法或运营方案。
[0005] 目前,在使用FMOD作为游戏音频引擎的游戏中,游戏的全部音频资源会被整合进同一个Workspace,其下又被划分成一个或者多个工程文件,每个工程文件负责存储一个特定类别的Event,这里的特定类别是指音乐、语音。音效等。通常而言,资源量较大的游戏都会将不同类别的资源按照类别归属到不同的工程中,这样比较方便FMOD引擎对资源进行管理和调用。
[0006] 在游戏开始后,相关技术中所提供的实施方案是加载FMOD中Workspace内的所有工程文件,然后根据游戏进程来调用特定的Event。如果被调用的Event内的样本有多个Sound,则会根据设定的概率在多个Sound中随机选择其中之一进行播放。
[0007] 然而,上述技术方案存在如下缺陷:
[0008] 1)FMOD引擎存在一个先天缺陷,即,在同一时间内,FMOD引擎允许加载的Event总数不能超过8196条。一旦FMOD引擎同时加载的Event数量超过该上限,便必然会出现FMOD引擎崩溃的严重问题,从而导致整个游戏无法正常运行。因此,该先天缺陷严重影响游戏品质和玩家的游戏体验。
[0009] 2)在游戏中播放音频资源时只能指定特定Event,如果该Event的样本中包含多个Sound,则只能实现在多个Sound之间的随机播放(其随机概率可以预先设置),而无法指定特定Sound进行播放,这一缺陷易导致一个工程下所需的Event数量大幅增加。
[0010] 针对上述的问题,目前尚未提出有效的解决方案。

发明内容

[0011] 本发明实施例提供了一种工程文件的加载方法及装置,以至少解决相关技术中因FMOD引擎在同一时间内加载的Event总数超过上限时,易导致FMOD引擎崩溃的技术问题。
[0012] 根据本发明实施例的一个方面,提供了一种工程文件的加载方法,包括:确定待加载的游戏环境;获取待加载的游戏环境所包含的游戏内容对应的待加载对象;加载与待加载对象关联的工程文件。
[0013] 可选地,获取待加载的游戏环境所包含的游戏内容对应的待加载对象包括:检测为游戏环境所包含的游戏内容设置的标识信息,其中,标识信息用于区分不同游戏环境下分别包含的游戏内容;根据标识信息获取待加载对象。
[0014] 可选地,在加载与待加载对象关联的工程文件之前,还包括:根据待加载对象确定工程文件所包含的一个或多个事件以及一个或多个事件中每个事件所包含的一个或多个样本;为一个或多个样本中的每个样本配置对应的调用参数,并在为一个或多个样本配置的调用参数中设置默认参数。
[0015] 可选地,加载与待加载对象关联的工程文件包括:根据待加载对象确定待选用的调用参数;采用待选用的调用参数对一个或多个事件进行批量调用。
[0016] 可选地,采用待选用的调用参数对一个或多个事件进行批量调用包括:依次判断一个或多个事件中每个事件是否包含与待选用的调用参数对应的样本;如果存在,则调用与待选用的调用参数对应的样本;如果不存在,则调用与默认参数对应的样本。
[0017] 可选地,在加载与待加载对象关联的工程文件之后,还包括:确定待切换的游戏环境;对工程文件进行清除,并准备加载待切换的游戏环境下的工程文件。
[0018] 根据本发明实施例的另一方面,还提供了一种工程文件的加载装置,包括:第一确定模块,用于确定待加载的游戏环境;获取模块,用于获取待加载的游戏环境所包含的游戏内容对应的待加载对象;加载模块,用于加载与待加载对象关联的工程文件。
[0019] 可选地,获取模块包括:检测单元,用于检测为游戏环境所包含的游戏内容设置的标识信息,其中,标识信息用于区分不同游戏环境下分别包含的游戏内容;获取单元,用于根据标识信息获取待加载对象。
[0020] 可选地,装置还包括:第二确定模块,用于根据待加载对象确定工程文件所包含的一个或多个事件以及一个或多个事件中每个事件所包含的一个或多个样本;配置模块,用于为一个或多个样本中的每个样本配置对应的调用参数,并在为一个或多个样本配置的调用参数中设置默认参数。
[0021] 可选地,加载模块包括:确定单元,用于根据待加载对象确定待选用的调用参数;调用单元,用于采用待选用的调用参数对一个或多个事件进行批量调用。
[0022] 可选地,调用单元包括:判断子单元,用于依次判断一个或多个事件中每个事件是否包含与待选用的调用参数对应的样本;第一调用子单元,用于在判断子单元输出为是时,调用与待选用的调用参数对应的样本;第二调用子单元,用于在判断子单元输出为否时,调用与默认参数对应的样本。
[0023] 可选地,装置还包括:第三确定模块,用于确定待切换的游戏环境;处理模块,用于对工程文件进行清除,并准备加载待切换的游戏环境下的工程文件。
[0024] 在本发明实施例中,采用获取待加载的游戏环境所包含的游戏内容对应的待加载对象并加载与待加载对象关联的工程文件的方式,通过对工程文件的动态加载过程,达到了摆脱游戏音频内容设计受到游戏引擎性能限制的目的,从而实现了在游戏过程中为游戏玩家提供更加丰富的音频内容体验的技术效果,进而解决了相关技术中因FMOD引擎在同一时间内加载的Event总数超过上限时,易导致FMOD引擎崩溃的技术问题。

附图说明

[0025] 此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0026] 图1是根据本发明实施例的工程文件的加载方法的流程图;
[0027] 图2是根据本发明优选实施例的样本调用过程的流程图;
[0028] 图3是根据本发明优选实施例的实现动态加载过程的流程图;
[0029] 图4是根据本发明实施例的工程文件的加载装置的结构框图;
[0030] 图5是根据本发明优选实施例的工程文件的加载装置的结构框图。

具体实施方式

[0031] 为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
[0032] 需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0033] 本发明所涉及到的名词解释如下:
[0034] (1)FMOD,又称FMOD Designer,由Firelight Techenologies公司开发,是一种适用于多个平台(例如:Windows、Linux、WinCE、Macintosh)的音频引擎,尤其适用在游戏中作为音频引擎来使用。作为一种底层引擎,FMOD为游戏提供最基础的音频功能支持,例如:资源管理、资源调用、3D音频效果支持、资源压缩等。
[0035] 在本发明中,主要涉及FMOD引擎以及FMOD工程,该FMOD工程即为可以被FMOD引擎执行的一组文件。
[0036] (2)工程(Project),一个工程内通常包含大量的音频资源内容,工程内部通过目录管理的方式对资源进行分类管理以便于引擎调用。根据资源量级和资源调用方式的不同,部分游戏可能仅需要一个FMOD工程,而另外一部分游戏则需要多个FMOD工程。同一个游戏的所有FMOD工程被统称为一个Workspace。例如:h004.fdp和h004.fev这两个文件便可以作为FMOD的一个工程文件。
[0037] (3)事件(Event),是一个或多个样本的集合。Event是FMOD工程中最基础的管理对象,工程可以直接管理多条Event,也可以通过目录的方式对Event进行多层管理。游戏引擎需要播放音频内容时,其调用的基本对象就是Event。
[0038] (4)样本是指Event中管理的可播放的音频文件组合(音频文件称为Sound,根据实际需求音频文件会被处理为wav格式或其他可用的音频格式)。一个Event中可以管理一条或者多条样本,游戏引擎在调用Event播放音频内容时,Event会根据预设的配置信息来选择播放其中的特定样本。
[0039] (5)Sound亦被称为音频文件,是真正可以被播放的音频资源文件。Sound可以是wav、mp2等各种音频文件格式。一个样本内可以包含一条或多条Sound,同一个样本中的多条Sound之间属于平行关系,换言之,这些样本的播放位置相同的。例如:在FMOD引擎调用特定Event之后,Event可以选择自身内部的任一样本进行播放。此时,样本中的所有Sound都有可能被播放(每次只能播放一个Sound)。样本的制作者可以通过控制Sound在样本中被调用的概率来调节多个Sound被播放的基本频率。
[0040] 例如:在一个拥有如下两条Sound的样本的内部结构中:
[0041] 1)sample\voice\h004\H004_born_01.wav 50.00%;
[0042] 2)sample\voice\h004\H004_born_02.wav 50.00%;
[0043] 这两条Sound都是wav格式的音频文件,且这两条Sound在样本内的播放概率均为50.00%,即二者被播放的概率是相同的。
[0044] (6)游戏音频是指在游戏过程中播放的声音内容。从功能上划分,游戏音频通常可以包括但不限于:游戏角色相关的角色音频,场景和环境相关的场景音频,用户界面(UI)控件相关的操作和提示音频。从内容上来划分,游戏音频通常可以包括:游戏音乐,游戏音效和游戏语音。游戏音频通常可以通过前期的音频资源制作和合成来实现。游戏玩家在游戏中相互沟通时发送的语音等声音信息不属于本发明实施例所提及的游戏音频内容。
[0045] (7)游戏引擎是指已经编写完毕的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于:使得游戏设计者能够轻易和快速地制作出游戏程式而无需从零基础开始制作。大部分游戏引擎都支持多种操作平台,例如:Linux、Mac OS X、微软Windows。游戏引擎可以包含以下系统:渲染引擎(即“渲染器”,其包含二维图像引擎和三维图像引擎)、物理引擎、碰撞检测系统引擎、音频引擎、脚本引擎、电脑动画、人工智能、网络引擎以及场景管理。上述FMOD即为游戏引擎中专门负责处理音频内容的音频引擎。
[0046] (8)音频资源调用是指游戏在运行过程中对音频资源的管理、读取和播放。在游戏运行时,游戏引擎需要按照预先约定的规则将当前和后续一段时间内需要使用到的音频资源加载到内存中,随后根据游戏内容的变化从已经加载完成的资源中寻找合适的Event并进行播放。如果资源的预先加载、资源选取或资源播放的某个环节上发生异常,则游戏的整体声音效果便会受到影响。
[0047] (9)游戏环境是指游戏在一段时间内提供的全部内容,例如:场景、角色、玩法、UI等。游戏内容的整体切换,例如:场景切换、进入/退出副本或房间、关卡切换等,都可以被视作游戏环境切换。
[0048] 根据本发明实施例,提供了一种工程文件的加载方法的实施例,该方法可以应用于游戏音效和其他使用FMOD引擎进行管理的游戏音频资源上。需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0049] 图1是根据本发明实施例的工程文件的加载方法的流程图,如图1所示,该方法包括如下步骤:
[0050] 步骤S10,确定待加载的游戏环境;
[0051] 步骤S12,获取待加载的游戏环境所包含的游戏内容对应的待加载对象;
[0052] 步骤S14,加载与待加载对象关联的工程文件。
[0053] 通过上述步骤,可以采用获取待加载的游戏环境所包含的游戏内容对应的待加载对象并加载与待加载对象关联的工程文件的方式,通过对工程文件的动态加载过程,达到了摆脱游戏音频内容设计受到游戏引擎性能限制的目的,从而实现了在游戏过程中为游戏玩家提供更加丰富的音频内容体验的技术效果,进而解决了相关技术中因FMOD引擎在同一时间内加载的Event总数超过上限时,易导致FMOD引擎崩溃的技术问题。
[0054] 上述对工程文件进行动态加载是指在生成音频播放环境时,通过检测与音频资源相关的其他预加载内容(例如:音频资源挂接的动作、需要播放音频资源的场景和UI控件等),确定在下一阶段的游戏环境内所需的FMOD工程对象(即待加载对象),随后仅加载这些被指定对象关联的工程文件。当游戏环境发生变化时,再次检测切换后的游戏环境所需的FMOD工程对象,然后重新加载下一阶段所需的FMOD工程文件。通过动态加载,可以避免一次性加载全部工程所带来的Event数量超标问题。由此可以确保在每一个游戏环境内需要播放的Event数量均不超过8196,那么,无论Workspace内所有工程中包含的Event总数是多少,都不会带来难以预测的引擎错误。
[0055] 可选地,在步骤S12中,获取待加载的游戏环境所包含的游戏内容对应的待加载对象可以包括以下执行步骤:
[0056] 步骤S121,检测为游戏环境所包含的游戏内容设置的标识信息,其中,标识信息用于区分不同游戏环境下分别包含的游戏内容;
[0057] 步骤S122,根据标识信息获取待加载对象。
[0058] 若想实现动态加载,就需要将游戏的不同播放环境进行区分,对每个环境内与音频资源有关的游戏内容进行标记,这样才能够确保在加载过程中准确地选取所需的工程文件。在加载过程中,客户端只需要检测约定的标记,随后调用按照约定命名规则命名的工程。因此,前期的对象标记和工程拆分命名是动态加载能够顺利实现的基础。
[0059] 下面将通过以下示例对上述“在加载过程中,客户端只需要检测约定的标记,随后调用按照约定命名规则命名的工程”的具体操作方式加以解释说明:
[0060] 假设一款游戏中存在二十个角色,其分别命名为角色001、角色002、角色003、…直至角色0020,每个角色都需要一整套音频资源。同时,在该游戏的每一个阶段内,同时出现的角色数量不会超过六个。这样,便可以有条件地使用动态加载技术来管理音频资源。为此,可以预先与游戏客户端进行约定,将原本管理二十个角色的FMOD工程文件拆分成二十个工程文件,每个工程文件中包含一个角色所需的全部Event,并以角色名称进行命名。例如:工程001中包含角色001所需的全部音频资源,工程002中包含角色002所需的全部音频资源,以此类推。随后,通过对游戏客户端代码进行编辑,并进一步约定:如果在加载游戏内容过程中加载到角色001,则游戏客户端需要通过FMOD引擎调用子工程文件001,如果在加载游戏内容过程中加载到角色002,则游戏客户端需要通过FMOD引擎调用子工程文件002,…以此类推。
[0061] 可选地,在步骤S14,加载与待加载对象关联的工程文件之前,还可以包括以下执行步骤:
[0062] 步骤S15,根据待加载对象确定工程文件所包含的一个或多个事件以及一个或多个事件中每个事件所包含的一个或多个样本;
[0063] 步骤S16,为一个或多个样本中的每个样本配置对应的调用参数,并在为一个或多个样本配置的调用参数中设置默认参数。
[0064] 通过设置和调用Event内的参数功能,为同一个工程文件内多套音频资源的资源管理,多套音频资源的准确播放等提供了解决方案。
[0065] 参数是FMOD引擎为样本提供的一种属性。一个Event内的每个样本可以被设置一个参数。同时,在客户端内可以约定不同参数各自对应的播放环境。在加载工程时,可以同时判断是否需要调用与工程相关的特殊参数。如果需要,则参数被激活,在播放该工程内的Event时,只会播放带有相应参数的样本。游戏环境是否需要调用特殊参数,需要调用哪个特殊参数,都是在游戏制作中通过客户端代码和内容编写来完成的。
[0066] 在通常情况下,每个Event内至少应当包含一个被设置为默认参数的样本。该默认参数的作用在于:当工程文件调用特定参数而Event内缺少对应的设置为该特定参数的样本时,Event会选择播放设置为默认参数的样本。由此便不会出现缺少待播放的音频资源的问题。
[0067] 当多套Sound的播放环境相同,换言之,当这些Sound在游戏内的播放位置完全相同,只是播放条件不同时(例如:同一个动作上挂接的技能音效有多套Sound,每套Sound对应角色的一种武器),可以将这些Sound合并到一个工程文件中,并将同一个播放时间点的Sound以样本的形式合并至同一个Event内,然后在每一个Event内采用同样的参数来管理播放条件相同的样本。由此便可以实现多套Sound之间的可控相互替换,同时还不会增加Event的数量。
[0068] 假设角色A拥有动作a和动作b,动作a和动作b中均可以分别使用武器刀、剑和枪,每当使用不同类型的武器时,动作a和动作b均需要播放不同的技能音效。而在使用同一件武器时,动作a和动作b会分别在两个技能音效(例如:Sound刀01和Sound刀02)中选择一个进行播放。
[0069] 在相关技术所提供的制作流程中,不同武器类型的刀、剑和枪各自对应的两个技能音效会被分别封装成一个样本(例如:Sound刀01和Sound刀02被封装成样本刀,Sound剑01和Sound剑02被封装成样本剑,Sound枪01和Sound枪02被封装成样本枪),然后每个样本会被封装进一个Event。当玩家切换武器时,FMOD需要调用不同的Event。此处,需要创建6个Event,即Event_a刀,Event_a剑,Event_a枪,Event_b刀,Event_b剑,Event_b枪。
[0070] 与上述现有方案不同,本发明优选实施例所提供的技术方案在使用样本参数的过程中,可以将样本刀的参数设置为0,样本剑的参数设置为1,样本枪的参数设置为2,每个样本下仍然管理各自的两条Sound(例如:Sound刀01和Sound刀02)。然后,再将这三个样本合并到一个Event中,从而使得该Event直接对应动作。此时,只需要两个以动作命名的Event,也就是Event_a和Event_b。
[0071] 当角色A装备刀时,FMOD引擎会接收到参数0,无论角色A使用的是动作a还是动作b,FMOD都会通知动作对应的Event播放设置为参数0的样本。由此便可以实现批量样本的参数管理和调用。
[0072] 需要说明的是,在同一个游戏环境内,一个工程文件内只能调用一个参数,换言之,无法实现同一个工程文件内的Event调用不同参数的需求(默认参数例外)。因此,在设置样本参数时,除非有多套需要使用参数管理的音频资源,否则没有必要在同一个Event内设置过多的参数。
[0073] 可选地,在步骤S14中,加载与待加载对象关联的工程文件可以包括以下执行步骤:
[0074] 步骤S141,根据待加载对象确定待选用的调用参数;
[0075] 步骤S142,采用待选用的调用参数对一个或多个事件进行批量调用。
[0076] 通过样本参数的设置和调用可以实现每个参数管理一个样本,如果未使用样本参数,那么这两个样本便需要被制作成不同的Event,而且这两条不同的Event可能需要被安排在不同的目录或者工程文件内,才能够实现更加复杂的相互替换,由此既容易浪费客户端计算量,又无法保证资源替换的顺畅和扩展性。
[0077] 样本参数的设置方式有助于减少Event总体数量,为音频制作释放空间。批量的样本参数设置可以使得游戏制作者为同一个游戏内容提供多套成套的音频内容,并实现这些内容的可控替换。这既可以增加游戏的品质感,又可以为玩家带去更加丰富的游戏享受。
[0078] 可选地,在步骤S142中,采用待选用的调用参数对一个或多个事件进行批量调用可以包括以下执行步骤:
[0079] 步骤S1421,依次判断一个或多个事件中每个事件是否包含与待选用的调用参数对应的样本;
[0080] 步骤S1422,如果存在,则调用与待选用的调用参数对应的样本;
[0081] 步骤S1423,如果不存在,则调用与默认参数对应的样本。
[0082] 在优选实施例中,图2是根据本发明优选实施例的样本调用过程的流程图。如图2所示,该流程可以包括以下处理步骤:
[0083] 步骤S202:终端侧在加载工程文件时,确定需要调用特殊参数;
[0084] 步骤S204:终端侧判断该工程文件的每个事件下是否存在以该特殊参数管理的样本;如果存在,则继续执行步骤S206;否则,转到步骤S208;
[0085] 步骤S206:终端侧确定Event中存在以该特殊参数管理的样本,则播放该样本;
[0086] 步骤S208:终端侧确定Event中不存在以该特殊参数管理的样本,则播放默认参数管理的样本。
[0087] 例如:在Event1中存在由参数0管理的样本“/H004_1_destroy”,在Event2中存在由参数0管理的样本“/H004/H004_born”以及由参数1管理的样本“/H004/H004_1_born”,其中,参数0被预先设置为默认参数,如果终端侧调用参数1,则Event2会顺利播放参数1管理的样本,而Event1仅会播放默认参数0管理的样本,由此确保了游戏音频播放的完整性。
[0088] 可选地,在步骤S14,加载与待加载对象关联的工程文件之后,还可以包括以下执行步骤:
[0089] 步骤S17,确定待切换的游戏环境;
[0090] 步骤S18,对工程文件进行清除,并准备加载待切换的游戏环境下的工程文件。
[0091] 在加载下一阶段游戏环境所需的工程时,引擎还需要清空上一阶段调用的FMOD工程,否则,同一时间调用的Event数量仍然有可能超过8196。在加载新的工程文件的同时清理过期工程是动态加载能够发挥作用的保障。
[0092] 下面将结合图3所示的优选实施方式对上述优选实施过程做进一步地描述。
[0093] 图3是根据本发明优选实施例的实现动态加载过程的流程图。如图3所示,该方法可以包括以下处理步骤:
[0094] 步骤S302:终端侧确定在下一阶段的游戏环境内可以作为动态加载对象的游戏内容;
[0095] 该游戏内容是在游戏制作过程中便需要完成的内容。在规划和制作游戏内容时,游戏的研发人员需要判定哪些游戏内容(包括:角色、场景以及其他内容)对应的音频资源可以被作为动态加载的对象资源。
[0096] 步骤S304:终端侧根据对象,拆分FMOD工程并按照约定命名;
[0097] 在游戏制作过程中,由于已经对与FMOD工程动态加载有关的游戏内容进行过标记。因此,当游戏客户端加载游戏环境时,便可以检测新的游戏环境中存在哪些游戏内容被特殊标记过。
[0098] 步骤S306:终端侧在加载游戏环境时,读取与动态加载相关对象对应的工程文件;
[0099] 步骤S308:终端侧根据需要播放相应工程内的Event;
[0100] 步骤S310:终端侧播放环境改变时,将新的动态加载需求通知给FMOD引擎;
[0101] 动态加载依赖于游戏环境切换过程中的预加载时间。在每次切换游戏环境时,游戏引擎都需要对下一阶段需要提供的游戏内容进行加载。这个加载过程(即游戏环境切换过程所需要消耗的时间)即为FMOD工程动态加载的时间窗口。
[0102] 步骤S312:终端侧清空当前动态加载时已经完成加载的工程文件;
[0103] 步骤S314:终端侧根据需要加载新的工程。
[0104] 例如:终端侧当前存在以下10个FMOD工程文件,且每个工程文件内包含的Event数量相同:
[0105] (1)h003.fdp,h003.fev;
[0106] (2)h004.fdp,h004.fev;
[0107] (3)h005.fdp,h005.fev;
[0108] (4)h006.fdp,h006.fev;
[0109] (5)h007.fdp,h007.fev;
[0110] (6)h008.fdp;,h008.fev;
[0111] (7)h009.fdp,h009.fev;
[0112] (8)h010.fdp,h010.fev;
[0113] (9)h011.fdp,h011.fev;
[0114] (10)h012.fdp,h012.fev;
[0115] 假设在第一个战场中出场的是角色001至角色006,那么,可以调用h003到h008这六个工程文件,而另外四个工程文件则不需要调用,这就使得引擎内的Event数量比不使用动态加载技术时降低了40%。
[0116] 而后在退出第一个战场时,清空已经加载的上述六个工程,同时加载第二个战场所需的003、007、009、010这四个工程文件。这样,便不会出现所有工程在反复调用的过程中同时被引擎加载的问题。
[0117] 通过该优选实施例,上述动态加载过程有助于将同一个游戏环境内加载的Event总数控制在8196以内,以防止Event数量过多引发的引擎异常问题。而且,上述动态加载过程能够使得音频制作摆脱了Event总体数量上限带来的束缚,音频制作人员可以根据游戏内容的需要而制作大量优秀的音频内容,这样有利于提升游戏的音频品质,使得玩家能够享受到更佳的游戏产品服务。另外,动态加载和样本参数设置均是对FMOD引擎的底层规则进行的开发应用。在此基础上,游戏研发人员可以设计和制作出更多的游戏音频规则和玩法,从而为游戏玩家提供更加丰富饱满的游戏内容。
[0118] 根据本发明实施例,提供了一种工程文件的加载装置的实施例,图4是根据本发明实施例的工程文件的加载装置的结构框图,如图4所示,该装置可以包括:第一确定模块10,用于确定待加载的游戏环境;获取模块20,用于获取待加载的游戏环境所包含的游戏内容对应的待加载对象;加载模块30,用于加载与待加载对象关联的工程文件。
[0119] 可选地,图5是根据本发明优选实施例的工程文件的加载装置的结构框图,如图5所示,获取模块20可以包括:检测单元200,用于检测为游戏环境所包含的游戏内容设置的标识信息,其中,标识信息用于区分不同游戏环境下分别包含的游戏内容;获取单元202,用于根据标识信息获取待加载对象。
[0120] 可选地,如图5所示,上述装置还包括:第二确定模块40,用于根据待加载对象确定工程文件所包含的一个或多个事件以及一个或多个事件中每个事件所包含的一个或多个样本;配置模块50,用于为一个或多个样本中的每个样本配置对应的调用参数,并在为一个或多个样本配置的调用参数中设置默认参数。
[0121] 可选地,如图5所示,加载模块30可以包括:确定单元300,用于根据待加载对象确定待选用的调用参数;调用单元302,用于采用待选用的调用参数对一个或多个事件进行批量调用。
[0122] 可选地,调用单元302可以包括:判断子单元(图中未示出),用于依次判断一个或多个事件中每个事件是否包含与待选用的调用参数对应的样本;第一调用子单元(图中未示出),用于在判断子单元输出为是时,调用与待选用的调用参数对应的样本;第二调用子单元(图中未示出),用于在判断子单元输出为否时,调用与默认参数对应的样本。
[0123] 可选地,如图5所示,上述装置还包括:第三确定模块60,用于确定待切换的游戏环境;处理模块70,用于对工程文件进行清除,并准备加载待切换的游戏环境下的工程文件。
[0124] 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0125] 在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
[0126] 在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
[0127] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0128] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0129] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0130] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。