cocos2d-x中使用FMOD音效引擎基本知识介绍

大致研究了2.5天的Fmod音效引擎,从对音效没有什么概念到有一点点理解。fmod是一个很不错的音效引擎,从它的API demo运行效果可以感受到引擎音效非常好,它提供了很简单的API来控制音效的3D播放特性。

一、FMOD引擎API版本介绍

fmod引擎api因为其版本的原因,分成两种:

1. 对应FMOD Designer版本的API,FMOD Designer为旧版本引擎,导出文件为fev和fsb,fev定义为音效的播放规则,音乐索引(大致可以这么理解)等;fsb主要是音乐文件的打包,目前音效组使用的FMOD Designer做音效开发。

2. 对应FMOD Studio版本的API,FMOD Studio是新版本引擎,导出文件为.bank文件,其中包含有播放规则,音乐索引,音乐文件(新版本将旧版本中的两个导出文件变成一个,提供了一个很好的特性:可以播放apk中的音效文件)。

二、在cocos2d-x中FMOD API调用方式

同样有两种途径:

1. 使用FMOD提供的android api和ios api分别开发播放接口,然后再lua中调用。

    1.1 优点在于难点少,相比方法2简单。

    1.2 缺点在于需要做两套代码,工作量大,另外一个致命的问题是:音效延迟播放(因为LUA调用Java只能是静态方法,所以在Java采用线程扫描状态的方式,存在一定的播放延迟),个人觉得对于音效来说不能忍,人的视觉几乎无法区分1/60s内的变换,但是听觉就不一样了。点击一个按钮,在20ms内响应完全没有问题,但是如果声音在20ms后播放就存在很大的问题了。

2. 使用FMOD的cpp接口,首先在cocos2d-x的底层平台写好cpp的播放代码接口,然后采用tolua++导出lua可以使用的内库,然后编写lua调用的接口,最后可以在cocos2d-x + lua上进行播放。

    1.1 优点在于跨平台,一次解决可以适用于android和ios,同时对于以后的项目也可以直接使用,非常有必要做这个工作。

    1.2 缺点在于难点多,漏洞多,涉及到cocos2d-x底层接口开发,以及cpp和lua之间的接口开发,这些之前都没有做过,难度比较大,另外,涉及到cpp底层代码,容易造成一些难以解决的漏洞。

三、FMOD Designer VS FMOD Studio

两个版本一个旧,一个新,大致说说他们最致命的问题:

1. FMOD Designer公司音效人员在使用,这是其优点,但是FMOD Designer版本的缺点很明显就是在android平台无法播放apk中的音效,这意味着和PC游戏一样,安装工程或者第一次运行的时候需要解压apk中的音效文件到应用目录中,并且在以后的每次运行过程中必须检测音效文件是否存在,如果不存在或者缺失,需要将音效重写解压出来。这不仅增加游戏的另一份工作量,也减少了游戏的运行效率。(一般的手机清理软件都会造成app,目录被删除)

2. FMOD Studio新版本很好的一个特性就是可以直接读取apk中音效文件(网络上关于FMOD资源不多,这一点还是发邮件和官方沟通得知的);但是FMOD Studio并没有被公司音效使用。

四、FMOD适用环境

FMOD具有很简单的API操作,并提供不简单的3D音效特性,然而在cocos2d-x中使用FMOD引擎需要做引擎文件的解析操作,会增加一定的工作量,因此建议在游戏存在3D特性的情况下使用,例如:音效距离、音效方向、音效源移动等情况使用;而在一般的UI界面操作中不要使用fmod,而是使用普通的wav,mp3,ogg等cocos2d-x可以解析的音效即可。

0 个评论

要回复文章请先登录注册