我們已經(jīng)討論了大量有關(guān)游戲的技術(shù),包括圖形、計(jì)時(shí)器和聲音等?,F(xiàn)在應(yīng)該把目前所學(xué)的知識(shí)綜合到一起,來制作一個(gè)真正的游戲。
在本章中,我們將全程演示如何制作一個(gè)名為GemDrops(寶石連連看)的示例游戲,這是一個(gè)功能完整的游戲(并且很好玩),它使用了我們前面所構(gòu)建好的游戲引擎。
8.1 設(shè)計(jì)游戲
在創(chuàng)建游戲之前,首先要在一個(gè)“設(shè)計(jì)概要”文檔中對(duì)游戲進(jìn)行規(guī)劃。它將解釋游戲的內(nèi)容、實(shí)現(xiàn)方式及其目標(biāo)。還要輔以一些模型屏幕截圖對(duì)游戲設(shè)計(jì)進(jìn)行演示。
如果您是獨(dú)自開發(fā),那么在游戲的實(shí)現(xiàn)過程中 應(yīng)該能夠流暢地執(zhí)行該計(jì)劃;如果您在一個(gè)團(tuán)隊(duì)中,那么在決定改動(dòng)設(shè)計(jì)時(shí)就必須更加遵守規(guī)則,確保每個(gè)人都能理解這些變動(dòng),并從自己的角度出發(fā)進(jìn)行考慮。
當(dāng)您獨(dú)自進(jìn)行開發(fā)時(shí),概要設(shè)計(jì)看似多余,但它仍然是一個(gè)非常有用的文檔:
● 它能幫您在投入大量時(shí)間編寫程序代碼之前發(fā)現(xiàn)可能存在的問題,從而減小很多由于返工而造成的浪費(fèi)。
● 它能幫您記錄要實(shí)現(xiàn)的功能列表,在開發(fā)游戲時(shí),當(dāng)需要實(shí)現(xiàn)一系列游戲功能時(shí),它就可以發(fā)揮作用。
● 它能幫您激發(fā)靈感來設(shè)計(jì)新功能和觸發(fā)新的想法,避免陷入紛繁復(fù)雜的實(shí)際情況
當(dāng)中。
● 它能幫您更快更好地將游戲的理念傳達(dá)給其他人。
接下來我們就對(duì)“GemDrops”游戲進(jìn)行概要設(shè)計(jì)。
8.1.1 創(chuàng)建GemDrops的概要設(shè)計(jì)
GemDrops游戲中包含了多種顏色的寶石。寶石在玩家的控制下成對(duì)的從游戲區(qū)域的頂部往下降落。玩家可以左右移動(dòng)寶石,也可以旋轉(zhuǎn)寶石以調(diào)整排列順序,還可以使寶石加速下落來使游戲更加流暢。
玩家控制中的寶石不能移動(dòng)到與已有的寶石發(fā)生重疊的位置。當(dāng)玩家試圖將一對(duì)寶石移動(dòng)到某個(gè)已經(jīng)存在了寶石的位置上時(shí),該移動(dòng)將不被允許,且被控制的寶石保持在原位。同樣,當(dāng)寶石落在已有寶石的上面時(shí)是不允許旋轉(zhuǎn)的。
玩家控制中的寶石如果落在某個(gè)已經(jīng)存在的寶石上,該寶石就被認(rèn)為是落地了,玩家將失去對(duì)這一對(duì)寶石的控制。
寶石不會(huì)漂浮在游戲區(qū)域的中間,只要有可能它們就會(huì)往下落。如果寶石在降落過程中是水平排列的,當(dāng)其中一個(gè)寶石落在某個(gè)已經(jīng)存在的寶石的上方,而與它配對(duì)的另一個(gè)寶石下方還有空間時(shí),那么后者將會(huì)繼續(xù)降落(這時(shí)玩家不能對(duì)它進(jìn)行控制),直到其降落到某個(gè)已存在的寶石的上方或是到達(dá)游戲區(qū)域的底邊。
當(dāng)游戲區(qū)域中有5個(gè)及5個(gè)以上相同顏色的寶石連接在一起時(shí)(垂直連接或者水平連接,但斜線連接無效),那么這一組寶石就會(huì)從游戲區(qū)域中消去。這些寶石不必以直線的方式連接,只需要相互連接即可。這時(shí)玩家就會(huì)得分,分?jǐn)?shù)的多少是根據(jù)連接在一起的寶石的數(shù)量決定的。每連接一個(gè)寶石就會(huì)得10分。因此,消去一組寶石至少會(huì)得50分。