我是Lem0,自學倡導者,執(zhí)迷于“不務正業(yè)”,被批評“旁門左道”。我注冊并使用簡書,希望能夠記錄一些我記不住的事情,或者與大家一起共享知識,共同學習。
往期回顧(點擊鏈接訪問):
「從0開始:開發(fā)自己的游戲[0]」
「從0開始:開發(fā)自己的游戲[1]」
「從0開始:開發(fā)自己的游戲[2]」
「從0開始:開發(fā)自己的游戲[3]」
「從0開始:開發(fā)自己的游戲[4]」
由于近期頻繁加班造成教程更新不定期。但我依然會盡量回復大家的評論和私信,再次對各位的鼓勵和欣賞表示感謝。
在上一期教程中,我簡單介紹了游戲中“開關(guān)”的概念和使用,并且結(jié)合事件指令中的分支條件和其他指令創(chuàng)建了一個簡單的單線性任務。本期教程我將修復上節(jié)課后我們發(fā)現(xiàn)的幾個問題,帶領(lǐng)大家認識游戲變量并且運用流程控制指令豐富任務。請喜歡本系列教程的朋友們關(guān)注我,避免錯過更新動態(tài)。
如果您沒有看過之前的教程,或者在閱讀本文時發(fā)現(xiàn)自己已經(jīng)記不起以前的一些內(nèi)容,建議您先查看往期的回顧,再繼續(xù)本教程以確保效率。
問題處理
在上一節(jié)留下的諸多遺留問題,不知道諸位是否已經(jīng)有了解決方案。接下來我將帶領(lǐng)大家完善上期教程最后,我們經(jīng)過測試留下的一系列問題。
當玩家完成任務后,如果背包內(nèi)沒有藥劑,則下次和NPC對話,依然會提示“沒有完成任務”,以及當玩家完成任務后,如果背包內(nèi)還有藥劑,則下次和NPC對話時,任務會重復交付,玩家依然會被扣除恢復藥劑。這兩個現(xiàn)象出現(xiàn)的原因是在玩家完成任務之后,任務NPC士兵的游戲事件中,執(zhí)行的依然是事件頁2的內(nèi)容。由于事件頁2的事件指令是為了“判斷玩家是否完成任務”的,所以倘若玩家已經(jīng)完成了任務,就不需要再進行事件頁2的判斷。
要解決這個問題,需要設置一個標記,在第一次交付任務之后,我們可以在事件指令中進行一個開關(guān)操作,將開關(guān)0002的名稱設置為“玩家已經(jīng)完成任務”。然后更改一下我們事件指令中的邏輯:

事件指令執(zhí)行內(nèi)容如下:

當然,要解決上面的問題,你也可以新建一個出現(xiàn)條件為“開關(guān)0002:玩家完成了任務 開啟時”的事件頁3,在事件頁3中對玩家已經(jīng)完成任務后的行為進行處理。這里不再演示。
大家可能會覺得,這樣一個簡單的任務就要用到2個開關(guān),那如口袋妖怪和最終幻想之類的RPG行業(yè)頂尖大作不得用成千上萬個開關(guān)嗎?事實上,我們可以使用一種叫做獨立開關(guān)的特殊開關(guān)。

獨立開關(guān)和開關(guān)一樣,具有ON和OFF兩個狀態(tài),且作用也與一般開關(guān)無異。但相比于開關(guān),獨立開關(guān)使用A、B、C、D而不是數(shù)字編號,而且獨立開關(guān)是“獨立在每個事件中的”,也就是說,每一個事件都有A、B、C、D四個開關(guān),且不同事件中的獨立開關(guān)不受其他事件中獨立開關(guān)的影響。即使每個游戲事件都有A、B、C、D四個獨立開關(guān),但你一定要記住,他們互相獨立,互不干擾。用編程方面的語言解釋,獨立開關(guān)的作用域僅限于它所在的游戲事件。
所以我們可以對NPC士兵的游戲事件中的事件頁1進行如下更改:

對事件頁2進行如下更改:

至此,我們已經(jīng)完成了對于這個單線型任務的更改。你可以再次測試游戲。
- 下一個需要修復的問題是:在室內(nèi)地圖中,玩家可以重復領(lǐng)取恢復藥劑。桌子上藥劑這個游戲事件不會消失。這個很簡單,我們只需要在室內(nèi)地圖中的藥劑游戲事件中,添加一個空的事件頁,并且使用獨立開關(guān)進行“跳轉(zhuǎn)”就可以了:


至此,上期教程遺留的主要問題已經(jīng)被解決了。
認識游戲變量
每個游戲都有大量的游戲變量。這些變量用于儲存游戲中的數(shù)據(jù),比如玩家生命值、某個道具的數(shù)量、玩家當前獲得的成就數(shù)量、玩家的等級……
在RMVA中,操作變量的過程就需要為變量賦值或運算。我們新建一個游戲事件,新建一個事件指令,在事件指令窗口中找到變量操作命令,單擊它,彈出如下圖所示的窗口:

在變量操作中,變量數(shù)量可以更改,且以數(shù)值標號(從0001開始)。你可以操作單個變量,也可以對多個變量批量賦值。變量在被創(chuàng)建時,如果不賦值而直接進行算術(shù)運算,則默認初值為0.
比如我們制作一個形象為老爺爺?shù)挠螒蚴录?,并且?chuàng)建一個名稱為0001:和老爺爺對話次數(shù)的變量,每和老爺爺對話一次,這個變量就增加1。然后我們使用顯示文字指令中的轉(zhuǎn)義控制符,每次輸出我們和老爺爺對話的次數(shù):

