創(chuàng)客作品:自制足球游戲解說(shuō)員
有時(shí),在小型開(kāi)發(fā)板上分模塊地測(cè)試代碼,要比自己在大腦里想出整個(gè)完整的多模塊應(yīng)用更切實(shí)際。你要做的只是現(xiàn)在就著手,一行一行地編寫(xiě)代碼。
本文引用地址:http://www.ex-cimer.com/article/268066.htm周末我們打算在電子棋盤(pán)游戲系統(tǒng)上開(kāi)發(fā)幾款游戲。我們要做的是將思路轉(zhuǎn)化成實(shí)際的一款游戲,而非只是模糊的設(shè)計(jì)理念或想法。
最終我們打算做一款虛擬足球游戲。假設(shè)您是玩家,請(qǐng)問(wèn)您是否更希望比賽時(shí)有同步的現(xiàn)場(chǎng)解說(shuō)呢?當(dāng)您控制球場(chǎng)上的角色,嘗試攔截、搶球但球卻不小心漏掉時(shí),此時(shí)若恰好出現(xiàn)評(píng)論員或解說(shuō)員的聲音,您是否會(huì)更有身臨其境之感?
我們堅(jiān)信這款游戲定會(huì)很受歡迎。而此時(shí)一個(gè)更大膽的想法誕生了。是否可以考慮讓一個(gè)“活生生的解說(shuō)員”出現(xiàn)在屏幕上方呢?讓“John Moston”帶著麥克風(fēng),在屏幕畫(huà)面里為我們現(xiàn)場(chǎng)解說(shuō)?
聽(tīng)起來(lái)蠻激動(dòng)人心的,但做起來(lái)卻相當(dāng)有難度。
說(shuō)到能與模擬3d角色(如果你對(duì)此感興趣,可以試試Hash Animation Master)做到口型同步的解說(shuō)員,恐怕即使追溯到多年以前,也僅有如奧康娜幾位屈指可數(shù)。短短3分鐘的動(dòng)畫(huà)片,在錄制、回放、擦除、設(shè)置關(guān)鍵幀中不斷重復(fù),以至于耗時(shí)長(zhǎng)達(dá)3星期之久,所以說(shuō)這個(gè)任務(wù)絕不輕松。
Michael向來(lái)擅長(zhǎng)處理原始動(dòng)畫(huà)的形音配合。他提議說(shuō),我們可以試試在不影響娛樂(lè)效果的前提下稍加改動(dòng),通過(guò)實(shí)時(shí)動(dòng)態(tài)處理:讓張口大小與聲音的振幅保持一致。
聽(tīng)起來(lái)好像在回避困難,不過(guò)這樣做至少重要部分實(shí)現(xiàn)了同步(如聲音開(kāi)始前和說(shuō)完一句話(huà)時(shí)嘴都是閉合的)。其間說(shuō)的話(huà)就讓它從嘴里滔滔不絕說(shuō)出就好了。當(dāng)然,最好是人工處理下每個(gè)詞組的關(guān)鍵幀。
Michael又提議說(shuō),既然能做到實(shí)時(shí)嘴型同步,那么實(shí)現(xiàn)音頻的可互換也就不在話(huà)下了:加載一個(gè)mp3文件并播放,然后讓屏幕中的嘴動(dòng)起來(lái)。再加載另一個(gè)mp3文件,更換聲音但采用相同的同步方法,這樣能夠允許自定義和用戶(hù)生成目錄。
到了這一步,內(nèi)容已經(jīng)遠(yuǎn)遠(yuǎn)超過(guò)我們最初的設(shè)想。但大多時(shí)候,人們總是在極其緊迫、看似不可能的期限里,最終出色地完成了任務(wù)并超越自我,不是么?
所以我們就開(kāi)始著手做足球游戲了。我們選用了一較長(zhǎng)的mp3單曲文件,其中包含了大量足球術(shù)語(yǔ)和陳詞濫調(diào)。我們將其分開(kāi),比賽時(shí)根據(jù)不同情景播放不同的音效。
mp3播放時(shí)(顯示屏上的卡通頭像就在進(jìn)行解說(shuō)評(píng)論),系統(tǒng)會(huì)按比特逐一分析音頻數(shù)據(jù),同時(shí)記錄這一時(shí)間段內(nèi)的平均振幅,據(jù)此控制顯示屏上頭像的張口大小。
到此為止還相對(duì)簡(jiǎn)單……
為了測(cè)試我們將霍默·辛普森的一些慣用語(yǔ)用Audacity合成了一個(gè)更大的單mp3文件。使用Audacity這個(gè)免費(fèi)而強(qiáng)大的音頻編輯器,好處在于你可以在音頻文件的不同節(jié)點(diǎn)創(chuàng)建標(biāo)簽圖層。
在此需要注意,當(dāng)你在標(biāo)簽軌上選擇一個(gè)節(jié)點(diǎn)時(shí)也將播放頭更新到了音頻數(shù)據(jù)的相同位置:這將有助于實(shí)際播放的音頻的位置追蹤。
我們?cè)谝纛l文件的特殊節(jié)點(diǎn)位置做了簡(jiǎn)單標(biāo)記,來(lái)表示在哪個(gè)節(jié)點(diǎn)位置說(shuō)了哪些話(huà)。
將輸出為一個(gè)文本文檔。
按理說(shuō)每個(gè)詞組都可以展開(kāi)標(biāo)簽并定義起始和結(jié)束,鑒于我們的mp3軌道包含太多的詞組且相鄰間隔太短,因此這里沒(méi)有必要,我們權(quán)當(dāng)下一個(gè)詞組的起始就是上一個(gè)詞組的結(jié)束,只要保證每個(gè)詞組分開(kāi)(即不重疊)就沒(méi)問(wèn)題。
評(píng)論