作者midas82539 (喵)
看板XBOX
标题[心得] 再探太空战士1最强攻击力组合
时间Wed Mar 11 20:59:02 2026
既然2代模型都做出来了,就顺便回头看1代资料是不是也可以研究出一个攻击力模型。
也许读者可能会觉得:干就一个老游戏干嘛算那麽多?
但就研究层级来说,一代很有趣的地方是:
这款游戏不算很复杂,而且跑一轮游玩时间也不会花太多,
单纯做一个专题来说,它刚好适合可以充当练习的题目。
这种回到以前学生时代的经验其实还满不错的。(笑)
那麽接下来就是一样,目标是要找出各职业的攻击力曲线;
来找出理论上能成长到最大值的最强攻击力组合。
不过如果实作很快就会发现一个困难,就是实际的攻击次数缺乏已知的公式。
所以你必须要从无到有的建立一个简易公式,来做为计算的基础模型。
--
那麽首先你要有一个合理的环境假设:
在任天堂红白机(FC)的时代,这个"计算机"的计算核心是一个叫做Ricoh 2A03的晶片。
由於CPU是单一8bit,意思是单值最多只能记忆八个空格,例如假设你要游戏算出最终是
十进位制的13,那麽首先要先转换成二进位格式,这时就会变成:
次方 7 6 5 4 3 2 1 0
(0/1) 0 0 0 0 1 0 1 1 = 8+4+1=13
理论上总共有2^8=256种,也就是0~255。
已知原版游戏最大hit=16,最小命中hit=1,且原版等级最大=50。
假设你是设计游戏的人,目标就是:如何分配点数,而在最大等级时=255?
那会用除法,即255/50=5.1,也就是每升1级给你5点。
hit扣除最小值(基础值)16-1=15,接着要把250点能分配15次,
故门槛=250/15=16.66,无条件舍去为16。
--
剩下5点会有两种做法:作为计算空间避免数值溢出错误。或者直接放在基础值。
1. 250点制:rounddown((现有等级-1)*5/16,0)+1
2. 255点制:rounddown((5+(现有等级-1)*5/16,0)+1
角色设定:「不对阿我有一个只空手的武僧欸,所有人都能打16hit那武僧不就烂死?
那16hit就只给他好了。」
这时候很合理的改动就是把原本的模型等比缩限,其他人最大hit必须=8,而不是16。
1. 首先不变的:255/50=5.1,一样每升1级+5点。
2. 255/8=31.875,取近似值32。则每32点+1次hit。
3. 只有武僧乘与2,代表他空手等级1就可以2hit。
所以你就可以推导出基础公式:
1. 其他职业版=ROUNDDOWN((5 + (现有等级-1) * 5) / 32, 0) + 1
2. 武僧版=(ROUNDDOWN((5 + (现有等级-1) * 5) / 32, 0) + 1)*2
主管:「太无趣了,弄一点变化好不好?比如说盗贼就比较快升攻击次数,
武僧就相对较慢。」
角色设定:「..好喔那我就把初始值变大,所以每个角色起点不同。升级门槛再微调。」
--
那麽我要怎麽找到未知的初始值?以及微调後的门槛值?
好问题,这块属於未知。我的方法是假定每个职业的空手初始命中率是有意义的。
因为我注意到只要拿命中率+10%的武器,不知为何攻击次数会+1次。
这个现象隐含了命中率是可以等比的换成点数,故定义为命中点(ACC),规则为:
ACC=命中值 * 255。例如战士的空手命中率=0.07,0.07*255=17,85=18。
这时就可以推算各角色的初始ACC点,例如战士初始值=18。
剩下就是枯燥的纪录资料了。也就是你每升一级,就要把队伍全部换空手,
看没有武器干扰的空手攻击次数是多少,来看升到第几次才增加。
然後统计出变化的门槛值大约是几级才加一次,就可以反推得知
该职业每升级是加几点,然後累积到达门槛後才+1hit。
不过实际反推出现了几个问题,例如门槛值不见得是固定的。
这代表:(1)每级升点含小数点,(2)可能隐含随机干扰,例如敏捷也会+acc。
这原本设计是让你可以提早累积到门槛值+1hit,不过在反推就很讨厌。
这一块我只能说,我只能推出一个大致上是符合游戏经验,但不见得完全正确的结果。
--
我这一轮总共测试了战士、盗贼、红魔导使、武僧这四种。
所以攻击次数为:
战士:初始点数18点,每升1级+4点,最大8hit。
盗贼:初始点数28点,每升1级+5点,最大8hit。
红魔:初始点数20点,每升1级+3点,最大8hit。
武僧:初始点数13点,每升1级+3点,乘与2,最大16hit。
然後其他职业的单次攻击力=武器伤害+力量。
武僧攻击力=(力量+1)*0.75+耐力*0.5。
(对你没看错,不是原版的等级/2,所以单就攻击力像素重制板是弱化了)
理论上不存在敌人防御力下,总伤害= 单次攻击力 * 攻击次数。
『白痴喔敌人就有防御力减伤阿,那你算这有屁用?』
东西是要一步一步建立的,接下来就是拆解与建立防御力减伤的参数。
--
就我玩过1~2代的纪录,这几款游戏的底层逻辑没有变化,
他都是很简单的骰出0~200的数值,然後乘0.01转换成百分比,
所以如果你定期的记录所有的总伤害和次数,可以发现都是1~2倍的倍率。
而实际打到敌人的伤害=(攻击力-防御力)*攻击次数。
假设你现在眼前有个指导老师,那他八成会问你:
「那你要怎麽抓防御力?一个个怪物的防御力值做平均值吗?」
这就是很典型的陷阱了,在我们领域中有一个陷阱,叫做过度拟合。
用通俗的举例就是:如果你死背考古题来准备考试,的确如果考题有考古题,
那你就会作答,但只要是考新的,你原本的准备就没用,考出来成绩就不符预期。
如果把每一个参数想像成一个漏斗的筛子,你的筛子越多当然会筛出更少的资讯。
但多不一定是好,假设你最终筛子的缺口是「?」形状的,那对於原本资料,
你可以筛100%准确率,但如果未来资料长得像「!」呢?那你只能筛到下面的点,
准确率就会下降,这时还不如单纯的只筛「.」来的有效。
--
所以重点在於,参数不能太多而降低了资讯的自由度。
而且还要有一定的逻辑道理,至少是自洽的,可以说服你眼前的教授(笑)。
例如你可以说:「我们先重新厘清规则:
掷骰 (0–200)
├─ > 命中率 → Miss(出手无效)
└─ 命中率 → 命中
├─ > 爆击率 → 普通命中(伤害扣除防御)
└─ 爆击率 → 爆击!(普通伤害 + 额外攻击力,额外部分无视防御)
假如我是游戏设计师,我特地设计1~2倍伤害
空间,就是避免玩家基础攻击力太低而经常变成0,但防御力又不能太低,
导致实际上期望值是(1+2)/2=1.5让玩家太爽。
所以我们可以反推最终目的是要设定一个防御力比例(K),让攻击力(ATK)=1倍。
1.5 * ATK *k = 1* ATK
k = 1 / 1.5 = 0.667,我只要把原本的攻击力*0.667就好。」
--
「你怎麽知道K=0.667,如果游戏最终体验不是0.667你要怎办?」
「我不知道,但这是最简单可以解释游戏平衡,以及含怪物减伤结果,
以及相对的武僧爆率无视防御力的爆伤优势的公式。
它不完美,但它足够可以让我关注我想解释的东西,也就是实际攻击力。」
这时候就要讲到武僧的隐藏优势了:爆击率计算。
1代武僧爆率非常的奇葩,爆率(P)=等级*0.01
这就会让整个公式产生很精巧的变化:
其他职业伤害期望值(E) = 0.667* ATK
武僧 E = 0.667*ATK * (1+p)
也就是说,等级越高,P增加的百分比就会造成更大的倍率差异,例如25级,
无视防御力的造成的差异,相对就多了1.249,差不多就是+25%。
这时只要加* (1+p) ,p=等级,就可以在excel修正值得到更合理的曲线。
--
最终可以得到这张图:
https://i.imgur.com/XoPQmsE.png
很明显的武僧在爆率下有压倒性的成长,其次是每两级有保证升力量的战士。
盗贼比较尴尬的是,虽然他的acc点拿得比较多,但也导致他很快就到8hit
天花板,而这在转职成忍者也无法改变。
红魔法使是点数最少初始点数也低,定位为辅助万金油单体攻击力曲线最低。
那要怎麽样突破,达到超越4武僧的战力呢?答案很简单,利用加速就好。
由於加速是次数乘与2,只要在分工上打王时让红魔法师个别帮其他人放加速,
这时在四回合内,第四回合的攻击力,以3武僧1赤魔就会是(3武僧)*2=6倍。
从而最大限度的加倍了战力超越了原本4武僧:
https://i.imgur.com/D49ytzy.png
平均流=战士/盗贼/红魔/武僧
「你特地多弄一个2武僧1战士1赤魔干嘛?」
这是一个策略取舍。
--
3武僧1赤魔的优势在於它极端强化了攻击力,确保了打到最终魔王。
还有简单有效的策略可以叠加伤害打赢。
但前期很难避免武僧防御力低经常要补血的问题。
2武僧1战士就是藉由攻击力的牺牲来换一个防御力经常2~3倍的坦克值。
由於队伍伤害机率从第一到第四是:50%/25%/12.5%/12.5%
所以这时就可以把战士放到第一位,来换到更少的伤害和舒服的游戏体验。
虽然在60级以後因为武僧的爆率无视防御力比例变高,差距还是会拉开。
但基本上你到55级左右就可以挑战最终魔王了,用攻击力换防御力是可以接受的。
剩下两组针对像素重制板的最终魔王血量20000就会出现"打不赢"的陷阱。
这个在原版fc血量只有2000没有问题,在2000各种组合都可以在少回合打赢。
所以你可以在旧攻略看到像是「2战士2红魔最强」的论点,你不能说他错。
因为原版是真的有效,但当重制版增加到10倍,像是平均流、2战士2红魔
大约在打完四大复活魔王後,等级大约50出头会打不赢。
这时你反而还要开4倍经验值农到60以上,基础血量和伤害都叠高了才能打赢。
--
2武僧1战士1红魔比平均流好是因为盗贼的定位很尴尬。
盗贼算是丑小鸭变天鹅,他变成忍者是真的很强,战士穿的他都可以穿,
而且他还能放等级4以下的黑魔法,也就是可以放加速和强力可以充当辅助。
但问题在於相对武僧还是太强,你等於是用一个基础伤害高的武僧,
换一个相对基础伤害低的盗贼。想要达到一个2x2快速施法成型的打法,
然而很简单的数学问题:2x2=1x4。
意思是最终来说只是顺序先後问题而已,这样分配没有意义。
剩下又会回到武僧伤害差异大到交换不划算,防御力也会输战士。
最终反而打最後王会有点不爽。
总之如果真的想轻松体验游戏,又不想体验到拿到游戏最强石中剑。
但队伍没人能拿的可笑场景的话,2武僧1战士1红魔算是我能验证的最佳解了。
3武僧1赤魔则是想体验像是某些轻小说极限流的故事,你不排斥"无趣"
那可以玩玩看。
至於全魔法?饶了我吧,你知道那多麻烦吗?有兴趣可以自己试试看就知道了。
--
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/XBOX/M.1773233945.A.25B.html
1F:推 srx080578: 你真的超变态XD 03/11 21:28
2F:→ Ashely0913: 推 03/11 21:37
3F:推 rakuinn: 超研究者!推一个 03/11 22:42
4F:推 bala045: 跪着看 03/11 23:59
5F:推 fookafook: 想问一下 为什麽要自己猜测推导, 不直接查...? 03/12 01:27
7F:→ fookafook: 里面的Formulas 那段是不是就是伤害公式? 03/12 01:29
那麽,你有找到伤害次数公式吗?没有嘛。
社群只有很笼统地说明,武僧命中次数加倍,但对於命中次数并没有一个简易公式。
你看过的资料我其实都看过一轮了,关於攻击次数大致上会有几种算法,
不过公式上就存在几种差异,原因就是文章提到的原因。如果你有兴趣的话
你可以想想看为何我还要特地推导而不是单纯沿用,原本公式可能存在哪些
没有处理的盲点,而这个盲点会造成游戏体验和理论数值的差异?
※ 编辑: midas82539 (98.159.43.4 泰国), 03/12/2026 02:03:56
8F:→ fookafook: 认真 负责! 03/12 16:44