該文所述的Roguelike爲典型的Roguelike遊戲,而非帶着Roguelike元素的遊戲。php
如下內容爲他在今年Roguelike開發者大會上的發言文字版。html
引言node
幾年前召開的首屆Roguelike開發者大會上,我發表了一個關於本身如何走上開發者道路的演講,而今天,我想談談如何成爲一名Roguelike遊戲開發者。在玩遊戲的過程當中,咱們總會產生一種衝動,創造一個更好的遊戲或是本身的遊戲。此番演講並非一個教程,更多的是Roguelike遊戲的入門與建議。python
製做一個Roguelike遊戲可能會很是艱難,如同穿越一個障礙重重的地牢。在下面這張圖表中,你將在最底層開始本身的開發之旅,而頂部則是你的目標——一個有趣的的遊戲。web
你的開發之旅極可能就像這張圖同樣,缺少明確的設計思路,想到了個什麼有意思的玩法就往遊戲裏面塞,致使整個系統顯得臃腫不堪。編程
你可能不遺餘力也沒法到達圖中所在的目的地,而代價倒是你那一頭秀髮與大把的光陰。你本身走向了那些力所不逮的領域而後止步不前,最後被現實所挫敗,留下一堆爛攤子退出項目。app
開發者首先要作的是直奔目標。項目開始前開發者應當有個基本的計劃以及開發方向,從一些基本的內容開始作起,等到遊戲的核心創建起來後纔去考慮拓展那些你認爲有趣的內容。編程語言
在這篇文章中,我將主要介紹遊戲製做的一些基本知識,如何提升建造一個隨機地牢的成功率,尤爲是當你滿懷熱情殊不知從何着手的時候。編輯器
須要注意的是,這裏並不教授你如何停下手上正在開發的Roguelike遊戲。測試
編程語言
第一個同時也是最多見的一個問題:使用哪一種編程語言?
答案只有兩個字:任意。
換個複雜點的說法就是語言並不重要。若是你已經擁有某種編程語言的使用經驗,那就用它來開發遊戲。語言只是達到目的的手段,幾乎任何一種編程語言都有相對應的Roguelike遊戲。
若是你實在不肯定的話,這裏有個建議:
Python的代碼示例
Python的易上手讓它成爲了Roguelike新手的最佳選擇,在上面這段代碼中不會出現不少奇怪的語法,即使開發者不懂編程或是Python,他們一樣能看清楚它在表達什麼。
不過,不要由於「簡單」這個標籤而認爲Python拓展性差,你依舊可以利用Python做出精彩的設計。
《Ultima Ratio Regum》就是用Python編寫的一款開放世界遊戲,雖然遊戲並不完整但卻使人印象深入。
《Temple of Torment》一樣也是由Python編寫的
使用Python製做的Roguelike遊戲數以百計,很多開發者均表示經過Python入門,你的開發歷程會更爲順暢。
roguelike開發人員所使用的語言列表
固然,若是你能掌握C或C++這類較爲複雜的語言的話會更妥當一些,畢竟它們存在時間長、用戶多,相對應的,它的參考資料與諮詢渠道也更加普遍。C++是我常用的語言,這只是由於我對它更爲熟悉而已,但我不建議初學者入坑,尤爲是當你把目標設定爲製做一款Roguelike的時候,在不熟練的狀況下你將會花大把的時間在調試上。總之,python會更加適合於Ruguelike開發者,同行的存在也能保證你能獲取海量的資源。
Roguelike遊戲內容
初學者常常遇到的另外一個問題是:打造出本身理想中的Roguelike是不是開發者的第一目標?
個人回答是:NO。
新手入門每每會犯下很多本身都沒有意識到的錯誤,積累經驗對於他們來講更爲重要。更重要的是,遊戲開發的重心並非一成不變的,它會隨着進度的變化而變化,在啓動一個規模較大的項目桌子前,最好能有一到兩次的完整開發經歷。從小項目開始作起也更能體現付出所帶來的回報。
如今,讓咱們從新回到前面的Roguelike遊戲流程圖,咱們須要關注的元素主要有:
這一路徑涵蓋了一款Roguelike所應具有的基本要素(「comba戰鬥」一行打問號的緣由是由於我認爲Roguelike不必定須要戰鬥內容)。
這些元素可以直接構成一款Roguelike遊戲,固然也能夠將其視爲高拓展性的Roguelike的基石。雖然遊戲的拓展內容充滿了誘惑力,但在研發前期最好仍是把姿態放低一點,這感受就像在玩Roguelike遊戲同樣,倘使你毫無目的地在地牢中晃悠,徹底憑感受探索未知領域,那麼你也可能會毫無徵兆地狗帶,而且是一次又一次。雖然這多是一種帶着另類趣味的遊玩方式,但開發一款Roguelike遊戲跟玩一款遊戲是大相徑庭的,它須要投入更多的時間,保持專一對開發者來講更爲重要。
不過,作Roguelike最酷的事情之一就是它可以容納各式各樣的元素,當你認爲它對遊戲的總體有所裨益的時候,你就能夠嘗試着把它添加進來。
當遊戲的主心骨肯定以後,你能夠嘗試着添加一些風格化的內容
在此以後,你就能在玩家的反饋建議上對遊戲內容進行拓展與迭代。
不斷豐富的組成要素
最後當你回首的時候,你會發現遊戲的體量翻了好幾倍,你甚至不清楚這幾年本身是怎麼度過的……(XD)
o_O
核心機制
一個小型的Roguelike真正須要具有的要素是什麼?核心機制,這是整個遊戲的起點。用一句話來歸納的話就是用來充當原型的做品,它能夠直接上手試玩。
遊戲的核心機制代表了你對該款Roguelike的獨特看法。開發者須要想得更多,這一個遊戲機制是否可以支撐起這個遊戲的樂趣?再者,這個機制是否可以一樣服務於遊戲後續添加的內容?玩家在遊玩的每一分鐘裏,有多少時間是與這一機制相關的?倘使遊戲內容過於重複而失去了應有的樂趣,那你最好不要再在上面堆砌內容。
可視化的核心機制是Roguelike的設計基礎
所以,在遊戲Demo中,開發者只須要一些設計一些必要的外在因素(圖形、音效等)就好了了,重點在於核心機制的測試。上圖中分支也許會讓某些人望而生畏,但它僅僅只表明了一種可能性而已,很多Roguelike能夠設計得很簡單。
爲了進一步探討這個話題,咱們能夠舉個例子:7DRL。
7DRL
「7DRL」是指在7天以內製做一款Rouguelike遊戲。每一年三月份的時候都會有一羣開發者參與到這個活動中來,目前已經持續了14年。只要你能完成遊戲的製做,就會有人遊玩並給出建議。評審員一樣會從不一樣角度給出遊戲評分,比起遊戲開發競賽,7DRL更像是一個自我挑戰的舞臺。
每一年7DRL上出現的Roguelike遊戲數量
每一年都會有逾百款新Roguelike遊戲出如今該活動中。雖然這個舞臺並不適合初學者(壓力過大),但它確實是個瞭解Roguelike製做、積累經驗的絕佳平臺,尤爲是在技術方面,時間的壓迫感對於開發者而言有着很多幫助。
對於開發者而言,「7DRL」就是一個確立核心機制、並逐步拓展遊戲內容的典型案例。在活動中,你能看到很多富有創意的實驗性做品。
Knight
好比《Knight》,在遊戲中玩家大多數時間都騎在立刻,圖片中所顯示的藍色區域是玩家惟一可以移動的區域,每一個回合玩家都只能移動一個位置。此舉提升了遊戲的策略性,面對移動中的敵人,玩家須要作好攻擊規劃以便在移動之時擊敗他們。
在另外一款彈幕躲避類的Roguelike遊戲中,你將操縱一艘太空飛船,雖然攻擊範圍受限,但敵人的彈幕射擊速度讓你有充足的時間進行預判並閃避。
Seven Day Band
《Seven Day Band》加入了開放式建造的玩法,玩家可以在遊戲過程當中創造出屬於本身的Roguelike。當你遇到新的敵人或物品的時候,你能夠對他們的名稱以及能力進行編輯。「Band」的意思是指創造屬於你的Angband-like遊戲。
注:Angband,Roguelike遊戲經典之做,暗黑破壞神的創做來源之一。
《Broken Bottle》則是一個以敘事爲主的Roguelike,玩家將在末日世界中扮演一名酗酒者,飲酒量與角色的經歷有關,而故事的走向則由玩家做出選擇。
《Drakefire Chasm》雖然也是地下城冒險遊戲,但主角確實一隻與冒險者、怪物抗爭的龍,遊戲取消了物品的設計,單純依靠升級、打怪提高能力。該遊戲仍在更新中。
在《Golden Krone Hotel》(http://humbit.com/gkh/7drl.html)中,你能夠在人類與吸血鬼形態間進行切換。該遊戲最後走上了商業化道路,一年來在Steam上得到了不錯的成績。
這個是《Cogmind 7DRL》(http://cogmindrl.blogspot.com/)的原型,你將扮演一名機器人,你須要經過找到的以及從其餘機器人身上扒下來的零件來完善本身,因爲零件容易損壞因此須要頻繁地進行更新。後來遊戲也成功地走上商業道路。我從未想過本身六年前的7DRL做品最後會成爲本身工做的一部分,但這也證實了遊戲的核心機制足夠有趣。
今年的7DRL上我作的遊戲是《POLYBOT-7》(https://kyzrati.itch.io/polybot-7),它跟《Cogmind》有點像,但核心機制徹底不一樣。玩家沒法自主選擇安裝哪些零件,路過的零件會自動吸附到機器人身上,並且它們沒法卸下來,只能等他們天然損壞。我本來打算作一款縮小版的《Cogmind》,但隨着7DRL的臨近,我發覺這想法並不值得去實現——新遊戲須要新的、異於它者的核心機制。
7DRL之外的例子
咱們還能夠看下一些並不是在7DRL上製做的遊戲,其中某些遊戲的製做時間長達數年,它們包含了大量的系統與內容,但你依舊可以看到它們是如何圍繞核心機制展開的。
(偷下懶,僅列出遊戲名稱與地址)
Mage Guild
(http://web.archive.org/web/20160312005831/http://lukossoftware.com/node/8)
Demon
(http://demon.ferretdev.org/)
The Ground Gives Way
(http://www.thegroundgivesway.com/)
Xenomarine
(https://store.steampowered.com/app/676830/Xenomarine/)
NetHack
(https://www.nethack.org/)
資源
開發Roguelike最重要的事情是什麼?信息的獲取。不只僅是基礎知識,諮詢的解答,還包括遊戲的進階、創意的滋養物。
開發者在開發過程當中遇到的問題都是不盡相同的,但你能夠利用在線資源來解決它。雖然你未必會與其餘開發者合做,但一些必要的建議仍是應該接受的。這是我開發多年血淋淋的教訓!我早期作遊戲時屬於閉關式開發,進度至關緩慢。
Reddit / RoguelikeDev
RoguelikeDev(https://www.reddit.com/r/roguelikedev/)是全球最大的Roguelike開發者社區,細緻的欄目分類能讓你找到各類有用的資源。
這些資源包括程序語言的教程,你也能夠向那些使用者諮詢。
好比文章開頭提到的Python,最簡易的方法就是使用一個名爲「libtcod」的語言庫,咱們在論壇上有很多相關教程。
與大多數遊戲庫同樣,libtcod自帶一些常見的基本功能,好比遊戲窗口、鍵鼠支持、點陣字體、調色板等。但它也有很多專爲Roguelike而設的功能,好比地圖生成、視角以及尋路功能。
(接下來的一大段文字都在介紹該社區,比較值得一提的是他們整理了一個常見問題解答的帖子,裏面包含了主題、系統、日程管理等方方面面的問題,具體以下圖。)
Roguelike開發問題集錦
(https://www.reddit.com/r/roguelikedev/wiki/faq_friday)
RogueBasin
該列表僅是通常的目錄
除了RoguelikeDev,還有一個存在多年的RogueBasin網站(http://roguebasin.roguelikedevelopment.org/),它的建立者是Santiago Zapata,上面有一堆以開發爲重點的文章。
雖然內容有些陳舊,但多數文章仍舊適用於當下。多年前我就是在這裏起步的,這裏有很多具備啓發性的文章。
Roguelike Radio
由Darren Grey、Andrew Doull、Mark Johnson 和其餘人主持的播客 Roguelike Radio(http://www.roguelikeradio.com/),上面不只有與開發相關的主題,同時也有開發者的採訪。
Roguelike Radio往期節目列表
知識有了,那麼用於實際操做的材料也不會少。
Assets
這是一些咱們經常使用的Assets:
說實話,ASCII在不少方面的表現都很出色,經過前景色與背景色的巧妙組合,你能夠建立一些很是漂亮的遊戲。
多年來我收集到的ASCII遊戲截圖,在這裏你能夠看到它所蘊含的可能性。
當你選擇使用ASCII或是與ASCII類似的tilesets時,你能夠嘗試下我作的編輯器——REXPaint(可與libtcod同時使用)。你可以利用它作一些界面、地圖乃至藝術設計。
REXPaint的圖標、界面以及樣品展現
Tilesets
若是你想不因畫面而勸退玩家的話你能夠試着使用Tilesets,雖然它們只是一個佔位符,但卻能擁有極爲豔麗的色彩。在RoguelikeDev的側邊欄中你能夠找達到一堆Tilesets的連接,雖然多數是免費的,但也有的須要付費。
對於部分開發者而言,tilesets有助於激發他們的想象力。雖然視覺效果並非讓你的遊戲脫穎而出的關鍵所在,但一副好看的皮囊終究是有意義的。
贏在起跑線上
在文章的最後一部分,我想探討一下Roguelike遊戲設計應該從何入手以及關注的點。也許你僅僅只是知足於讓本身的角色在屏幕上動起來,再大一點的,就是但願其餘人能像你同樣喜歡上這款遊戲。
你須要運用一些手段來讓玩家留意到你的遊戲。
前面咱們討論過遊戲的核心機制,這是最有效的方法,由於它與遊戲玩法的聯繫是最緊密的,而Roguelike自己就是一種遊戲玩法。若是遊戲喪失了重複遊玩的樂趣,那永久性死亡也就無從談起。
精緻的視覺效果正在傳統的Roguelike遊戲中並很少見,不過如今有很多遊戲朝着這一方向發展,其對玩家的吸引效果也很明顯。
但在這裏,我想談的是遊戲的主題,這是一個被多數開發者忽視的法子。
題材
市面上有大量幻想題材的地下城遊戲,若是想要脫穎而出,最好避開地下城題材。
Roguelikes一般都會有一個良好或是有趣的遊戲玩法,但一個獨特的題材不只能讓你的遊戲別樹一幟,同時還能爲你提供一個合理解釋新機制的機會。大量的歷史與神話資源是一個可供挖掘的寶庫,業已存在的科幻類Roguelike也難以知足玩家的需求。
近年來,咱們看到了很多擁有獨特題材的Roguelikes。
MakaiRL中充滿了日本神話色彩
The Skies of Bloody April的背景設立在一戰
這些都是一些容易引發注意的題材,尤爲是當它們可供運行的時候(上述遊戲仍處於開發狀態。)
已經制做完成的《Lone Spelunker》則擁有很多奇特的洞穴景觀。
在roguelike社區中還有一些未見成品的題材,好比海盜。咱們也確實看到一款相應的遊戲出現——Pirate Rogue,這是論壇史上呼聲最高的遊戲之一。
遺憾的是,Pirate Rogue停留在了概念階段,開發者意識到遊戲要想成型的話遠超他們現有的經驗,即使遊戲呼聲是如此之高。
超級英雄與賽博朋克也是期待值較高的題材。
在這裏我想談一款我印象深入的遊戲,Armoured Commander。
在遊戲中你將操控一輛二戰坦克,帶領士兵們投身戰役。開發者Gregory Scott以有限的編程經驗投入了遊戲的製做中。
一年後,遊戲製做完成並被報道在Rock, Paper, Shotgun網站上。
從毫無遊戲製做經驗到出如今知名遊戲網站上,這中間當然有運氣加成,但一個獨特的題材也是不可或缺的。
此外,開發者還應注意的是你的遊戲不必定須要遵循Roguelike的規矩。咱們常常看到開發者提出想要製做的遊戲創意,卻擔憂是否會由於不像Roguelike而被拒絕。這一點並不重要,有多少玩家,就有多少關於Roguelike的定義。你只要確保遊戲可以貫徹本身的設計理念就足夠了。
XRLs
除了絞盡腦汁想一個獨特的題材外,你還有另一種現成的方法,咱們將其稱之爲「XRL」。(http://www.roguebasin.com/index.php?title=Roguelikes_based_on_Existing_IPs)該方法基於現有的IP,它將爲你節省大量的設計工做量,你只須要考慮如何讓它適用於Roguelike遊戲。有了XRL,你能夠專一於遊戲的基礎構建,但相對的,它也會限制你的思路。
但千萬要注意,你必須當心那些對知識產權特別上心的公司,好比任天堂。XRL更適合於業餘愛好或是用來練手的項目,不要想着它能得到任何商業回報。
(我還琢磨着做者不怕東半球最強法務部找上門嗎,這就給出解釋了。)
固然你也能夠藉此積攢粉絲,爲之後的商業道路奠基基礎。
一些幫助你走得更遠的建議
「早產」與高產
「早產」與高產是Roguelike發展的常態,將遊戲內容凝縮在一個可供遊玩的樣本中,儘量早地將其發佈出來。這樣你可以收到一些有價值的反饋,這對於一個長期項目而言是有利的。
開發者日誌
將開發信息集中發佈在一個地方,好比博客。它能夠幫助你:
整理思路;
從不一樣角度審視你的工做;
記錄開發進程;
創建一個可長期參考的對象;
收到反饋;
創建起互動社羣;
我長期這樣作,它對於個人幫助特別大。如下是我在博客上討論過的話題:
要想知道tileset 與ASCII、鼠標與鍵盤哪一個更受歡迎,你能夠參考下《Cogmind》的數據:
這裏是文章的結尾,同時也是你的Roguelike的開始。