[轉] Roguelike開發建議

該文所述的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的開始。

相關文章
相關標籤/搜索