從入門到精通:如何零基礎做一款Roguelike遊戲?

在遊戲行業,Roguelike是最受獨立遊戲開發者青睞的玩法之一,憑借隨機生成的地圖、不可挽回的單向進程、非線性故事和複雜的系統,這類遊戲的重複性極高,近年來國內獨立開發者也對Roguelike十分感興趣。

而且比較特別的是,這個品類的開發者與玩家之間的界限很模糊,不少都是因為熱愛某個遊戲,想要製作自己的版本而從玩家轉為開發者。Grid Saga Games工作室的Josh Ge過去七年都在做Roguelike遊戲,而且過去五年的全職工作都是從事這類遊戲的研發,在網絡上也形成了全球最大的的Roguelike開發者社區(r/RoguliekDev)。

最近,Josh根據自己過往的經歷整理了一份非常詳盡的新手開發者指南,對於希望做Roguelike的開發者甚至玩家都是極有幫助的:(Roguelike是RPG遊戲的一個分支,詳細解釋請參考Roguelike)

有英文基礎的讀者可以直接看視頻(約30分鐘)

幾年前,在第一次Roguelike慶祝會上,我講了自己如何成為一名開發者的經歷,但這一次想說的是,如何讓所有人都能做Roguelike遊戲,對於Roguelike玩家們來說,了解一些研發內容是很普遍的事情。我們在玩遊戲的時候受到啟發,然後想要做一些更好的、不一樣的體驗,或者只是為了想要做屬於自己的東西。

這篇文章並不是一個新手教程,更多的是告訴你如何開始,以及在做Roguelike遊戲研發過程中的一些建議。

做一款Roguelike遊戲是非常困難的,不亞於你在充滿障礙的地牢裡冒險,在下面的圖表中,你剛開始的時候就站在底部,頂部“有趣可玩的遊戲”就是你的目標。

你的研發之路很容易像這張圖一樣,由於缺乏清晰的路徑, 而在不同的方向、不同的系統投入大量不必要的時間。

有時候,你可能會在完成研發的時候發現,並沒有達到最初的目標,但為此付出了什麽代價?可能多年的努力都被浪費,甚至還可能因為壓力而掉光了頭髮。在研發過程中,你很容易走入死胡同、卡在某個地方,意志消沉,甚至放棄研發。

你所需要的是達成目標的直線路徑,有了基礎的規劃並且了解你要去哪裡,就能夠有非常良好的開始,然後,當你擁有了又去的核心遊戲之後,在根據自己的意願為之拓展。

開始的時候就要直指目標,然後打下堅實的基礎。

在這篇文章裡,我主要講述的是基礎內容,比如怎樣以更高的成功率穿過這個地牢,尤其是當你開始只有熱情、但又不確定如何去做的時候。

本文共分為七個部分,覆蓋:編程語言、項目規模、核心機制、7DRL、研發資源、玩法吸引力、建議等方面。

編程語言:沒有硬性要求

在開始研發的時候,人們問到最多的問題是,我該用什麽語言做Roguelike遊戲?

答案其實很簡單:任何一種語言都可以。

如果把回答延長一些,編程語言沒有那麽大的影響。如果你已經學過一些語言,那是很好的情況,隻管用就好,語言是達到目標的一種方式,而且此前已經有人用各種語言做過Roguelike遊戲。

但這並不是說新手就沒有更簡單的開始方法,如果你不確定,那麽我建議你使用Python:

對於Roguelike初學者,Python是被推薦最多的語言,因為它的代碼用起來簡單直接,通過上圖的代碼就能一目了然,它沒有太多奇怪的語法,即便是不會編程或者Python語言,也能通過代碼看到它是做什麽用的。

但是,不要擔心代碼簡單會成為限制因素,因為你仍可以用Python做很出色的事情。

《Ultima Ratio Regum》就是用Python寫的,而且是一個美麗而龐大的開放世界項目,目前還沒有完成,但已經有非常不錯的效果。

