【轉】【數值系列】我理解的遊戲數值

一個遊戲應該是由數值來驅動的,數值設計最重要的是應用(動詞)數學。
 
看到太多的數值相關的討論中,策劃們更喜歡也更傾向於討論一些諸如DPS、經驗分配(利益分配相關)等的問題,每一個人都舉出了不少現象來證實本身推崇的公式,這是一種頗有意義的交流。可是長久下來形成了一種很嚴重的不應有的結果——行業對於數值設計的理解被扭曲爲了數值設計僅僅用於這些領域,且一個好的策劃在數值方面的功底應該是這些「倒推能力」。我想這是一種已經造成了必定年數的思想誤區,造成這種誤區和執行至今有不少因素,我不想進一步討論這些因素,由於這會帶來不少人的不爽,這裏我只想說說一個遊戲中真正須要用到數值設計的地方(或者說,這纔是「數值策劃」全部應該作的工做)。
 
從實際項目出發,咱們來進一步分析,那麼咱們必須先擬定一個項目,我就絕不客氣的拍腦殼出來一個簡單點的項目吧,便於分析且容易理解,那麼這個遊戲是這樣的:
 
背景簡述
 
玩家扮演的是一個騎士學院的高級教師,使命是傳授那些來學校學習的騎士們實戰經驗,簡單的說就是安排戰術,讓他們去參加一些實戰活動,經過實戰活動培養他們的能力,當騎士完成學業後,會加入王國的騎士團,根據其加入時的能力總和,國王給出評價來獎勵玩家角色,若是騎士被直接選拔如皇家騎士團,獎勵會很是豐厚。
 
系統簡述
 
經營系統:一些基礎的裝備買賣,任務接受、完成等,都想獲得,固然前提是這個遊戲僅供咱們討論問題,而不是要作出來好玩且賺錢,因此這裏不討論挖坑問題。
 
養成系統:固然如今來看這遊戲的養成就只有騎士了,至因而否加入其它挖坑系統來賺錢來使遊戲更好玩?個人回答是否認的,由於我不靠它賺錢只靠他說事。玩家對於騎士的培養是從性格方面和能力2方面着手的,每次能夠安排騎士突出培養本身某方面戰鬥能力(表現爲訓練項目),而安排其餘的工做則影響他的性格和經營系統須要的收入等。
 
戰鬥系統:標準的SLG(火紋、曹操傳之類的,別把神仙道說成SLG了,這是「後時代策劃」的標誌),放置型(戰鬥過程玩家無操做,你是訓導師嘛,安排戰術是你的責任),玩家要作的是開始的時候在容許的位置內安排出場的騎士(位置多於可上場的騎士),每一仗的目標都是必定回合內敵全滅,地圖是隨機的,根據騎士本身的性格和玩家對其的塑造方向,他在戰場上會有不一樣的行爲。
 
簡單概括:或者說上面這3段都是廢話,好吧,這遊戲就是玩家放置安排每一個騎士訓練生活(美少女夢工廠?)和安排SLG戰鬥(自動操做的火紋、夢模?)結合,這裏不討論最終好很差玩,咱們只看主題——策劃在這個項目中須要進行的數值設計:
 
角色屬性、戰鬥數值等等基礎設計
 
這些是「數值策劃」們最喜歡談論的內容之一,我以爲這裏就沒有必要反覆說這是幹什麼的了,只是強調一個思路問題,不少時候策劃認爲咱們先有了哪些屬性,而後硬性的給這些屬性附上其做用,但偏偏相反,優秀的遊戲數值設計過程當中,是先分析世界須要怎樣的屬性,而後分析我須要些什麼屬性,接下來是分析哪些屬性必須被拆分(爲了賺錢也好爲了平衡也好),最後敲定了屬性後,對其製做公式。
 
那麼回到這個遊戲,咱們會有些什麼屬性呢?最基礎的就是攻擊力、血量(含上限)、移動力。這些都毫無疑問地用於負責分析每個領域:攻擊力決定對方血量的降低速度;血量決定角色能被攻擊幾回;移動力決定了角色在地圖上一回合內移動的格子數。這個遊戲的基本屬性已經有了雛形了,完了?沒呢,這點屬性夠嗎?不夠,這只是骨架子,咱們接下來要給他血肉。
 
