1. 程式人生 > >遊戲戰鬥數值框架搭建入門

遊戲戰鬥數值框架搭建入門

們的 才會 game idt 讓我 cmm 數量 維度 標準

轉自:http://www.gameres.com/485798.html

設計一個遊戲DEMO的時候要幹的第一件事是什麽呢?是搭建數值框架,而如果是一個打打殺殺的遊戲,第一步要搭建的就是戰鬥數值的框架了。

  AT君最近在自己嘗試著做一些塔防的DEMO,並且獲得了一些搭建數值框架的經驗,在這篇文章中直接以實例的方式總結一下,如何著手從零搭建一個遊戲的數值框架。

  打打殺殺的遊戲第一步要確認的是攻防關系,以及遊戲的基本節奏。AT君所做的是一個塔防遊戲,簡單來說就是玩家的化身是一個塔,不斷的攻擊從四面八方向塔逼近的一波一波的怪物,直到擊敗一關中的所有波次,或被怪物打敗——也就是說是一個有些類似於《搶灘登陸戰》的遊戲,只不過塔是自動攻擊的。


  AT君第一件確認的是單關的長度。由於是為手機遊戲設計DEMO,因此單關長度要在3分鐘以內。接下來就是3分鐘的時間,要讓玩家感受多少波次比較合適呢?這是一個比較個人化的體驗所帶來的決定:15秒一波,既不會密到喘不過來氣,也不會松到覺得無聊。經過6波普通波次的戰鬥後,迎來30秒的BOSS波次,這樣一來一關是120秒的時間,符合3分鐘以內的標準,而且為以後擴充留下了一定空間——8波甚至9波也是可以做的,但由於目前要做最小化的DEMO,因此AT君認為這個波次6+1,一共120秒的設計是OK的。

  這樣我們得出了數值框架的第一部分:一波15秒,一關120秒。

  一波15秒,所發生的事情是什麽呢?最基本的事情是怪物沖向玩家,玩家把怪物們打死。那麽一個標準的無傷模型就是最後一只怪物沖到玩家面前的時候,正好全部被玩家打死,接下來立刻就刷新了下一波。由於玩家的英雄站在地圖中間,那麽我們能夠得出:

  【結論2】假設標準怪物的移動速度是1,那麽地圖的半徑就是15,英雄的攻擊半徑也是15。

  接下來要定的是一個標準波次有多少怪物,每個需要玩家的英雄攻擊幾下來打死。這是在奠定遊戲的基本節奏,因此非常關鍵。AT君想要的是偏“無雙”風格的遊戲,怪越來越多,被玩家的英雄嘩嘩的幹死,非常爽快的遊戲,因此標準怪物要很多。AT君一拍大腿,決定標準波次要有15個怪物,之後的每一波都比前一波多5個怪物,遊戲一共有7波,那麽分布就是這樣的:

  15個標準怪物
  20個標準怪物
  25個標準怪物
  30個標準怪物
  35個標準怪物
  40個標準怪物
  1個標準BOSS

  我們可以看到,怪物數量增加的速度非常快,最後一波標準怪物是第一波的兩倍還要多,因此一定可以達到非常爽快的目的。當玩家用標準英雄去玩這個關卡的時候,得到的就是一個標準模型了。