實際上用Python研發的Roguelike遊戲有數百款,總的來說,這個語言可以讓你有更順利的開始,隨後我們會講如何用它開始研發。

像C和C++這樣更為複雜的語言,它們已經流行了很多年,意味著你將找到大量的相關資源和參考資料。我使用的是C++,但唯一的原因是對這個語言比較熟悉。對於新手,我不建議用它,尤其是當你的目標只是做一款Roguelike,而不是投入大量的時間做debugging,使用Python的開發者也很多,所以你仍然可以找到大量資源。

項目規模:從小遊戲開始

對於新手開發者來說,另外一個問題就是打造“夢想中的Roguelike遊戲”,這應該是你的首要目標嗎?當然不是。

剛開始的時候,你需要學習很多東西,可能會犯一些沒有意識到的錯誤,所以最好是先積累一些經驗。更重要的是,遊戲研發的重點在剛開始和最後結束的時候有很大差別,因此最好是至少先過一兩遍流程,然後再考慮做更大的項目。在開始的時候把目標定小一點,也是讓你的努力有結果呈現的最佳方式。

以我們開始說的地圖為例,你首先要專注的是達到目標的直線路徑:

主要的研發過程隻包含少數必要功能(戰鬥後面之所以有問號,是因為Roguelike裡並不一定要有戰鬥)。

通過這些功能,你可以做一個完整的遊戲,也可以打下堅實的基礎,為隨後的玩法拓展提高做好準備。其他所有可以探索的領域都是很吸引人的,但一定記得不要離主路太遠,這就像是玩一款Roguelike遊戲:如果你開始就毫無目的的在未知區域遊蕩,隻做自己喜歡的事情,而不是應該做的事情,除非運氣非常好,否則很容易讓角色掛掉,甚至是多次死亡。當然,在玩遊戲過程中,這可能是一種有趣的經歷,但在做Roguelike研發的時候,這種體驗就完全是另外一回事了,因為這意味著你需要投入更多的時間,所以一定要保持專注。

比較好的消息是,你在做Roguelike的時候可以一點一滴積累,如果你覺得對於遊戲有用,那麽這些功能實際上都是一些分散的系統組合在一起的。

在此之後,你可以不斷地對遊戲進行拓展和調整,最好是有玩家反饋。

最後你可能做出很多東西,然後還在問“時間都去哪兒了?”

如果從整體來看一款Roguelike遊戲,可能會讓人望而生畏,但實際上你需要的只是一個計劃和持之以恆,剛開始做小項目很重要,因為你可能會犯錯,而且如果剛開始就做大遊戲,失敗的概率很大。

核心機制

那麽,一個小的Roguelike遊戲真正需要的是什麽?只需要有一個核心玩法就可以,這是你積累經驗的開始,最好是用一句話就能解釋清楚,這也是你要做創意原型的東西,唯一的要求就是趣味性。

這個遊戲對於Roguelike有什麽獨特的理解?如果你的遊戲只有這個功能,它是否有趣?如果項目再大一點,這個功能是否還能作為核心玩法支撐其他功能?考慮玩家們在遊戲裡做什麽,這些都是與核心玩法相關的。如果重複整個流程並沒有趣味,那麽你在它的基礎上做什麽都沒有意義。

所以在初識創意原型裡,隻加入必要的功能,並且對核心玩法進行測試。另外,上面的動圖看起來可能有些複雜,但這只是在核心玩法上有可能拓展的方向,Roguelike遊戲哪怕是很簡單,也一樣可以很有趣。

為了探索更多的功能,我們來看看7DRL

7DRL(即七天完成一個項目研發)

這個詞組的意思是在七天內做一款Roguelike遊戲。每年三月份左右的時候,都會有開發者做這樣的嘗試,迄今已經延續了14年。這是很好的體驗,因為只要完成研發,就意味著有一部分人體驗過你的遊戲,並且可能留下了反饋。有些賽事的評委還會在不同的領域給遊戲打分,不過大多數人都把7DRL當作個人挑戰,而不是競賽。

