作者Quitequiet (逆转的命运之轮)
看板GameDesign
标题Re: [请益] 敌人伤害设计
时间Fri May 22 02:50:18 2015
※ 引述《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://webptt.com/cn.aspx?n=bbs/GameDesign/M.1432234223.A.922.html
1F:推 ddavid: 哇,R出动了XDDD 05/22 03:31
2F:推 KiwiSoda01: 这解释了为什麽我导出要低的结论 05/22 04:13
3F:→ KiwiSoda01: 因为我心中那个情况是接近A的 05/22 04:13
4F:推 godwu: 感谢分析 05/22 09:45
5F:推 dreamnook: 数据给推 05/22 10:59
6F:推 brbu241: 数据大师 05/22 11:09
7F:推 LayerZ: 我的想法也偏这篇..其实很多经典的boss设计只是大世界中各 05/22 11:29
8F:→ LayerZ: 种要素交错而成,有些boss被秒杀,有些boss变成经典,而玩 05/22 11:30
9F:→ LayerZ: 家也是千百种,不可能满足所有玩家.. 05/22 11:30
10F:推 ddavid: 是呀,共通的威胁感在这类能自行组队的游戏下除了必秒杀以 05/22 21:03
11F:→ ddavid: 外应该很不容易存在,如果这麽容易存在就变成组队没变化性 05/22 21:04