我是Lem0,自學倡導者,執(zhí)迷于“不務正業(yè)”,被批評“旁門左道”。我注冊并使用簡書,希望能夠記錄一些我記不住的事情,或者與大家一起共享知識,共同學習。
往期回顧(點擊鏈接訪問):
「從0開始:開發(fā)自己的游戲[0]」
「從0開始:開發(fā)自己的游戲[1]」
「從0開始:開發(fā)自己的游戲[2]」
在上一期教程中,我?guī)ьI(lǐng)大家學習游戲項目文件夾下各子目錄文件夾的用途以及素材規(guī)格。在本期教程中,我會開始講解游戲劇情的制作,從本期開始的后續(xù)幾期教程內(nèi)容將貫穿游戲線性流程、游戲中的主線任務、支線任務等等游戲進程的制作。所以不妨請喜歡本系列教程的朋友們關(guān)注我,避免錯過更新動態(tài)。
如果您沒有看過之前的教程,或者在閱讀本文時發(fā)現(xiàn)自己已經(jīng)記不起以前的一些內(nèi)容,建議您先查看往期的回顧,再繼續(xù)本教程以確保效率。
3、學習造人 - 添加NPC和簡單的游戲事件
在一個游戲中,游戲世界里的生物往往由玩家和NPC(不可操控角色)構(gòu)成。玩家和NPC之間的交互已經(jīng)是RPG游戲的固定模式之一,幾乎每個RPG游戲都會設(shè)計或多或少的可交互NPC。甚至,類似于《輻射3》、《上古卷軸5》這樣擁有龐大世界觀的游戲中,NPC甚至對玩家有“情感”的概念,而且NPC的性格也決定了不同的NPC會對玩家的某一行為做出不同的反應。
在本期教程,我們就來試著添加NPC和簡單的游戲事件。
那么什么是游戲事件呢?我給游戲事件的定義是:在游戲中,由玩家或者游戲邏輯本身觸發(fā)的、為達到推動游戲進程或完成某個游戲動作的行為。比如,在商店完成一次交易、走進傳送門傳送到另一個地點、向NPC交還已經(jīng)完成的任務等等都屬于游戲事件。
比如,在我們第2期教程中已經(jīng)完成的室內(nèi)和室外地圖建立一個移動事件——在室外地圖的時候可以走進綠色屋頂?shù)姆块g門,從而讓玩家跳轉(zhuǎn)到另一個場景——室內(nèi)。
首先我們要切換編輯模式為“事件模式”。切換到事件模式之后,你無法繪制地圖,并且地圖被劃分成不同的小方格。你可以在每個小方格中都建立一個游戲事件。
我們選中綠色屋頂?shù)姆孔?,在黑洞洞的拱形門洞上單擊右鍵,選擇快速新建特定事件,并在子菜單中選擇門扉。
在彈出的窗口中,你可以選擇門的樣式——雙擊“門扉圖像”。因為我們?yōu)閴Ρ谏袭嬌狭斯靶蔚拈T洞,因此我們在這里需要選擇拱形門。
目標位置為玩家打開門后通向的地點。我們需要選擇為室內(nèi)地圖的門口位置。如圖:
完成后點擊確定,一個門扉事件就已經(jīng)被建立了。我們可以看到地圖上,綠色房子的墻壁上已經(jīng)出現(xiàn)了一個拱形門的方塊。我們可以雙擊這個方塊進而打開事件頁。
我們來詳細講解這個被我們快速構(gòu)建的門扉事件。這個窗口中,左上角的【名稱】框中的名稱可以隨意編輯,這是為了防止開發(fā)者忘記這個事件的作用而進行的備注。
【出現(xiàn)條件】中為當前的游戲事件出現(xiàn)需要滿足的條件。在這里我們不需要設(shè)置任何條件,因為這個門將一直存在,不需要達成特定條件才出現(xiàn)。而相反,其他一些事件可能需要設(shè)置出現(xiàn)條件——比如送信任務中,你必須接受了任務或者持有信件時,收信人才會出現(xiàn)在地圖上。
【圖像】為事件的圖像,雙擊可以選擇其他圖像,如果設(shè)置成人形,就相當于建立了一個NPC。在某些情況下,你也可以設(shè)置圖像為空,這樣事件會存在在游戲中但不會顯示出來,我們經(jīng)常這樣實現(xiàn)一些游戲邏輯,比如進入在兩次進入城鎮(zhèn)的時候根據(jù)劇情差異播放兩首不同的BGM等等。
【自主移動】中可以為事件設(shè)置移動的方式。比如《口袋妖怪》中的NPC經(jīng)常以不同的方式在地圖上隨機移動或按照指定的路線移動,就是使用這個功能模塊達成的。在這個例子中,我們可不希望房門也隨機移動,所以我們需要將移動方式設(shè)置為“固定”。在其他的幾種移動方式中,“接近”的意思是不斷接近玩家,在某些躲避游戲中也經(jīng)常使用。
【選項】中有四個選項。其中步行動畫的意思是該事件在移動的時候?qū)⑿凶邎D循環(huán)播放形成行走動畫;踏步動畫是即使該事件不移動也播放行走動畫;固定朝向是該事件的朝向不會更改(比如如果該事件是一個NPC,那么勾選此項將導致NPC的臉只朝向固定方位);允許穿透是允許該事件和其他事件碰撞后穿過彼此,類似于其他游戲引擎中的“非碰撞體”概念。
【優(yōu)先級】略過,你可以將鼠標懸停在選項上查看說明,很簡單。
【觸發(fā)條件】中有多種觸發(fā)條件。你可以懸停鼠標在這一部分,來查看不同觸發(fā)條件之間的區(qū)別。需要注意的是,觸發(fā)條件和剛才說過的出現(xiàn)條件不同,即使沒有達到觸發(fā)條件,該事件還是會出現(xiàn)在地圖上。但如果沒有達到出現(xiàn)條件,則該事件是不會在游戲中顯示和執(zhí)行的。
在右側(cè)的【執(zhí)行內(nèi)容】中,是該事件的“代碼”。我之所以說RMVA這款游戲引擎適合初學者,就是因為它對不會編程的代碼苦手很友好。這些代碼本來應該由程序員編制,RMVA不僅簡單地將代碼命令化,而且還使用了大家熟悉的可讀文本,而不是編程語言。
【執(zhí)行內(nèi)容】中的代碼文本我們稱為事件命令或事件邏輯。我們看看這個門的事件命令:
一旦事件被觸發(fā),事件命令就會按次序執(zhí)行。在這個門扉事件中,首先會播放開門的聲效,然后是一串“移動路線”指令用來播放開門的動畫。緊接著玩家會向前移動一步。之后會播放腳步聲的聲效,并且進行場所移動,移動到室內(nèi)地圖的指定坐標。
我們可以將玩家的初始位置設(shè)置在室外地圖上,然后測試游戲,走到綠色房子前,果然,主角打開了門并且進入到室內(nèi)。
測試結(jié)束之后,我們來新建一個事件。在事件編輯模式下,雙擊一個空白的小方格建立一個新事件。在彈出的事件頁中,我們選擇一個看著順眼的NPC圖像。在右側(cè)的【執(zhí)行內(nèi)容】列表中,我們雙擊空行,添加一條新的【事件指令】:顯示文字。
我們雙擊角色肖像圖來選擇角色的面部肖像。如果大家還有印象,我在上一期教程中說過,角色肖像圖儲存在Graphics => Faces文件夾下。
我們在文字框中輸入“歡迎你,冒險者。”
之后點擊確定,完成文字顯示命令的添加。這時,你的事件頁應該是下面的樣子:
之后我們可以設(shè)置該事件的【自主移動】類型為隨機,移動的速度和頻率都可以隨機調(diào)整。完成設(shè)定之后點擊確定關(guān)閉,一個新的NPC(其本質(zhì)依然是游戲事件)就被創(chuàng)建好了。
測試游戲后,我們的玩家已經(jīng)可以和NPC進行對話了:
至此為止我們就已經(jīng)學習了游戲事件的創(chuàng)建。我們將在下幾期教程講解復雜游戲邏輯的實現(xiàn)。也就是事件指令中的【流程控制】部分和【條件控制】部分。
大家也可以隨意測試其他的事件指令。比如我留一個小作業(yè):創(chuàng)建一個NPC富豪,每次和富豪對話一次會獲得100金幣。創(chuàng)建另一個NPC乞丐,每和乞丐對話一次可以選擇是否施舍乞丐,是的話則乞丐會提升主角1級。(關(guān)于如何選擇施舍乞丐與否,你可以在事件指令中【信息】=>【顯示選項】中完成設(shè)置)。
希望大家能夠多多實踐其他的事件指令,我重點只講【流程控制】部分和【條件控制】部分。由于我工作繁忙,我盡量不涉及其他過于簡單的內(nèi)容。如果大家有任何疑問務必讓我知道,我會盡快進行解答。如果您喜歡這一系列教程,或者對游戲制作產(chǎn)生了興趣,請您關(guān)注我避免錯過更新的教程。有任何疑問或者批評,煩請私信聯(lián)系。
<a>素材公開計劃:</a>如果本系列教程反響較好,我會逐步公開我制作游戲時用到的免費非商業(yè)授權(quán)素材,也可以推薦一些支持商業(yè)授權(quán)的素材網(wǎng)站(日本網(wǎng)站居多,需要VPN)。
<a>未來游戲計劃:</a>請點擊這個鏈接訪問關(guān)于【未來游戲計劃】的內(nèi)容。
由于近期工作繁忙,教程的寫作過程可能過于倉促,有任何沒有看懂的地方或者疑問,請務必讓我知道,我會盡量進行回復。如果您愿意支持我不斷進行開源和創(chuàng)作,也可以稍稍打賞我一下,Lemo在這里謝過大家的關(guān)注,希望各位能夠在這一系列小小的教程結(jié)束之后,完成自己兒時開發(fā)游戲的夢想。
我是Lem0,自學倡導者,執(zhí)迷于“不務正業(yè)”,被批評“旁門左道”。與大家分享英語/編程/高效自學的所思所想。
已授權(quán)“版權(quán)印”進行版權(quán)保護。獲取授權(quán)