在每年的這種活動中,都會有超過100款Roguelike遊戲出現,它們很多都很有趣,雖然我不建議你的第一個項目做7DRL(沒必要這麽早承受壓力),如果有一些經驗的話,參加這個項目也是不錯的嘗試,尤其是你了解Roguelike需要說明,特別是技術方面,因為在有限的時間內完成研發可以幫助你提高效率。

我們來看一些案例:

《Knight》主要就是讓玩家控制動量,你大多數時候都是騎在馬上,你只能移動中間的藍色小方塊,而且每個回合只能一個空間,你移動到的地方也就是下一個回合所在的地方,這意味著玩家必須提前規劃,計算你角色路過這些地方的時候,揮劍所帶來的攻擊傷害。

之所以喜歡這個遊戲,是因為你可以從名字裡看到玩法(下載地址)。玩家在遊戲裡是一艘太空飛船,在你自動攻擊範圍內敵人的時候,敵人的炮彈移動速度很慢,你可以看到他們下一個回合的彈道,所以你可以持續攻擊,同時避免被擊中。

之所以喜歡這個遊戲,是因為你可以從名字裡看到玩法(下載地址)。玩家在遊戲裡是一艘太空飛船,在你自動攻擊範圍內敵人的時候,敵人的炮彈移動速度很慢,你可以看到他們下一個回合的彈道,所以你可以持續攻擊,同時避免被擊中。

在《Seven Day Band》裡,你可以一邊玩遊戲一邊創作自己的Roguelike。四周都是新的未知敵人和物體,在第一次遇到他們,或者這些物品變得重要的時候,你需要給他們取名和設置能力。

在這款遊戲裡,你扮演的是災後世界裡的酒精,遊戲裡的酒精消耗和大多數的體驗有關,完全取決於你的選擇(這是一個故事向的遊戲)。

在《Drakefire Chasm》裡,玩家扮演一條年輕的龍,在充滿怪獸、冒險和其他龍的洞穴裡作戰,但遊戲裡沒有物品,你只需要升級龍的能力,吃掉自己的敵人然後變得更大更強,這款遊戲目前還經常更新。

在遊戲裡你要利用角色吸血鬼和人類形態下的不同能力,包括與動態光的互動,這個項目最後變成了更大的商業遊戲,而且一年前發布到Steam平台之後,表現非常不錯。

這是最初的Cogmind 7DRL,你是一個機器人,需要用找到的部件和其他機器人拆下來的零件從頭開始建造自己,由於物品破壞極大,所以你需要經常重塑。很明顯,這個項目最後也成了一款更大的商業遊戲,我從來沒有想過六年前做的7DRL居然會成為工作內容的一部分,但我很高興參與了這個活動,因為完善核心機制是非常有趣的事情。

2018年的7DRL活動上,我做了《Polybot-7》,它有點像Cogmind,但玩法有很大不同,因為核心機制發生了很大改動。在這款遊戲裡,玩家們不再選擇物品,附近的物品會自動飛過來並且吸附到你身上,你甚至無法移除它們,除非遭到了破壞。我最初的打算是把它做成一個小號的Cogmind,但在活動結束的時候,我一直覺得這款遊戲不值得做,因為它還需要真正的吸引力才能顯得獨特,也就是一個全新的核心玩法。但最後帶來的體驗卻很有趣,也增加了很多的玩法,為此,我還專門做了對比,並且為整個研發過程做了複盤(鏈接)。

所以,儘管這些遊戲可能不止一個玩法系統,但很明顯,他們都只是核心玩法,與很多其他的7DRL項目一樣脫穎而出。

非7DRL案例

我們還是來看一些非7DRL項目,這些遊戲用了很多年的時間研發,而且也包含大量的系統,但你仍然可以看出他們是如何圍繞核心玩法不斷進化的:

