
你正在玩《水果忍者》,一個(gè)西瓜飛了上來(lái)。
如果你有看過(guò)本系列上一篇文章《游戲和動(dòng)畫(huà)有什么不同?》,你就會(huì)知道,你的iPhone這時(shí)正在努力地把這個(gè)西瓜從一個(gè)狀態(tài)變到另一個(gè)狀態(tài)。
如果你沒(méi)看過(guò)或者忘記了,沒(méi)關(guān)系,我們先簡(jiǎn)單回顧一下什么叫狀態(tài)。
所謂的狀態(tài)就是游戲里的參數(shù),例如剛才這位西瓜,它的位置就是一個(gè)參數(shù)。狀態(tài)會(huì)隨著時(shí)間變化:一開(kāi)始這個(gè)西瓜的位置在屏幕的左下角,過(guò)一會(huì)兒它的位置在屏幕正上方,再過(guò)一會(huì)兒它又移到屏幕右下角去了。西瓜的位置在變,等于說(shuō)游戲的狀態(tài)在變,每變化到一個(gè)新?tīng)顟B(tài),游戲都會(huì)根據(jù)這個(gè)狀態(tài)下的參數(shù),把西瓜重新畫(huà)到屏幕上,然后,iPhone繼續(xù)計(jì)算出下一個(gè)狀態(tài)的參數(shù),如此循環(huán)不息,游戲就一直運(yùn)行下去。
ok,上一篇文章其實(shí)就講了這么個(gè)事,現(xiàn)在,我們討論下西瓜是怎么被切掉的。
如上所述,當(dāng)西瓜飛上來(lái)時(shí),游戲正在從一個(gè)狀態(tài)跳到下一個(gè)狀態(tài),這時(shí), 你的iPhone突然感到自己被人劃了一下,敏感的它會(huì)立刻把“擦,我被劃了一下”這件事通知游戲。
具體怎么通知呢?它把這件事插入到當(dāng)前狀態(tài)之后。
本來(lái)如果沒(méi)這事,游戲畫(huà)完當(dāng)前這一幀后就會(huì)跳到下一狀態(tài),現(xiàn)在出了這事,它畫(huà)完當(dāng)前幀后就沒(méi)法立刻跳到下個(gè)狀態(tài),它得先處理這個(gè)事,等處理完了,再跳到下一個(gè)狀態(tài)。所以我們說(shuō),“我被劃了一下”這件事被插入到兩個(gè)狀態(tài)之間。
那么,一個(gè)很自然的問(wèn)題是:游戲怎么處理這件事?
事實(shí)上,游戲?qū)@件事的處理,本質(zhì)上還是在改變西瓜的參數(shù)。我們假設(shè)西瓜除了“位置”以外,還有一個(gè)叫做“爆否”的參數(shù),在處理這個(gè)事件的時(shí)候,游戲把這個(gè)參數(shù)由原來(lái)的0(表示沒(méi)爆)改寫成1(表示爆啦)。改寫完后,游戲就把這事忘記了,繼續(xù)跳到下一個(gè)狀態(tài)。在新的狀態(tài)里,游戲照例會(huì)根據(jù)參數(shù)來(lái)畫(huà)西瓜。這時(shí),它猛然發(fā)現(xiàn)“爆否”這個(gè)參數(shù)居然不等于0,而是等于1!天哪!這意味著這個(gè)西瓜爆了!盡管對(duì)這個(gè)西瓜滿懷不舍,游戲還是不得不把西瓜爆掉的畫(huà)面畫(huà)出來(lái),因?yàn)楫?huà)面是由狀態(tài)說(shuō)了算的。所以西瓜就是這么被切掉的。
導(dǎo)致西瓜被切掉的,是“iPhone被劃了一下”這件事,這在游戲開(kāi)發(fā)里叫用戶事件,從游戲者的角度來(lái)看,用戶事件則是由輸入設(shè)備觸發(fā)的。
隨著游戲設(shè)備越來(lái)越豐富,輸入方式也越來(lái)越多:從紅白機(jī)的手柄,電腦的鼠標(biāo)鍵盤,到移動(dòng)設(shè)備的觸控和重力感應(yīng),再到狂拽炫酷的體感設(shè)備,不一而足。想象一下聲控的Flappy Bird吧,喊一聲跳一下,是不是歡樂(lè)。
電影《阿凡達(dá)》里,主角自己無(wú)法站起來(lái),但他能通過(guò)意識(shí)輸入來(lái)控制Avatar,就像在玩一款游戲。Avatar這個(gè)詞來(lái)自印度教,有神靈下凡、附體的意思。所以當(dāng)你點(diǎn)開(kāi)《神廟逃亡》,用你牛逼閃閃的操作控制著主角左蹦右跳時(shí),背后的魔鬼肯定吐槽:神人附體啊臥槽。
在《游戲和動(dòng)畫(huà)有什么不同?》里,我們說(shuō)游戲本質(zhì)上是狀態(tài)機(jī),現(xiàn)在我們可以說(shuō),它是一個(gè)可以和人互動(dòng)的狀態(tài)機(jī)。它接收來(lái)自游戲者的信息, 改變自身狀態(tài),通過(guò)畫(huà)面或聲音把新的狀態(tài)告訴游戲者,游戲者又根據(jù)這些畫(huà)面輸入新的信息,如此往復(fù),造就了游戲里的另一個(gè)循環(huán)。