在遊戲中咱們有物理和魔法兩種攻擊方式(體現劍與魔法的時代),那麼咱們規定魔法不會受到防護力影響,可是物理攻擊會,所以咱們必須加入一項防護力,區別出物理和魔法來;爲了平衡魔法與物理的攻擊,咱們得給角色一項叫作靈性的屬性,他決定了角色魔法的命中率(而物理的是一定命中的),此時咱們不難看出本質上物理和魔法2者是平衡的,由於各有優缺點,換成賺錢思路,物理攻擊這叫低風險低收益,而魔法則是高風險高回報。固然我不認爲這是惟一的解決辦法,更不認爲這是最好的解決辦法,這固然須要設計師本身根據遊戲去設計。可是這裏有一個核心問題就是——質的平衡,在數值設計中有質的平衡和量的平衡兩點,哪一個屬性高了低了,叫作量的平衡,而質的平衡則描述了屬性自己的價值。
 
如何去作質的平衡思路很是簡單傳統,給你一些就要剝奪一些,首先咱們分析出世界上全部等價的事情,好比在這個遊戲中,咱們能夠看到DPS,假如你的命中率100%,攻擊力30,面對防護力10的怪物,形成20傷害(是的,就是減法,這裏還無法說減法很差,固然也不在這裏說,這裏僅爲說明質的問題),咱們給他在這個世界中的估價就是20分(20x1),那麼同等條件下,命中率80%的魔法,他的攻擊力應該是25,不難看出他也是20分的(好吧,別說25x0.8x1=20你都算不出來)。這裏x1表明傷害這個事件在世界中的價值,因爲世界如今很是簡單,沒有其餘因素影響,因此他就能夠是1的,咱們又何須把它定成0.5或者爲了顯示本身高端把它定義爲一個1.3724之類的看起來很不規整的數字自尋煩惱呢?那麼思路上上來講,咱們給了物理攻擊受到傷害減免的懲罰,影響了他在傷害這個事件的估價,而給了他必定命中這個「獎勵」,影響了他在傷害事件的估價;咱們給了魔法攻擊無視防護這個特性影響了他在傷害事件的估價,卻給了他可能未命中的「懲罰」影響了他在世界的估價。本質上,這二者平衡了,數據上,經過估價不難看出面對防護力10的怪物,他們二者表現類似(但不可能相等,至於具體差據,實際上是一個機率問題,切比雪夫不等式會給你答案),至於再要進一步分析哪一個好壞,我以爲你就進入了禁區了,由於咱們已經制造了一個見仁見智的問題了,這就是給遊戲提供了一個樂趣了,咱們不必進一步主觀的去把科學的問題複雜化,最後作的要麼作不出來要麼感受很不對。
 
思路肯定後,咱們看到可行,那麼就加入這兩個屬性給角色。同時還有些不須要這樣去分析的屬性也能夠被假如,好比咱們須要移動方式——騎馬、走路、飛行、木輪(運輸隊?),這些是由於遊戲規則的容許,而且更好的體現世界觀才產生出來的,只要道理上說的通,他就合理,可是有一條最基本的道理就是,至少這兩兩之間必須存在差別,若是我騎馬和飛行在各類地形都消耗1點移動力,這就有些荒謬了。那麼咱們在這個基礎上再加入一種移動模式——履帶行不?你說呢?
 
簡單的說,設計這種數值咱們須要從實際出發分析問題,把問題存在的世界看成觀察對象,進行簡單的估價以後進行屬性設計,而後公式化屬性,讓他起到本身的做用,而公式化的同時,你還須要注意到一點就是你想要的曲線是如何的?你想要的是y=x平方的仍是仍是y=x的1.2次放的?本身分析吧,看你的遊戲須要什麼,但你必須注意感受要對勁。
 
那麼是否是屬性設計到這裏就完了?固然不是,否則我也就不寫這段了,除此以外,咱們還會爲AI、角色成長定一些「隱藏屬性」,這些屬性玩家肉眼看不到數字,可是你一個自稱「數值策劃」的人也看不到可就麻煩了。
 
隨機地圖產生算法數值設計
 
上面說的這些都只是基礎的設計,若是你以爲一個數值策劃要乾的就是不斷地「平衡」不斷的「反覆測試」上面這塊就算工做了,那活該你的薪資低於指望了由於你的工做量也低於了指望了。在這個項目中,咱們還會涉及到一些數值設計,這些數值設計是玩家肉眼看不到的(好吧我不重複相同的話了),可是他們能感受獲得,而且在遊戲開發中須要用到。
 
