作者:Eric Schwarz

距離我開始創造《龍騰世紀:起源》的模組“Thirst”已經過去了一年多的時間。起初我是基於一個非常特別的遊戲理念開始創造——在一次短途地牢冒險中,玩家所控制的角色從原來的考古學家轉變成一個可怕的惡魔,並不得不吸取別人的靈魂才能獲得生存,但這最終卻發展成一個更加標準且傳統化的電腦角色扮演遊戲模式。

“Thirst”並不是我所創造的第一個模組,但是這卻是一次非常有幫助的經歷,將帶我體驗到“真正的”遊戲開發實踐,即推動我學會如何使用C++語言撰寫指令碼,如何構建一個時間跨度較長的故事結構,如何創造遊戲關卡以平衡遊戲玩法和現實主義,以及如何在各種變數間處理複雜的互動元素等。

我將在此討論我所遇到過的一些挑戰,以及我是如何克服這些挑戰並從中學到何種經驗教訓。

事先掌握工具的使用方法

“Thirst”之所以花費了我如此長的時間(撇開老舊的系統崩潰導致我不得不重頭開始工作不說)是因為我一直在不斷摸索著各種工具的使用方法。《龍騰世紀》工具箱是一款非常出色的軟體,並基於資源型別而擁有不同編輯器;但是儘管如此,學習如何執行特定的行動,如何更好地編輯遊戲檔案以創造出非標準結果,如何有效地設定指令碼以推翻任何不合理的行為等都需要我投入更長時間才能得以掌握。

toolset(from gamaustra)

toolset(from gamaustra)

(《龍騰世紀》工具箱是一款非常出色的軟體,但是我們卻必須花費數月時間才能完全掌握其學習曲線和工作流程。)

如此便導致“Thirst”中出現了許多草率的指令碼設定。早期,當我在編寫任務時,我使用了更多情節變數而不是那些對追蹤進度有幫助的內容。舉個例子來說吧,玩家所面臨的一個任務是必須從一名囚犯那獲得相關資訊,而反之囚犯也希望因此獲得自由。這時候玩家將面臨多種選擇:賄賂獄卒,撬鎖,偷鑰匙,殺死門衛等等。而各種獨特的選擇也需要各種變數,但是除了一些細節的不同,玩家這些行動最終都會促成相同的結果,即玩家能夠或者不能釋放囚犯。而如果遊戲中未設定一個單獨的變數去追蹤囚犯是否獲得自由,之後的指令碼內容將會變得更復雜,並且我將不得不費時間核對4至5個變數而不只是1個變數。如果我有足夠的遠見,也許便能夠避開這一問題了。

從玩家的角度進行思考

當我們以創造者角度進行思考時,我們的腦中總是會湧現出許多想法。通常這些想法總是能夠推動我們創造出一些特定的場景——如創造出多種結果或任務解決方法,並推動事物的有效互動等(作為玩過多種RPG遊戲的我來說這些事真的都不難)。但是當我需要真正去執行這些想法時,我卻會發現結果常常不如玩家所願。

在“Thirst”的一開始,玩家將會遇到一個遭遇搶劫的商隊,並在此遇到一個倖存者能夠闡述一些背景故事,如此便推動著玩家開始接下來的探索任務。一開始聽起來好像很不錯,但是當我開始進行遊戲測試時,我發現我的一個好友雖然不斷地嘗試著完成這一模組但是最終卻導致了角色的死亡,因為他將自己的角色與另外一個死屍混淆在一起(遊戲邦注:儘管這個死屍的位置設定是合理的)。而為了解決這一問題我就需要使用一些特定的技巧,如在死屍周圍設定火把,以此照亮該區域並突出死屍,或者當玩家靠近時新增彈出對話方塊(如“請幫幫我”之類的),但是經歷了這次的教訓後我卻不得不重新思考特定角色的地理位置以及之後的關卡布局等問題。

daorigins(from gamasutra)

daorigins(from gamasutra)

(像這樣的早期挑戰將加強角色開發,以及探索環境和搜尋物資等積極行為的價值。)

