西瓜是怎樣被切掉的?(如何理解游戲系列)


圖片來源:Halfbrick

你正在玩《水果忍者》,一個西瓜飛了上來。

如果你有看過本系列上一篇文章《游戲和動畫有什么不同?》,你就會知道,你的iPhone這時正在努力地把這個西瓜從一個狀態(tài)變到另一個狀態(tài)。

如果你沒看過或者忘記了,沒關(guān)系,我們先簡單回顧一下什么叫狀態(tài)。

所謂的狀態(tài)就是游戲里的參數(shù),例如剛才這位西瓜,它的位置就是一個參數(shù)。狀態(tài)會隨著時間變化:一開始這個西瓜的位置在屏幕的左下角,過一會兒它的位置在屏幕正上方,再過一會兒它又移到屏幕右下角去了。西瓜的位置在變,等于說游戲的狀態(tài)在變,每變化到一個新狀態(tài),游戲都會根據(jù)這個狀態(tài)下的參數(shù),把西瓜重新畫到屏幕上,然后,iPhone繼續(xù)計算出下一個狀態(tài)的參數(shù),如此循環(huán)不息,游戲就一直運(yùn)行下去。

ok,上一篇文章其實就講了這么個事,現(xiàn)在,我們討論下西瓜是怎么被切掉的。

如上所述,當(dāng)西瓜飛上來時,游戲正在從一個狀態(tài)跳到下一個狀態(tài),這時, 你的iPhone突然感到自己被人劃了一下,敏感的它會立刻把“擦,我被劃了一下”這件事通知游戲。

具體怎么通知呢?它把這件事插入到當(dāng)前狀態(tài)之后。

本來如果沒這事,游戲畫完當(dāng)前這一幀后就會跳到下一狀態(tài),現(xiàn)在出了這事,它畫完當(dāng)前幀后就沒法立刻跳到下個狀態(tài),它得先處理這個事,等處理完了,再跳到下一個狀態(tài)。所以我們說,“我被劃了一下”這件事被插入到兩個狀態(tài)之間。

那么,一個很自然的問題是:游戲怎么處理這件事?

事實上,游戲?qū)@件事的處理,本質(zhì)上還是在改變西瓜的參數(shù)。我們假設(shè)西瓜除了“位置”以外,還有一個叫做“爆否”的參數(shù),在處理這個事件的時候,游戲把這個參數(shù)由原來的0(表示沒爆)改寫成1(表示爆啦)。改寫完后,游戲就把這事忘記了,繼續(xù)跳到下一個狀態(tài)。在新的狀態(tài)里,游戲照例會根據(jù)參數(shù)來畫西瓜。這時,它猛然發(fā)現(xiàn)“爆否”這個參數(shù)居然不等于0,而是等于1!天哪!這意味著這個西瓜爆了!盡管對這個西瓜滿懷不舍,游戲還是不得不把西瓜爆掉的畫面畫出來,因為畫面是由狀態(tài)說了算的。所以西瓜就是這么被切掉的。

導(dǎo)致西瓜被切掉的,是“iPhone被劃了一下”這件事,這在游戲開發(fā)里叫用戶事件,從游戲者的角度來看,用戶事件則是由輸入設(shè)備觸發(fā)的。

隨著游戲設(shè)備越來越豐富,輸入方式也越來越多:從紅白機(jī)的手柄,電腦的鼠標(biāo)鍵盤,到移動設(shè)備的觸控和重力感應(yīng),再到狂拽炫酷的體感設(shè)備,不一而足。想象一下聲控的Flappy Bird吧,喊一聲跳一下,是不是歡樂。

電影《阿凡達(dá)》里,主角自己無法站起來,但他能通過意識輸入來控制Avatar,就像在玩一款游戲。Avatar這個詞來自印度教,有神靈下凡、附體的意思。所以當(dāng)你點開《神廟逃亡》,用你牛逼閃閃的操作控制著主角左蹦右跳時,背后的魔鬼肯定吐槽:神人附體啊臥槽。

《游戲和動畫有什么不同?》里,我們說游戲本質(zhì)上是狀態(tài)機(jī),現(xiàn)在我們可以說,它是一個可以和人互動的狀態(tài)機(jī)。它接收來自游戲者的信息, 改變自身狀態(tài),通過畫面或聲音把新的狀態(tài)告訴游戲者,游戲者又根據(jù)這些畫面輸入新的信息,如此往復(fù),造就了游戲里的另一個循環(huán)。

下一篇《圖片是怎么畫到屏幕上的?》

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容