隨機地圖產生算法,咱們說這個遊戲的地圖是隨機產生的,那麼第一咱們就想到了柏林噪聲,柏林噪聲用於產生3D遊戲中高低不平的起伏路,它的核心意義是「平滑」整個曲線,讓她更柔美。事實上若是你把它抽象到另一個世界,你能夠把這些曲線的值域分段,造成咱們這種遊戲須要的地圖元素,好比水老是挨着平地的,那麼水能夠是(0.25, 0.4],而平地則是(0.4, 0.77],好吧,這裏的具體數值毫無根據是我拍腦殼來的,只是說明你這樣可讓水和地面相連,你一樣能夠設計帶草的地面是(0.44, 0.79],再取到0.48的時候咱們再算一次到底帶不帶草就好。這個數值的值域規劃是一個簡單的數值工做,這個程序員無法替你完成,因此須要策劃本身去完成,首先程序員對遊戲如今有多少種地形,未來有多少種地形毫無興趣,可是對於地形種類會變,但是很反感的,由於「變」老是意味着「麻煩」,所以一個優秀的策劃能夠用數學來解決這樣的麻煩。
 
那是否是隨機地圖就有了?固然不是,柏林噪聲嘛,你至少還得給版子定義倍頻和持續度(BTW,在這個過程當中你應該本身總結一下如何建表,由於我都說了須要的屬性了,至於建表技巧,這裏我就再也不重複了)。
 
除此以外,若是爲了遊戲更精緻,咱們還須要進一步工做,那就是用曲線分析出我想要的大概地形,簡單的說,咱們的遊戲雖然是隨機地圖,可是根據咱們派遣騎士去的地方特徵不一樣,他的地形應該隨機中也大概有點規律,好比我派騎士去的是魔法森林,都是森林了總不能老都是水和山吧,森林地形應該更多,這不是一個x%的比率設計,x%的設計方式是給非遊戲設計師(玩家)來用的,由於他們不須要具有這方面專業知識,而英雄無敵的隨機地圖生成也讓咱們看到了糟糕的x%模式,咱們要作的是,從橫向和縱向上對於一個區域進行橫截面分析,產生多條曲線,這些曲線符合咱們上面說的值域規則,好比說森林,他的曲線應該儘量保證值域在平原和森林之間(還要在別的之間?固然能夠,更優秀的數值設計師能創造更優秀的地圖),最後程序根據你傳入的橫向縱向多條曲線、倍頻數和持續度,產生出柏林噪聲,而後經過映射到你的值域產生出隨機地圖來。
 
所以數值設計,更講究的是如何應用數學來描述你想要的東西,而不是去用一個公式驗算另外一個公式達成否認推翻效果或者支持效果(這個工做也能夠經過柏林噪聲作的更好)。
 
尋路算法數值設計
 
是的,AStar應該是程序員去寫,由於他們的優化能力遠比策劃好,可是有一點程序員寫不了,那就是其中的估價算法,可見這樣有地形的尋路中,簡單的曼哈頓算法再也不合適,那麼程序員怎麼去作呢?他/她會感到困惑,由於想了一些算法,可能都不太適合你的須要,你很勉強的接受了,也讓他/她很爲難。
 
所以策劃在這裏就須要去設計一個地圖單元格的估價算法,這個估價算法是針對移動力的,首先移動類型決定了移動力的消耗,那麼最簡單的一個作法就是移動力x1就是這個格子消耗力,而程序邏輯中將加分變成減分便可。固然這個算法並不是至關科學,以致於最後表現的時候,角色並不必定按照你真實想法來走,有時候會有些彆扭。
 
好的數值設計師能夠作到儘量讓他貼切於人的思想,這其中的關鍵也是看你如何去應用數學創造這個算法。
 
性格與行爲AI數值設計
 
接下來最要命的問題來了,咱們都說了遊戲是放置型的,那麼事實上怪物和我方的行動都是AI控制的,這裏就有一個AI算法的問題,AI不是應該交給程序員纔對嘛?那麼程序員,你玩過SLG嗎?火紋玩的如何?你對火紋的AI有多少了解?見鬼,老大當初怎麼招了你這樣一個不玩遊戲的程序員了!——只能說你的抱怨毫無根據,由於優秀的程序員把大量的時間花在學習好的程序算法上了,就像好的策劃會把大量時間花在研究遊戲(而不是玩遊戲)上同樣,術業有專攻,所以AI設計是策劃的工做。
 
AI的邏輯中實際上是會有不少技巧的,我以前嘗試了一個很棒的AI算法,讓我寫着玩的SLG遊戲中雙方的角色都很是狡猾,狡猾的以致於我身邊不少火紋老手(即便是自稱的,他們對於這類遊戲也各有獨到看法,算是比較Hardcore了)都沒法直接理解他們的想法,直到幾個回合後他們都拍手叫好,說這幾步走的太妙了,太聰明的AI顯然效果很很差,由於他們的行爲超越了人的理解範圍,是的,若是你教會計算機思考問題,他的力量是不可衡量的。固然AI邏輯是一方面,驅動這個邏輯的纔是咱們要說的,那就是——數值設計。
 