有些時候這種設定能夠帶給玩家更多選擇。早些時候,我發現建立一系列與玩家維繫在一起的遊戲玩法非常重要,因為如此玩家便能夠很容易知道哪些內容對自己有利而哪些有害。在角色扮演遊戲中,特別是當玩家在每個場景擁有多個屬性,技能並面對多種結果時,玩家便很容易假設“所有的一切”都是對自己有幫助的——但是事實上,為了保持遊戲的有序進行以及故事的順利發展,設計師總是會在這種可能性中新增種種侷限因素。

舉個例子來說吧,當玩家遇到受傷的非玩家角色時他將面臨5種不同的選擇(喂他治療的植物,給他健康藥劑,施以治療咒語,使用生存技能等。),但是大多數情況下游戲都不可能提供給玩家如此廣的選擇,不過我還是使用了一些提示幫助玩家做出選擇,如“嘿,你可以在對話中使用特定的道具!”或者“你的非戰鬥技能具有價值!”之後我還面臨了一個類似的挑戰,即使用各種方式穿越柵欄將能夠告知玩家,在遊戲中不僅技能很重要,種族和屬性也同樣重要(遊戲邦注:例如擁有較大的力量能夠讓玩家暢通無阻,而扮演較小的種族,如小矮人或精靈則能讓玩家更有效地解決謎題)。

預先透露重要資訊

“Thirst”是一個突出強調選擇和結果的模組。儘管它不像《阿爾法協議》那樣,“任何內容都可以改變”遊戲故事,但是其中的一些小細節卻也將彼此影響。舉個例子來說吧,幫助角色進行早期的支線任務將能夠在之後的任務中創造出一個替代選擇,讓玩家能夠繞開其中部分內容。而在另外一個例子中,如果玩家能夠打敗一個非常強大的敵人,他便能夠跳過其中一個主要任務。最明顯的可能是,這兩種主要的任務線是相互排斥的,並且它們將直接且長期地影響著故事的發展。

然而,關於這種結果的一大問題便是,玩家可能不喜歡這種突如其來的驚喜。我們總是很難定義什麼是不受歡迎的內容,例如與其他角色展開戰鬥的預先行動到底是一種獎勵還是懲罰?而明確這一結果又非常重要,因為這將能夠確保玩家不會在遊戲中覺得自己被欺騙,或者抱怨自己的任何決策都得不到回報。但是這也不是說遊戲中不允許壞的結果存在,而是當出現這些不好結果時,遊戲必須讓玩家能夠清楚自己所做的任何行動對於今後挑戰將有何影響。

daorigins (from gamaustra)

daorigins (from gamaustra)

(遊戲可以預先透露一些重要的決策,從而讓玩家覺得遊戲程式更加自然且富有邏輯。一些較小的遊戲可能不會透露這些資訊,但是對於玩家預先行動所給予的較小獎勵(或懲罰)卻也能夠加強遊戲世界的連貫性。)

而對於兩個主要任務線(城鎮鏡戒系統和黑社會)間的較大選擇,我便不能為玩家創造驚訝而已了。相對來說,這是一個重要的決策,遊戲玩法和遊戲故事的結果將能夠影響起整個模組的核心內容。因此我就必須謹慎地傳達這一決策,即通過新增對話暗示而幫助一方更好地排除其他對手。當玩家發現他們以前的同盟背叛了自己時,整個遊戲世界,故事和遊戲玩法將能有序地連線在一起,而不再只是充斥著一些不可預見的結果,而儘管玩家仍然不喜歡這種設定,他們也不再會認為這是一種卑鄙手段了。