在游戲中進行測試,則會發(fā)現(xiàn)這個變量每次增長1.這就是我們想要的結(jié)果。在更多情況下,我們還可能利用變量進行條件分支等操作。比如,當我們和老爺爺對話十次之后,第11次對話就會獲得1金幣的獎勵,第12次對話會獲得2金幣獎勵,獎勵數(shù)量依次累加……
為了達到如此效果,我們需要一個條件分支指令。忘記的朋友可以返回之前的教程查看。這里我直接上圖:


可能有些復雜,但畢竟已經(jīng)不需要手寫代碼了,所以也沒有多么復雜。沒有看懂的朋友可以看我來慢慢解釋。
首先,每次對話我都需要為對話次數(shù)變量0001累加常數(shù)1。如果你不是程序員,那么你需要知道<code>[變量0001:和老爺爺對話次數(shù)] += 1</code>中,這個+=操作符號其實相當于<code>[變量0001:和老爺爺對話次數(shù)] = [變量0001:和老爺爺對話次數(shù)] + 1</code>。
之后,我需要判斷對話次數(shù)是否達到了10次。這時就需要用到條件分支指令,判斷一下對話次數(shù)變量0001的大小。
對話次數(shù)達到10次之后,我需要計算玩家獲得的獎勵,這里使用了另外一個0002號變量,儲存玩家應該獲得的金幣數(shù)量。<code>[變量0002:玩家應該獲得的金幣數(shù)量] = [變量0001:玩家和老爺爺對話數(shù)量] - 10</code>。實際上這個計算等價于下面的兩步計算,因為我們的RMVA必須將操作的變量自身作為一個操作數(shù),因此這個計算步驟沒法一次完成。
[變量0002:玩家應該獲得的金幣數(shù)量] = [變量0001:玩家和老爺爺對話數(shù)量]
[變量0002:玩家應該獲得的金幣數(shù)量] -= 10
完成之后,我們使用增減金錢的事件指令為玩家增加金錢,增加的數(shù)量為變量0002的數(shù)值。



測試無誤后,我們再進行新的一次變量操作。想象一下很多游戲里的情形:在柜子里找到了道具或者金錢,但道具種類、金錢數(shù)量等都是隨機的。這也需要變量的操作。

一般來說,玩家和NPC對話時,NPC的對話內(nèi)容可能是隨機的。我們只需要用一個隨機數(shù)變量隨機生成0~2三個數(shù)中的一種,再通過條件分支判斷生成的隨機數(shù)是幾,從而設置不同的對話內(nèi)容。
制作游戲的時候我們通常使用一個變量“游戲進程”來表示游戲進度,根據(jù)游戲進程的數(shù)值判斷玩家處于游戲中的進度,從而控制游戲中事件的動作和表現(xiàn)。比如游戲進程為1的時候表示玩家剛剛創(chuàng)建角色進入游戲,新手村的NPC都會給予玩家?guī)椭?;但游戲進程為3的時候表示玩家已經(jīng)該離開新手村了,這時新手村的NPC都會對玩家的離開表示不舍。
總之,利用游戲開關(guān)和游戲變量,配合多個事件頁的運用,你就可以制作出更復雜的任務流程。在這里留下一個作業(yè):
從NPC士兵處接受任務,在房子里為士兵取得一個恢復藥劑。但房間的門是緊鎖的,需要和NPC老爺爺對話來獲取鑰匙。每次和老爺爺對話都有1/4的幾率獲得鑰匙。最終將恢復藥劑交到士兵手里,任務完成。
下一期教程中我會帶領(lǐng)大家進行復雜的任務流程制作,使這個樣例看起來更像是一個成熟的游戲。為此,你需要做如下準備:繪制新的地圖“森林”,森林中有一片空地和小房子。
<a>如果您喜歡本教程或者對游戲開發(fā)產(chǎn)生了興趣,不妨關(guān)注我避免錯過更新動態(tài)。</a>另外,在本系列教程結(jié)束后我會進行Unity3D入門教程的編寫,如果有喜歡吧Unity3D引擎的朋友也可以和我提前交流。
最近一直加班,教程寫作過程可能過于倉促,如果您有任何問題請私信我留言,我會盡快回復。合作/授權(quán)/約稿請私信聯(lián)系,不要向公眾號后臺發(fā)送消息(微信公眾號還在建設,我不常登錄)。另外,由于工作壓力太大本人打算賺點外快就跳槽,如果有意向找我商談約稿或出版的事宜,請用私信砸我,謝謝!
已授權(quán)“版權(quán)印”進行版權(quán)保護。獲取授權(quán)
<a>TBC 未完待續(xù)</a>
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。
相關(guān)閱讀更多精彩內(nèi)容
- 我是Lem0,自學倡導者,執(zhí)迷于“不務正業(yè)”,被批評“旁門左道”。我注冊并使用簡書,希望能夠記錄一些我記不住的事情...
- 我是Lem0,自學倡導者,執(zhí)迷于“不務正業(yè)”,被批評“旁門左道”。我注冊并使用簡書,希望能夠記錄一些我記不住的事情...
- 引言 游戲開發(fā)分為客戶端和服務端,服務端和客戶端的邏輯很相似,但是服務端更多在于數(shù)值計算和校驗,客戶端更多在于面向...
- 我是Lem0,自學倡導者,執(zhí)迷于“不務正業(yè)”,被批評“旁門左道”。我注冊并使用簡書,希望能夠記錄一些我記不住的事情...
- 與用戶更好地進行溝通 更便捷的方式來獲取用戶評價 這可能是iOS10.3中最受產(chǎn)品喜愛的新特性了吧。蘋果在iOS1...