在《Mage Guild》裡,有最出色的化學系統,你可以混合任意兩種物品,不管是藥品、怪物掉落還是任何東西,都可以得到有趣的新物品和效果。

在《Demon》裡,你招攬大量的惡魔作為追隨者,並且訓練它們。

這個遊戲完全是通過物品推動遊戲進度。

這款遊戲是基於遠程戰鬥和定向facing,在其他Roguelike遊戲裡並不多見。

《NetHack》的已經開發者曾告訴我,這款遊戲的核心機制是,“如果看起來它可以做某些事,那你就很可能做到”(這個案例看起來沒有核心玩法,而且不適合新手開發者,但實際上它最初的核心玩法很簡單)。

遊戲研發資源

做Roguelike遊戲裡研發,最重要的一件事就是獲得信息,這包括學習基礎技能、回答問題、隨後參與更高級的話題,或者只是為了找靈感。

你遇到的困難會與其他開發者不一樣,因為每個人都有不同的技能和個性,但你可以使用在線資源和好友克服這些障礙。雖然可能沒有人真正和你一起做項目,但其他人可以提供你需要的建議。但前提是,你得去問,這用了我很長時間才學會,而我剛開始的進度很慢,因為我從來不接觸其他人,所以在這裡要提醒新人,只要你開口,有大量的幫助等著你。

我們來看一些比較有用的資源:

r/RoguelikeDev

Reddit平台上的RoguelikeDev論壇(地址)是世界上最大的Roguelike開發者活躍社區,我們形成了熱情互助的社區氛圍,而且右邊欄有大量不同的資源。

在這些資源裡,有各種語言的教程和圖書館,有些成員曾經是用過這些資源,還能回答你遇到的問題。

此前我提到用Python開始研發,而最簡單的方式就是叫做libtcod的資源庫,我們實際上有很多新手教學。

libtcod logo

和很多的遊戲庫一樣,libtcod處理的是基礎的功能,比如遊戲窗口、滑鼠和鍵盤支持、Bitmap字體、調色板以及顏色控制。但它也會包括很多Roguelike特定的功能,比如地圖生成、FOV和尋路系統。

我此前展示的兩款Roguelike遊戲,《Ultima Ratio Regum》和《Temple of Torment》都是用這些新手教學開始做的,最終兩款遊戲都作出了獨特的功能,libtcod是非常不錯的資源庫,而且迄今為止已經持續更新了十年。

新手開始的另一個方式是參加r/RoguelikeDev暑期code-along活動,如果需要更多的動力和節奏管理,你還可以與其他開發者共同學習libtcod教程。

我們已經做了很多年的新手指導,開發者對此興趣很高,每年都有100人左右參加。技術層面來說,你並不需要使用libtcod或者Python也能參加,很多使用其他編程語言的開發者也帶來了他們的Roguelike項目或者類似的教程。

在為期兩個月的活動結束時,你會做出可玩版本的Roguelike遊戲,以下是過去幾年參加活動的開發者做出來的樣本:

這是一個非常不錯的經歷,你基本上可以獲得研發Roguelike所需要的技術背景,然後充分發揮自己的想象力。

在活動的後期,我們還提供了FAQ環節,針對各種話題解決不同的研發難題,比如:

這些包括核心話題,比如規劃和動機、以及很多細節,比如普通的系統、策劃、各種各樣的事情。這些年間,我們有大量的開發者為FAQ做出了貢獻,包括很多的知名Roguelike開發者。

坦白說,有很多開發者經常在社區活動,還有很多人在做長期興趣項目,他們知識豐富而且樂於助人,我們還有Discord用於實時討論和求助(我們與r/RoguelikeDev論壇共享伺服器,所以你還可以發現很多人在其他頻道討論各種各樣的Roguelike問題)。

RogueBasin

更多文章

元氣騎士:冰霜家族最強合集,誰才是你的心頭愛!

一起來捉妖:法防最高的並不是軫水蚓,而是這3隻妖靈

LPL4支隊伍抱團研究LCK,Loken傷情照片讓人揪心