俄羅斯方塊遊戲開發系列教程8:下落處理

語言: CN / TW / HK

嗨!大家好,我是小螞蟻。今天我們繼續來學習俄羅斯方塊中的下一個環節:下落處理。

圖片

“下落處理”也是俄羅斯方塊遊戲迴圈中的最後一個環節,因為“下落處理”結束後,就又進入到了下一個新的迴圈中。

與之前一樣,我們先來看一下什麼時候需要進行“下落處理”。

圖片

如圖,“下落處理”是在消除完成之後進行的,消除完成之後,上方的未被消除的方塊會下落,直到碰到下方的其它方塊或者是第一行為止。

將當前的遊戲抽象成資料表格再來看一下。

圖片

我們試著根據資料表格重新描述一下下落的過程:從表格最下方的第一行開始,逐行向上遍歷檢查,如果當前行是消除行,就直接跳過這一行。如果當前行不是消除行,就將當前行插入到新的表格中,直到檢查到最上方的一行為止。

可能不太容易理解,我們用圖片來演示一下整個下落的處理過程。

圖片

如圖,形狀停靠後第 1,3 行將會被消除,我們就以當前的這種情況來演示一下下落處理的過程。

圖片

圖片

圖片

圖片

圖片

最終,右側的這個新的表格,就是下落處理之後的資料表格。以上就是整個下落處理的過程了,你可以對照著這個流程圖再次理解一下整個下落過程。

在獲得了新的表格之後,剩下的就只需要重新的調整一下方塊的位置即可。

接下來,看一下整個下落處理的積木邏輯。

圖片

這裡你可能發現了,我並沒有建立一個“新的表格”,上方圖片中的“新的表格”只是方便我們理解整個下落處理過程,實際的邏輯中只需要知道當前的行需要插入到新表格中的哪一行(下落行號)即可,我們使用了兩個列表來記錄了需要進行移動處理的方塊的索引,以及它對應的需要移動到的新位置的索引。

接著,來看一下填充方塊上的“下落處理”邏輯。

圖片

邏輯很簡單,看一下自己需不需要移動,需要的話就找到移動的目的地,然後將自己移動過去。另外,在移動前將自己資料表格中相應位置的資料設定為 0 ,移動後再將資料表格中相應位置的資料設定為 1。

最後,預覽一下場景,看一下下落的處理。

圖片

消除完成後,剩餘的方塊會進行下落處理,然後移動到自己的新位置上。

至此,整個俄羅斯方塊遊戲的整個流程我們就都講完了,俄羅斯方塊作為消除遊戲的鼻祖,其中的很多原理和機制都被應用在了後續的各種消除型別的遊戲中。如果你對做一個消除遊戲感興趣的話,那麼俄羅斯方塊作為上手研究的開始絕對是一個不錯的選擇。

Jesse Schell在《遊戲設計藝術》的前言中說過這樣的一句話:令經典遊戲好玩的原理,與令現代遊戲好玩的原理一模一樣。研究透這個經典的俄羅斯方塊遊戲,不論是在遊戲開發上還是遊戲設計上,對於遊戲開發者來講,或許都會有一定的幫助吧!


我製作的俄羅斯方塊小遊戲已經上線,歡迎大家前去試玩。

俄羅斯方塊.png

我是會做遊戲也會教你做遊戲的小螞蟻,歡迎關注我的微信公眾號【小螞蟻教你做遊戲】,學習更多與遊戲開發有關的原創教程。

如果文章內容對你有所幫助的話,歡迎 點贊 分享,你的鼓勵對我來說價值巨大,感謝!