首先在這個項目中,咱們就須要爲角色定義一些屬性(以前說沒完麼,是沒完吧),來影響他思考。那麼這個遊戲裏面角色要思考什麼?無非就是移動到哪兒,而後考慮是否打人打誰。「啊呀,這簡單,我個角色設定一個目標,而後他就衝着過去好了,好比血最少的」,那你看看效果好很差?固然這樣的作法也沒錯,只是最後高移動力成了懲罰了。咱們至少須要讓每個角色,對於地圖上的每個單元格進行估價,評估出本回合這些單元格的價值,最高的價值的那個就是他要去的,而走不到的價值確定都是低於1的。
 
以前個人作法過於複雜,我讓每個角色都進行了深度思考,爲他們設計了他們的團隊精神、他們的進攻慾望、他們的自保內心等等屬性,讓他們既猥瑣又勇猛,最後出來了一個「太聰明」的AI,這就是由於估價的時候考慮了太多的因素,好比「我走到這裏,有多少人會打到我,這樣我大概受到最大傷害如何(固然我走到這裏了也會致使別人的行動範圍變化,好比我走到了一個「卡口」那麼同一時間只有一個敵人會近戰命中我)?我又可能在多少個友軍的庇護下?」想的太多,設計出公式釀成了錯誤。所以首先咱們的數值策劃必須定義好每一個角色的想法,而後再用數學去描述出他來,程序員須要作的只是讓角色選擇一個估價最高的格子過去,至於算法你愛咋該咋改,固然你能夠要求程序員爲你優化你的算法,畢竟coding技巧不是策劃擅長的而是程序員的強項,給他/她你的代碼,而後告訴他/她你的想法。
 
仍是那句話,好的數值設計師會讓遊戲的AI看起來更天然,數值設計的根本是應用數學。
 
那麼策劃在設計數值的時候究竟須要些什麼相關的能力呢?我想這也是不少新手想知道的問題,從上面這些須要你去工做的項目來看,不難分析出你須要:
 
Feeling或者說是靈性
 
這對於數值策劃來講很是重要,乍一看你會以爲數值策劃嘛,應該更理性,更相信科學而不是感受,但事實上因爲你是在應用數學,用科學去描述想法,所以首先你必需要能創建出好的想法,符合遊戲的Feeling的想法來,而一些基於這種靈感或者說Feeling的突破,才能被真正的稱爲是創意,更重要的是創意別人感受獲得,看不到,而你卻用數學把他營造出來了讓別人感受到了。
 
會使用搜索引擎
 
知識在這個年代是廉價的,由於網絡已經再也不是神話,誰都能經過百度和谷歌找到想要的知識,而你須要掌握的是,知道我要的知識是什麼,而後輸入到搜索框,尋找出你想要的答案就好。咱們不是搞教育的,不須要你「學生」把全部東西都背出來,用那些隨手就能查到的東西來填充你的大腦。
 
善於創建函數(或者說一些人說的數學模型)
 
對於任何事物,請用創建函數的思想去思考,這很重要,這也是邏輯化的關鍵(同時我對於男性遊戲策劃的要求如此,而對於女性我要求的是在UI設計方面的靈感,人類的染色體造就的這兩個方面的不一樣優點真是無法改變的,所以只能從區別要求出發),千萬不要提「通常狀況下」,這表明你根本沒有用函數去思考,函數是一種天然規則——「當溫度變成30度的時候,人會感到熱、狗會吐出舌頭;當溫度到0度的時候人會感到冷、狗會……抱歉我沒這方面知識,須要搜索一下。」這就是大天然,一個函數,而不是if 30度如何如何,else if 0度如何如何,那麼28.34度呢?
 
應用數學分析並構建世界
 
當你有了idea以後,善於用數學去觀察他,簡單的用工做中的例子去看——你須要設計一個升級經驗表,你但願這個數值增加是怎樣的?用曲線去描述,肉眼一看就知道,以後就是把曲線函數作出來。進一步說明就是你的老大但願「我在20級是一個坎,60級是另一個」,那麼升級經驗的2個點有了,再加入你的想法以後進行插值得到函數。固然這並非單向的,還包括了得到等因素,但你思考的時候必須先統一爲一個數去分析。
 
演算和驗算能力
 
一些東西要會去演算會去抽象,演算是驗算的基礎,至少你先得搞清楚事情,纔可能去分析事情的好壞,不只僅是數學公式,世界上的一切都如此,由於你須要會用數學去分析世界。好比說本篇中我定義的這個遊戲的玩法,你能演算出他最後是如何的嗎?那麼讓你來作你會如何改進?
相關文章
相關標籤/搜索