一种高效调试游戏音乐音效的方法和装置
技术领域
本发明涉及一种游戏音效管理方法,尤其涉及一种高效调试游戏音乐音效的方法和装置,属于游戏开发领域。
背景技术
音乐音效在游戏中,有着举足轻重的作用,在游戏里中可以增强场景的真实感、盈造气氛等。在游戏开发中通常采用Fmod音频引擎进行音频文件处理和音效操作,以实现各种各样的游戏音效的变化和效果。例如,Fmod引擎可以对原音频进行压缩和打包,还可以将待播放声音转换成Sample(样本),该样本将在播放前先解压到内存,然后再进行多次播放。Fmod音频引擎,使得音效设计师和程序员之间沟通更加方便。音效设计好音效事件,程序员将在游戏中播出来,大大减少了音效师和程序员的工作之间的耦合。
然而,尽量如此,有部分的音乐音效效果,仅仅使用Fmod也是做不好的。游戏不同于电影或动画片,电影或动画片音效音乐是固定的,设计结果就是播放结果。游戏里触发的音乐音效是音效师无法提前全部做好的,受玩家操作、故事的逻辑影响,其音效的播放结果也不同,要做好这种效果还需要音效师针对游戏的设备(终端)、游戏的情况,进行调试。传统的调试方法是音效师和程序师一起,如调一个效果,程序写好功能后,和音效师一起调参数。需要2个人针对游戏音乐音效效果,进行深度配合和调试,其主要问题是沟通成本高,同时,需要2个人一起协作。或者程序提前设计好配置表,在表里提供的参数,这样音效师又需要每改一次配置表,需要导表、重启游戏等,流程比较烦琐,影响开发的效率。
因此,需要一套装置,作为程序员与音效师之间的中间件,以方便音效师更高效地方便调试游戏的音频效果,最终提高游戏体验时音频的品质。
发明内容
本发明的目的是解决现有技术的不足,提供一种高效调试游戏音乐音效的方法和装置,通过输入命令或者可视化操作,达到远程调整游戏音乐音效的效果。
为了实现上述目的,本发明采用以下的技术方案:
首先,在本发明的一个方法实施例中,提出一种高效调试游戏音乐音效的方法,包括以下步骤:
S100,在游戏系统中加载Fmod音频引擎,并且向Lua脚本提供Fmod音频引擎的部分程序接口,使Lua脚本调用Fmod音频引擎的部分功能;
S200,在Lua脚本创建远程控制接口,以进行远程调试;
S300,获取游戏所需的音效数据和路径,生成预设的分布式存储格式的音效路径数据表,以供Lua脚本读取;
S400,在Lua脚本上创建音效的动作指令,并将指令进行封装;
S500,调试器利用ldebug.start监听一个调试端口,并使用nc或telnet进行连接调试,获取音效资源和调用音效的动作指令,对音效资源进行音效编辑。
在本发明的一个方法实施例中,步骤S200还包括在游戏端使用lua开启端口监听远程发来的数据,对发来的数据进行解释执行。
在本发明的一个方法实施例中,步骤S300还包括将音效名称信息储存为音效路径数据表的主键,音效路径信息储存为主键的对应值。
在本发明的一个方法实施例中,步骤S500还包括以下子步骤:
S510,更新已修改的音效路径数据表,根据修改的主键及其对应值以检测在所述存储介质中是否存在与该主键及其对应值关联的音效及其路径;
S520,如果存在相应的音效及其路径,则完成音效路径数据表的更新,否则重新编辑音效路径数据表;
S530,根据已编辑并更新的音效路径数据表,调用游戏程序的编程接口将对应在音效路径数据表中删除的音效资源从音效打包中释放或者从游戏内存中释放。
进一步地,步骤S500中还包括反馈音效的播放逻辑标识和音效的播放状态信息到游戏系统,与游戏系统中的各个软件模块进行逻辑交互。
进一步地,步骤S500的音效编辑至少包括对音效进行播放、修改音效、线性降低音量和延迟播放。
其次,在本发明的又一个实施例中,提出一种高效调试游戏音乐音效的装置,包括以下模块:Fmod音效引擎,用于在游戏系统中加载Fmod音频引擎,并且向Lua脚本提供Fmod音频引擎的部分程序接口,使Lua脚本调用Fmod音频引擎的部分功能;音效管理模块,用于获取游戏所需的音效数据和路径,生成预设的分布式存储格式的音效路径数据表,以供Lua脚本读取,将音效名称信息储存为音效路径数据表的主键,音效路径信息储存为主键的对应值;音效调试模块,用于在Lua脚本上创建音效的动作指令,并将指令进行封装,创建远程控制接口,以进行远程调试;调试器模块,用于与音效调试模块通信连接,向音效调试模块发送命令;音效修整模块,用于调试器通过所述远程控制接口获取音效资源和调用音效的动作指令,对音效进行至少包括播放、修改音效、线性降低音量和延迟播放的编辑动作。
进一步地,在本发明的上述装置实施例中,音效管理模块还包括子模块:音效更新模块,用于更新已修改的音效路径数据表,根据修改的主键及其对应值以检测在所述存储介质中是否存在与该主键及其对应值关联的音效及其路径,如果存在相应的音效及其路径,则完成音效路径数据表的更新,否则重新编辑音效路径数据表;音效资源释放模块,用于根据已编辑并更新的音效路径数据表,调用游戏程序的编程接口将对应在音效路径数据表中删除的音效资源从音效打包中释放或者从游戏内存中释放。
进一步地,在本发明的上述装置实施例中,还包括逻辑交互模块,用于反馈音效的播放逻辑标识和音效的播放状态信息到游戏系统,与游戏系统中的各个软件模块进行逻辑交互。
最后,在本发明的又一个方法实施例中,还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明所述方法的步骤。
本发明的有益效果为:利用游戏开发中Lua脚本,可以远程调试的特点,将音频相关的配置表和接口等封装一层,通过输入命令或者可视化操作。将游戏音乐音效的音量、切换、淡入时间、淡出时间等调试简单化和实时化,从而可以让设计师自己在游戏里调试自己想要的效果。
附图说明
图1所示为本发明的一种高效调试游戏音乐音效方法的方法流程图;
图2所示为图1中的步骤S500的子步骤方法流程图;
图3所示为本发明的一种高效调试游戏音乐音效装置的装置模块图。
具体实施方式
以下将结合实施例和附图对本发明的构思、具体结构及产生的技术效果进行清楚、完整的描述,以充分地理解本发明的目的、方案和效果。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。附图中各处使用的相同的附图标记指示相同或相似的部分。
本领域技术人员应当理解,在本申请的说明书中,“首先”、“其次”、“第一”、“第二”、“第一步”、“第二步”、“S200”等用语,如无特别声明并不表示对先后顺序的限制。例如,“步骤三”可以在“步骤一”之前,步骤“S300”可以和步骤“S200”同时进行。
在本发明的一个或多个实施例中,音乐音效的配置文件全部使用lua配置文件,例如,
当需要对音效的音调进行修改时,只需要对Data.uiSound[1].path赋予一个新的值。另外,还包括使用lua创建其他常用接口,如play_2d_sound_event,play_3d_sound_event,play_music,stop_music,set_music_volume,fade_music_volume等等。
参照图1所示的方法流程图,根据本发明所公开的一个实施例,提供了一种高效调试游戏音乐音效方法,包括以下步骤:
S100,在游戏系统中加载Fmod音频引擎,并且向Lua脚本提供Fmod音频引擎的部分程序接口,使Lua脚本调用Fmod音频引擎的部分功能;
S200,在Lua脚本创建远程控制接口,以进行远程调试;
S300,获取游戏所需的音效数据和路径,生成预设的分布式存储格式的音效路径数据表,以供Lua脚本读取;
S400,在Lua脚本上创建音效的动作指令,并将指令进行封装;
S500,调试器利用ldebug.start监听一个调试端口,并使用nc或telnet进行连接调试,获取音效资源和调用音效的动作指令,对音效资源进行音效编辑。
在本发明的一个或多个实施例中,在游戏端使用lua开启端口监听远程发来的数据,对发来的数据进行解释执行,由此接收音效师通过调试器发送的命令,对游戏端的音效进一步修整。调试器启动程序的时候利用ldebug.start监听一个调试端口,程序运行后使用nc(network connect)或telnet连接进行调试,调试端口连接上后,利用lua代码运行,可以读取游戏客户端中的音效全局变量。其中,ldebug.start是lua的debug接口中的一个调试函数,命令nc(network connect)和telnet是用于检测端口是否打开以及进行连接的常用工具。基于程序提供的框架和机制,音效师可以在游戏里进行调试音乐音效的效果。解放了程序的劳动力,同时,让音效师可以更专注于游戏的音频效果设计和调试,提高工作效率,以及更好地进行创作。
在本发明的一个或多个实施例中,进一步地在步骤200中读取音效资源的分类、每个音效的名称和路径,然后分别对应每一类音效资源创建音效路径数据表,其中音效路径数据表采用分布式存储数据格式,使音效名称信息储存为音效路径数据表的主键,并且使音效路径信息储存为主键的对应值。
参照图2所示的子步骤方法流程图,在本发明的一个或多个实施例中,音效师可以通过调试器对音效路径数据表进行编辑。而在编辑过程中,可以更新已修改的音效路径数据表,根据修改的主键及其对应值以检测在所述存储介质中是否存在与该主键及其对应值关联的音效及其路径;如果存在相应的音效及其路径,则完成音效路径数据表的更新,否则重新进行音效路径数据表的编辑;根据已编辑并更新的音效路径数据表,调用游戏程序的编程接口将对应在音效路径数据表中删除的音效资源从音效打包中释放或者从游戏内存中释放。检测是否存在相应的音效及其路径。
在本发明的一个或多个实施例中,音效师可以通过调试器,给游戏发送命令,对游戏的音频效果进行调试。例如,当音效师发现“event:/ui/common/common_enter_click”样本不好,重做了一个:“event:/ui/common/common_enter_click2”时,可以将新样本传输到调试器上,调试器发送一个命令:Data.uiSound[1].path=“event:/ui/common/common_enter_click2”到游戏端,将新的音效样本代替原来的音效,因此可以单独换样本调试,不需要程序;当音效师觉得某个音效播放得过早了,想试试触发延迟播放时的感觉,调试器可以发送命令:Set_delay_play(eventpath,delaytime),延迟的时机也可以在游戏调试。
在本发明的一个或多个实施例中,当播放"event:/ui/common/common_enter_click"这个音效时,音效师希望降低背景音乐的音量,从volume=1降到volume=0.3,同时,希望是线性降低,当音乐播完后2秒,再渐渐花3秒恢复到volume=1。这些时间参数,音效师可能也没有把握,需要反复调试,才可以确认。利用提前封装好的接口后,音效师可以通过调试器,给游戏发相令的命令:effect_component=new FadeMusicComponet(1,0.3,2,“end”,2,1),该命令表示背景音乐从音量1线性降到0.3,花2s,当收到end回调时,从当前音量花2秒恢复到音量1。
参照图3所示的装置模块图,根据本发明所公开的一个实施例,提供了一种高效调试游戏音乐音效的装置,包括以下模块:Fmod音效引擎,用于在游戏系统中加载Fmod音频引擎,并且向Lua脚本提供Fmod音频引擎的部分程序接口,使Lua脚本调用Fmod音频引擎的部分功能;音效管理模块,用于获取游戏所需的音效数据和路径,生成预设的分布式存储格式的音效路径数据表,以供Lua脚本读取,将音效名称信息储存为音效路径数据表的主键,音效路径信息储存为主键的对应值;音效调试模块,用于在Lua脚本上创建音效的动作指令,并将指令进行封装,创建远程控制接口,以进行远程调试;调试器模块,用于与音效调试模块通信连接,向音效调试模块发送命令;音效修整模块,用于调试器通过所述远程控制接口获取音效资源和调用音效的动作指令,对音效进行至少包括播放、修改音效、线性降低音量和延迟播放的编辑动作。其中,调试器可以是一安装有lua音频远程调试软件的PC或手机,具有GUI操作界面,可通过WiFi、移动网络或蓝牙等方式与装置中的其他模块实现远程连接。
在本发明的上述装置实施例中,音效管理模块存储游戏的所有音效,包括:界面音效、机关触发类音效、技能音效、物品类音效、怪物叫声、脚步声、环境音乐、武器挥空及碰撞等等。还包括子模块:音效更新模块,用于更新已修改的音效路径数据表,根据修改的主键及其对应值以检测在所述存储介质中是否存在与该主键及其对应值关联的音效及其路径,如果存在相应的音效及其路径,则完成音效路径数据表的更新,否则重新编辑音效路径数据表;音效资源释放模块,用于根据已编辑并更新的音效路径数据表,调用游戏程序的编程接口将对应在音效路径数据表中删除的音效资源从音效打包中释放或者从游戏内存中释放。
进一步地,在本发明的上述装置实施例中,还包括逻辑交互模块,用于反馈音效的播放逻辑标识和音效的播放状态信息到游戏系统,与游戏系统中的各个软件模块进行逻辑交互。
根据本发明的第三实施例,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明第一实施例所述方法的步骤。
尽管本发明的描述已经相当详尽且特别对几个所述实施例进行了描述,但其并非旨在局限于任何这些细节或实施例或任何特殊实施例,而是应当将其视作是通过参考所附权利要求考虑到现有技术为这些权利要求提供广义的可能性解释,从而有效地涵盖本发明的预定范围。此外,上文以发明人可预见的实施例对本发明进行描述,其目的是为了提供有用的描述,而那些目前尚未预见的对本发明的非实质性改动仍可代表本发明的等效改动。