Re: [請益] 敵人傷害設計
看板GameDesign (遊戲設計)作者Quitequiet (逆轉的命運之輪)時間10年前 (2015/05/22 02:50)推噓7(7推 0噓 4→)留言11則, 6人參與討論串11/13 (看更多)
※ 引述《KiwiSoda01 (奇異果汽水)》之銘言:
: 假設在一個pad類型的遊戲,
: 有兩個敵人,你希望給玩家覺得這兩個敵人,
: 給玩家帶來的威脅程度是一樣的,
: 且這兩個敵人一起出現。
: 其中一個敵人每回合都打1000傷害,
: 另一個敵人則兩回合才攻擊一次,
: 請問後者要打出的傷害,比2000高還是低,
: 才會符合當初的需求?
: 順便一提,我問過幾個同事,答案都跟我不一樣。
: 手機排版請見諒。
我提供一些數值分析的看法。
首先,這裡先將威脅程度定義為:面對(單一)敵人時,死亡的機率
雖然兩個敵人一起出現,但理性判斷,
會先解決掉「單獨面對時,致死機率較高的敵人」
因為兩個敵人同時在場的致死機率相同,差別只在於剩下一個敵人的時候
(假定不管先殺哪個敵人,都需要相同回合數)
那麼,這個問題就只取決於以下幾個項目:
1.玩家血量
2.一回合治療量
3.治療成功率
4.擊敗敵人所需回合數
5.施放角色的大招
6.敵人特性
先不考慮第五項跟第六項,
只要把前四項帶入一些基本參數,就可以計算死亡機率。
考慮下面兩個狀況:
A. 玩家擁有4000血,每回合有50%機率治療2000血,
只要撐過10回合,第11回合就會獲得勝利
B. 玩家擁有3000血,每回合有50%機率治療2000血,
只要撐過10回合,第11回合就會獲得勝利
模擬10000次的戰鬥結果,如下:
每回1000敵人 每兩回2000敵人
狀況 致死率 致死率
A 52.20% 68.13%
B 82.87% 68.34%
也就是,再 A 狀況下,每兩回合造成2000傷害的敵人威脅度較大
但在 B 狀況下,反到是每回合1000傷害的敵人威脅度比較大
B 的理由也不難理解,每回合1000點傷害,每兩回合內就非補到一次才行
但若是每兩回合才有一次傷害,某些狀況卻可容許三回合內才補一次
但生命較多的 A 狀況下,1000點傷害較小,因此容錯率提升到每三回合補一次
但對兩回合2000傷害的敵人來說,容錯率卻沒有因此而提升。
再來考慮下面兩個狀況:
C. 玩家擁有8000血,每回合有20%機率治療1000血,
只要撐過10回合,第11回合就會獲得勝利
D. 玩家擁有8000血,每回合有20%機率治療1000血,
只要撐過 9回合,第10回合就會獲得勝利
模擬10000次的戰鬥結果,如下:
每回1000敵人 每兩回2000敵人
狀況 致死率 致死率
C 73.81% 79.63%
D 51.18% 27.36%
也就是,如果第10回合能解決掉敵人,每回1000點傷害威脅較大
若火力不足需要到第11回合才能解決敵人,每兩回2000點傷害的威脅較大
理由也很直觀,每兩回才打一次的敵人都會在偶數回合進行攻擊
如果只需要承受9回合的攻擊,等於多了1000傷害的容錯率
最後,再看看下面兩個狀況
E. 玩家擁有4000血,每回合有50%機率治療1000血,
只要撐過10回合,第11回合就會獲得勝利
F. 玩家擁有4000血,每回合有50%機率治療2000血,
只要撐過10回合,第11回合就會獲得勝利
模擬10000次的戰鬥結果,如下:
每回1000敵人 每兩回2000敵人
狀況 致死率 致死率
E 31.18% 24.75%
F 18.58% 24.24%
也就是,當治療量增加會使傷害低的敵人威脅性降低。
綜合上述六個案例可以知道:不同的狀況下,兩者的威脅程度各有高低
(雖然大多數的狀況下仍是每回合1000的敵人致死率高)
只要給定參數,上述的方法除了判定誰的威脅度高以外,
也能解決原問題:每兩回攻擊一次的傷害應該要多少?
以前述的 A 狀況來論,只需調整敵方傷害,使致死率變為 52.20% 即可
每兩回合的傷害 致死率
2000 68.13%
1999 21.98%
很明顯的,「不可能有數值可以滿足兩者威脅程度一致」
理由在於,因為敵方的傷害是固定值,
所以當血量一超過傷害的倍數時,致死率就會大幅的下降,
因為等於瞬間就多了一次容錯率。
( B 狀況也類似,多 1 滴血,機率就跟 A 狀況相同了)
由於以上兩個原因:
1. 不同玩家的強度,感受到的威脅程度會不相同
2. 數值上不可能滿足一致
所以我個人會選擇設定為 2000 傷害,因為:
1. 大多數的玩家不會想這麼多,只會算平均值
2. 實際上,有部分的人認為2000威脅多,部分的人認為2000威脅少
所以以「讓部分的玩家覺得前者強,部分的玩家覺得後者強」的概念
取代「給玩家帶來的威脅程度是一樣的」,也是合理的
--
# 以下附上跑模擬的 R code
HP<-3000
Heal<-2000
pHeal<-0.5
Turn<-10
Boss<-2
Sim<-10000; TestData<-array(0,Sim)
for (i in 1:Sim) {
x<-rep(HP,Turn+1)
ifelse(Boss==1,y<-rep(1000,Turn),y<-rep(c(0,2000),Turn)[1:Turn])
z<-Heal*rbinom(10,1,pHeal)
for (j in 2:(Turn+1)) {
ifelse(x[j-1]<=0,x[j]<-0,x[j]<-max(0,min(HP,x[j-1]+z[j-1])-y[j-1]))}
TestData[i]<-ifelse(x[Turn+1]==0,1,0)}
mean(TestData)
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 115.43.135.145
※ 文章網址: https://www.ptt.cc/bbs/GameDesign/M.1432234223.A.922.html
推
05/22 03:31, , 1F
05/22 03:31, 1F
推
05/22 04:13, , 2F
05/22 04:13, 2F
→
05/22 04:13, , 3F
05/22 04:13, 3F
推
05/22 09:45, , 4F
05/22 09:45, 4F
推
05/22 10:59, , 5F
05/22 10:59, 5F
推
05/22 11:09, , 6F
05/22 11:09, 6F
推
05/22 11:29, , 7F
05/22 11:29, 7F
→
05/22 11:30, , 8F
05/22 11:30, 8F
→
05/22 11:30, , 9F
05/22 11:30, 9F
推
05/22 21:03, , 10F
05/22 21:03, 10F
→
05/22 21:04, , 11F
05/22 21:04, 11F
討論串 (同標題文章)
GameDesign 近期熱門文章
PTT遊戲區 即時熱門文章
4
21