當然了,玩家也需要做好迎接那些重大後果的準備。就像之前所提到的遊戲玩法間的關係是取決於可行的選擇,所以我們必須說明這種關係所圍繞的結果。所以我便決定在模組的介紹部分引入一些關係明確且相互依賴的較小結果。例如在早期階段玩家將在一個小酒館中遇到一些僱傭兵,而在之後當玩家再次遇到他們時,他們有可能會在玩家執行任務中提供一些有用資訊,也有可能會對玩家發動攻擊。還有一種結果是玩家幫助商人逃過貿易禁令——如果玩家幫助了這名商人,他不僅能夠再次出現在城市中,同時他也將提供給玩家一個新的任務,或者對於玩家另外一個不相干的任務提供相關資訊。但是在另外一個早期任務中卻存在一個離開腐敗的城市官員的選擇,這將導致玩家展開暗殺行為,而阻礙了商人的第二次任務行動(也就是之前所提到的)。遊戲並未預先透露這些結果,或者這也不是什麼重大結果,但是在玩家看來它們卻近乎相同,特別是隨著故事的發展其重要性不斷上升之時。

不要建立你的技術和系統無法支援的遊戲玩法

我之所以開始使用《龍騰世紀:起源》模組工具是因為它是我遇到過的少數優秀的RPG工具之一,並且那時候還存在一個充滿活力的模組社群(很不幸的是今天已經看不到這樣的社群)。我想要創造一個能夠提供給玩家各種選擇的模組,並帶有各種具有引導性的結果——但是當我在創造“thirst”時,《龍騰世紀》的遊戲機制和系統的缺陷卻暴露無遺。

我所遇到的最大問題之一便是遊戲不能有效地執行潛行和偷盜技能。歸根結底是因為《龍騰世紀:起源》是一款圍繞著地牢爬行和戰鬥的遊戲,而這種偷盜技能很難在此體現出真正價值。儘管我嘗試著去創造一些類似於潛行的遊戲玩法,並且也讓玩家能夠在此面對偷錢包,撬鎖等機制,但是所有的一切卻仍顯得不夠成熟,因為核心規則本身還未得到合理的完善。而重新塑造遊戲角色系統和規則則是我力所能及之外的任務,就其本身而言不僅需要投入大量的時間,進行各種遊戲測試,同時我們還需要去平衡創造出全新內容是否真的具有價值性。

daorigins (from gamaustra)

daorigins (from gamaustra)

(從根本上來看,《龍騰世紀》是一款圍繞著戰鬥展開的遊戲,而我也決定在專案規則集和引擎不斷變強的同時往遊戲中新增更多戰鬥內容。)

我正在努力解決的另外一個問題便是處理特定的任務結果。我本來應該在遊戲中,甚至在對話中新增更多靈巧性檢查或潛行檢查而讓玩家體會到更多像《頹廢年代》中“朝著守衛射箭,在他分心時刺穿他的臉部,”的橋段,但是因為《龍騰世紀:起源》是以完全的3D特寫視角呈現出來,所以加上這些橋段則會帶給玩家一種笨拙感。老實說,投入大量時間而為玩家呈現出一小段動畫序列並不是一種消耗時間的好方法。

甚至當我在遊戲中新增了一些橋段,如玩家在對話中偷東西時,玩家甚至未能發現這些內容——儘管遊戲機制明顯地呈現在那裡,但是我卻不能清晰地表達出這些額外的橋段。同樣的情況也出現在配音過程中。“Thirst”並沒有任何配音演員,但是它卻擁有《龍騰世紀》般特寫對話鏡頭以及角色動畫(儘管這些看起來不是那麼協調)。實際上“Thirst”擁有上千條對話線,而如果我親自為它們進行配音真的很不靠譜,我不僅需要為此增加大量的開發時間,同時還需要處理一個混亂的指令碼(我並不是一個出色的對話作者,我也總是需要反覆修改各種內容),所以我必須找到足夠的配音演員(我不滿意那些非專業的演員陣容,但我在此無意冒犯那些給自己的模組作畫外音的人)。但是如果我使用早前的2D引擎,或者像《無冬之夜2》中的文字對話,這些問題也就迎刃而解了。

總結

總之,“Thirst”對於我來說是一個巨大的任務,我也很高興看到自己能夠發行其中的某些內容——儘管我還未能完成最終版本的模組設計。在整個開發過程中我真的獲得了許多寶貴的經驗教訓。現在我不僅熟悉了各種工具,掌握了自己的優勢和劣勢,同時也瞭解了整個工作流程,所以我們便能夠更加有效地完成接下來的工作。

via:遊戲邦/gamerboom