创客作品:自制足球游戏解说员
有时,在小型开发板上分模块地测试代码,要比自己在大脑里想出整个完整的多模块应用更切实际。你要做的只是现在就着手,一行一行地编写代码。
本文引用地址:https://www.eepw.com.cn/article/268066.htm周末我们打算在电子棋盘游戏系统上开发几款游戏。我们要做的是将思路转化成实际的一款游戏,而非只是模糊的设计理念或想法。
最终我们打算做一款虚拟足球游戏。假设您是玩家,请问您是否更希望比赛时有同步的现场解说呢?当您控制球场上的角色,尝试拦截、抢球但球却不小心漏掉时,此时若恰好出现评论员或解说员的声音,您是否会更有身临其境之感?
我们坚信这款游戏定会很受欢迎。而此时一个更大胆的想法诞生了。是否可以考虑让一个“活生生的解说员”出现在屏幕上方呢?让“John Moston”带着麦克风,在屏幕画面里为我们现场解说?
听起来蛮激动人心的,但做起来却相当有难度。
说到能与模拟3d角色(如果你对此感兴趣,可以试试Hash Animation Master)做到口型同步的解说员,恐怕即使追溯到多年以前,也仅有如奥康娜几位屈指可数。短短3分钟的动画片,在录制、回放、擦除、设置关键帧中不断重复,以至于耗时长达3星期之久,所以说这个任务绝不轻松。
Michael向来擅长处理原始动画的形音配合。他提议说,我们可以试试在不影响娱乐效果的前提下稍加改动,通过实时动态处理:让张口大小与声音的振幅保持一致。
听起来好像在回避困难,不过这样做至少重要部分实现了同步(如声音开始前和说完一句话时嘴都是闭合的)。其间说的话就让它从嘴里滔滔不绝说出就好了。当然,最好是人工处理下每个词组的关键帧。
Michael又提议说,既然能做到实时嘴型同步,那么实现音频的可互换也就不在话下了:加载一个mp3文件并播放,然后让屏幕中的嘴动起来。再加载另一个mp3文件,更换声音但采用相同的同步方法,这样能够允许自定义和用户生成目录。
到了这一步,内容已经远远超过我们最初的设想。但大多时候,人们总是在极其紧迫、看似不可能的期限里,最终出色地完成了任务并超越自我,不是么?
所以我们就开始着手做足球游戏了。我们选用了一较长的mp3单曲文件,其中包含了大量足球术语和陈词滥调。我们将其分开,比赛时根据不同情景播放不同的音效。
mp3播放时(显示屏上的卡通头像就在进行解说评论),系统会按比特逐一分析音频数据,同时记录这一时间段内的平均振幅,据此控制显示屏上头像的张口大小。
到此为止还相对简单……
为了测试我们将霍默·辛普森的一些惯用语用Audacity合成了一个更大的单mp3文件。使用Audacity这个免费而强大的音频编辑器,好处在于你可以在音频文件的不同节点创建标签图层。
在此需要注意,当你在标签轨上选择一个节点时也将播放头更新到了音频数据的相同位置:这将有助于实际播放的音频的位置追踪。
我们在音频文件的特殊节点位置做了简单标记,来表示在哪个节点位置说了哪些话。
将输出为一个文本文档。
按理说每个词组都可以展开标签并定义起始和结束,鉴于我们的mp3轨道包含太多的词组且相邻间隔太短,因此这里没有必要,我们权当下一个词组的起始就是上一个词组的结束,只要保证每个词组分开(即不重叠)就没问题。
评论