<ignore_js_op>技術分享


  我們假設一個標準怪物是40血,那麽第一波共15個怪就是有600血,玩家的英雄要在15秒內造成600點傷害,因此我們得出:一個標準英雄的秒傷是40。那麽標準英雄打一個標準怪物要打幾下呢?至少要是2下,因為一定會存在血比標準怪物少的怪或單下傷害比標準英雄高的英雄。那麽我們就得出了:

  【結論3】假設一個標準怪物的生命值是40,則標準英雄的單體傷害為20,攻擊間隔為0.5秒。

  我們確定了英雄攻擊力和怪物生命值的關系,接下來需要確定的是怪物攻擊力和英雄生命值的關系。標準怪物都是近戰的,那麽我們以什麽為標準呢?由於第一波怪是一定會被標準英雄無傷打死的,因此英雄的死亡時間一定是在15秒至120秒內。玩家純掛機必須是不能見到BOSS波次的,因此死亡時間可以縮短至15秒至90秒內。AT君一拍大腿,認為標準英雄的死亡時間應該是在60秒,也就是第四波怪刷出來的時候。由於怪物攻擊英雄會不斷隨著數量的減少而減少DPS,再加上AT君的高等數學已經全都忘光了,因此經過連算帶測,得出的結論是:

  【結論4】假設英雄的生命值為1000,那麽標準怪物的秒傷為5。

  接下來是BOSS,AT君將標準BOSS的生命值設定為了45個標準怪物的生命值,即1800(相當於第七波的總生命值),在移動速度與普通怪物相同的前提下,可見其近身至英雄身邊會損失600生命值。玩家如果在BOSS波什麽都不幹,只靠平A掛機,是一定會被BOSS打死的,由於我們已經設計好BOSS波次要在30秒之內完成,因此BOSS的秒傷要至少是1000/15=66.6666,AT君一拍大腿將其定成了100,這樣一來假設玩家的英雄滿血進入BOSS波次,之後什麽都不幹純掛機,會在25後結束遊戲,BOSS剩余800血。這樣我們就得出了:

  【結論5】標準BOSS的生命值是1800,移動速度為1(即等於標準怪物的速度),秒傷為100。

  若我們從另外一個思路來考慮:如果我們要求BOSS波25秒結束遊戲,且前提是BOSS移動速度為1,那麽如果我們要求BOSS打死玩家的時候還剩一半血,就可以得出BOSS的血量=25秒*英雄秒傷/1/2=25*40*2=2000血,秒傷=英雄血量/(25秒-BOSS移動速度*地圖半徑)=1000/(25-1*10)=100。我們只定了要求BOSS波純掛機25秒結束,BOSS剩余一半血,移動速度為1,就能夠得出BOSS的血量和秒傷啦,並且是能夠得出理論上的極值的。

  到了這裏我們可以總結一下我們得到的數據:

  標準怪物:

  生命值:40
  移動速度:1
  射程:0.1(即近戰)
  攻擊力:5
  攻擊間隔:1

  標準BOSS:

  生命值:1800
  移動速度:1
  射程:0.1(即近戰)
  攻擊力:100
  攻擊間隔:1

  標準英雄:

  生命值:1000
  不能移動
  射程:15(或無限)
  攻擊力:20
  攻擊間隔:0.5

  標準關卡:

  怪物刷新點至英雄距離:15
  刷怪間隔:15秒
  第1波:15個標準怪物
  第2波:20個標準怪物
  第3波:25個標準怪物
  第4波:30個標準怪物
  第5波:35個標準怪物
  第6波:40個標準怪物
  BOSS波:1個標準BOSS

  這樣我們就得出了一套最最最基本的數據,遊戲已經可以玩啦。回顧一下我們是如何得出這些內容的,經歷了幾個步驟:

  根據單局時長和想要的遊戲節奏 => 得出移動速度、地圖大小、波次間隔;
  根據擼怪風格和標準怪物生命值 => 得出怪物數量、英雄秒傷;
  根據我們認為合適的英雄死亡節奏 => 得出怪物的秒傷;
  根據我們認為合適的BOSS波節奏 => 得出BOSS的屬性;

  這樣一來,我們只要改變以下幾個最基本的值,其他的值都會跟著聯動:

  標準單局時間:120秒
  標準波次結構:6普通波+1BOSS波
  標準波次的間隔:15秒
  準怪物移動速度:1單位/秒
  標準怪物生命值:40
  標準英雄打標準怪物幾下打死:2
  標準怪物在標準波次的個數:15個
  英雄掛機死亡時間:60秒
  標準英雄生命值:1000
  標準BOSS的移動速度:1單位/秒
  英雄BOSS波掛機死亡時間:25秒
  英雄BOSS波掛機死亡剩余生命值:44.4444%

  我們會發現,雖然是在搭建戰鬥數值框架,但實際上和攻擊力啊,攻擊速度啊,生命值啊直接相關的數值非常少——只有一個我們假設的標準怪物生命值和標準英雄的生命值作為基礎單位而已。一切都是在遊戲的基本節奏定了之下推算出來的數值,我們會發現,單局時間,單波波次,掛機死亡時間,這些都是時間,也就是節奏,這些是我們需要確定的數據,這些是我們想要產生的體驗,而最終得到的攻防數值都是為這些服務的。當我們看到別人的遊戲的時候往往看到的是這些果,經常有人連篇累牘的分析別人的遊戲數值是什麽樣的,這個單位的攻擊力是多少,但不能掌握那個“為什麽這些數值要這麽定”的因的話,是在做本末倒置的無用功,直白點說就是還停留在門外漢的級別啦,外行看熱鬧而已。因此,對於一個戰鬥數值框架來說,最優先的是定基本的“節奏”,這是由空間上和時間上兩方面來決定的,其他的一切數值基本都是水到渠成,定了一個就能推算出來其他的。

  總之,最重要的是方法論,要做到每個數值維度的設計都是有道理有基礎的,而不是憑感覺拍腦袋拍出來的,這樣之後我們調整的時候才會有方向,出了問題可以不斷的對這套數值框架進行驗證與調整,避免像AT君一樣陷入曾經的“傻媳婦和面”窘境——一切憑感覺拍腦袋,最終只能面多了兌水,水多了兌面,然後是無盡的測試地獄。平衡不可能全都是紙上談兵,一定會需要依靠測試來調整,但那些沒有理論依據,只靠測試來調平衡的絕對是愚蠢的不靠譜做法,等著程序員、測試員和老板罵死你吧。

  說了這麽多,相信很多人已經開始早就懷疑一個問題了:目前這個模型是玩不下去的,英雄只能普通攻擊,到了60秒的時候就死了!怎麽才能獲得最終的勝利呢?

  這裏亮點登場——鏘鏘鏘,AT君設計的這個遊戲,是一款TCG遊戲!玩家要配一套牌組,帶進遊戲中去施放,和傳統的TCG一樣,每張牌都需要支付一定的費用才能打出,不足的這部分能力就要靠卡牌來實現了。那麽接下來我們就需要解決一個問題了:

  1費值多少?

  每個問題都要有一個基本的原點,我們假設1費值1條標準怪物的命,那麽我們就可以得出:

  【結論6】假設1費值1條標準怪物的命,那麽1點費用用於攻擊時,價值是40點傷害。

  遊戲中一共有15+20+25+30+35+40個標準怪,以及一個生命值相當於45個標準怪的BOSS,生命值總計210*40=8400。遊戲時間120秒,普通英雄一共造成了120*40=4800點傷害,剩下的3600傷害要從卡牌裏出,我們就能得出,一局遊戲如果想無傷通關,需要3600/40=90點費用,一局遊戲120秒,那麽得出了下一個結論:

  【結論7】每1.3333333秒產生1點費用。

  也就是說,如果玩家帶的都是10費的卡,平均每13.3333秒能夠打出1張。我們可以根據玩家的卡組平均費用的出玩家平均多久打出一張牌,由於AT君並不想要讓遊戲的強度太高,一場遊戲下來操作次數不要超過30次為妙,平均每4秒出一次牌,平均費用為4*1.33333=5.3333333,這就是我們的標準卡組平均費用啦。

  以從結論6為標準,我們可以得出其他一系列其他的卡牌設計標準。比如,傷害提高100%的卡牌,1費值持續多久?按照標準英雄計算,值1秒,英雄的秒傷為40,這個效果只要持續1秒就提供了40點傷害。只要是以各種方式增加傷害的,我們都可以用標準英雄為模板來計算其收益。

  另外一種則是與英雄生命相關的,比如1張X費的牌效果是為英雄恢復100點生命值,X應該是多少?一張0費的牌,效果是對英雄造成100點傷害,產生X點費用,X是多少比較合適?由於英雄生命值是另外一套獨立的價值標準,因此也需要一個基礎。

  我們有一個原則就是,玩家如果只帶恢復生命值的卡,必然是會輸的。我們知道BOSS的秒傷是100,那麽每1點費用恢復的生命值應該是小於133.333333的,否則玩家可以只靠治療卡牌磨死BOSS,因此我們可以粗略的拍大腿——

  【結論8】用於恢復英雄生命值時,每1點費用應該恢復100點生命值(且不可高於133.3333)。

  接下來會有越來越多的復雜情況,讓我們難以預估,1點費用應該產生多強的效果,比如召喚防禦塔的平衡標準是什麽樣的?召喚一個改變路徑的墻的平衡標準是什麽樣的?控制法術的平衡標準應該是什麽樣的?一局遊戲內永久性的提高英雄的能力的平衡標準是什麽樣的?但只要我們能夠找到一個方法論,就可以先得出一個我們認為是正確的平衡標準,然後再通過不斷的測試來反復檢驗我們的平衡標準,這樣一來我們就可以通過反復叠代最終得出一個遊戲最終的全部數值了,整個框架是一個從最基礎的原則一點一點搭建起來的牽一發動全身的動態框架,而不是四處都是拍腦袋拍出來的數值。

  關鍵還是在於方法論,即便錯誤,也是可以驗證的。而沒有方法論,連對錯都不知道,就沒有驗證的基礎了。遊戲中的最終數值,不一定所有東西都是絕對平衡的,但有框架能保證數值不會崩——比如假設我們一拍腦袋設計了一張1費恢復200生命值的牌,數值就已經崩了,而如果我們沒有框架,只靠測,就算經歷九九八十一難確定了導致遊戲崩的就是這張牌,也不知道應該改到133.3333以下才會不崩,還是只能靠調完了再去無盡的測試,簡直是地獄。而框架能讓我們逃離這個地獄,這就是框架的價值,地基打得牢,以後填的坑就少,不然就是害人害己害團隊害老板了。

遊戲戰鬥數值框架搭建入門