作者Eeon ( なに?! )
看板StarCraft
标题Re: [问题] 虫雾..
时间Wed Nov 9 09:56:35 2005
※ 引述《Eeon ( なに?! )》之铭言:
: ※ 引述《FukadaKyoko (FQ)》之铭言:
: : - . -那枪兵打人也有火花出来啊,不讨论这个,不是重点
: 呃....
: 我不是说有没有扣血跟火花有关..
: 那一句,我是回答,你说跟dragoon 比较, Tank 没有弹头的部份...
: : 这边我不是很确定,请问你有实测数据吗?
: : 比如说火焰兵或破坏能攻击虫雾中单位的损伤
: : 我只知道Tank打虫雾中会打折扣,因为只有喷溅在作用
: 我又改了一下刚刚那个地图,多加了一大沱marine 在三点区那边,
: 立起来的英雄坦克旁, 你可以把一大沱 marine 带出来,挤的 很密很密,
: 不要太小块,然後洒虫雾,控坦克打中间的marine,
: 结果炮火着弹点会平移,
: 然後去看marine的扣血量,你会发现,还是有marine扣到100%应扣血量, 73 滴血的。
: (就是有另一个人可能会比较衰,本来炮火不是瞄准他,结果虫雾一移,变成被正中。)
: 可见严谨的说,splash扣血量应不受虫雾影响,
: 按新的着弹点,应扣100%,还是扣100%,应该 50% 的还是 50%,
: 虫雾作用在於让敌人打不准。
: 所以我说
: "而 "喷溅攻击" 造成的伤害 则可能会有折扣,
: 因为打歪了,本来要正中,结果变成只有扫到。
: 或者 运气更好,偏移後落点更好...XD 不过,这机会应该比较小..) "
: : 那麽虫雾中我如果有很多兵放在一起,敌方攻击我平移一格之後
: : 应该要打到该目标旁边的单位吧?
: : 但是我方并无人受伤啊
: : 我认为那种可受到保护应该是陷阱视为人员单位而非建筑物
: 关於这个..我也一并放进比较新的地图里了..
: 结果 陷阱应该不算 "men"(人员) , 也不算 "building" 但是算 "unit" 是没问题。
: (unit 这个集合包含 men 和 building 两个子集。)
: 我多写了三个 trigger,
: 第一个:当玩家把一只刺蛇带到右边的beacon附近时,
: 所有的 "men" (人员) 通通会被干掉,
: 结果实际run时,我把刺蛇带过去,炮台没爆,
: 第二个:当玩家把一只刺蛇带到中间的beacon附近时,
: 所有的 "building" (建筑) 通通会被干掉,
: 结果实际run时,我把刺蛇带过去,炮台还是没爆。 XD
: 第三个:当玩家把一只刺蛇带到左边的beacon附近时,
: 所有的 "unit" 通通会被干掉,
: 结果实际run时,我把刺蛇带过去,炮台终於爆了。 (beacon 跟炮台属同一类型。)
: 地图位址一样是:
: http://eeon.myweb.hinet.net/test2.scx
: 我又仔细观察刺蛇口水弹着点受到虫雾的影响,
: 当目标是 men 时, 口水弹着点 会平移,
: 而目标是 building 时, 弹着点则不会平移。
: 因此我本来的说法应该不太正确,
: 应该是看目标 是 men 还是 building 来决定虫雾会不会作用在该发攻击上。
: (陷阱炮台是个很有趣的东西,跟据上述测试不被看成men 或 building,
: 但是弹着点会平移。)
: 至於以下这一段...
: " 那麽虫雾中我如果有很多兵放在一起,敌方攻击我平移一格之後
: 应该要打到该目标旁边的单位吧?
: 但是我方并无人受伤啊 "
: 我的猜想是,当程式在决定目标扣血量时,需要考量目标的位置,
: 而目标的位置,程式是采一个点 (很小很小很小的点) 来判断,
: 而不是地图"单位图格",像上面那一张测试地图,
: 地图图格仅有 128,可是当单位放不下时,程式显示的警告讯息坐标位置是 一两千的。
: 因此,程式在run 的时候,地图图格是没啥意义的,而是用很小单位的位置坐标系统。
: 回归正题,所以有一个marine 甲,如果我们看起来他在地图图格坐标(1,1),
: ("假设"地图图格坐标比程式坐标系统比例尺 1:100)
: 他的程式坐标系统位置可能是 (50,50),
: 然後他旁边的地图图格(1,2)有一只marine 乙,其程式坐标系统为(50,145),
: 在虫雾作用下,本来要打到 程式坐标系统(50,50)的机枪炮火被移到 (50,150),
: 於是在动画上看来,好像marine乙被炮火打到了,
: 可是程式在判断扣HP时,他要扣的人是位在程式坐标系统(50,150)的人,
: 可是地图图格(1,2)的marine乙 程式坐标系统为(50,145) ,并不是 (50.150)。
: 於是造成子弹在地图图格(1,2)的marine身上,可是他却没扣血。
: (事实上,一个地图单位图格,可以塞n只marine,
: 如果程式用地图单位坐标来处理的话,程式应该会错乱。)
Hmm..
上面这个有关非splash 的伤害的说法,之前只是猜想而已,没仔细验证过..
(因为验证比较麻烦..Orz)
刚认真地弄了一下..
测试图是刚又updated的 test2.scx ..
首先要先把地图图格和程式坐标系统的比例弄出来,
跟据地图一开始显示的错误讯息,神民运输船产生点是地图中央,
可得出 地图图格和程式坐标系统的比例应该是 2048/64=32,
所以理论上如果可以在一定大小的n个见方格内(当然越大越大好)
的这 32 X 32 X n 个坐标小点都各放一颗spider mine,
那麽上面的说法成不成立就很好验证了。
不过这很难办到 。
(想像一下 要在 1 X 1 的地图方格内放上 1024颗 "不同"位置的 spider mine..~_~)
所以我们只能退而求其次...尽量塞..
刚努力地塞了一下,然後用templer放一次电,
得到中央区块很密的时候,也只kill 249 mines,
templer电的范围假设小一点 3 X 3,共有 九个方格,
平均一个方块也只放到不到三十个的 mine..~_~
而且还有可能有重覆的..(虽然可能不多)..Orz
为了方便计算就算三十个好了...1024点 算一千点,然後位置都不重覆好了..
随便一发平移後打到某个方格的炮火,
要命中雷的机率只有 30/1000 = 0.03....orz
算不中的机率为 0.97。
那麽尝试两次不同位置,不中的机率是 0.97^2 约为 0.94,
以此类推尝试n次不同位置,不中的机率是 0.97^n 。
当n=30时,不中的机率约为0.4,也就是,
如果之前我的非splash弹着点说法正确的话,
在尝试了三十次平移不同位置後,应该有超过一半以上的机会会命中。
继续地加大测试次数,则可取得更有效力的检验。
不过我试了一下..还没有发生在虫雾中的mine被非splash的range攻击打爆的情形发生,
有两种可能 A.我原来的说法要修正。 B.刚好都发生不中。
从以上这个model看来,尝试次数一大,
(ex: 90 次,就可将不中机率压在 0.4^3= 0.064), 不是那麽容易不中。
(有兴趣的可以下test2.scx 来帮忙测试,加大信心强度。
triger 为 在5点中方向,会在一个地方自动生出 vulture,
如果将一个部队移到 vul 生成点左下方的beacon,会把地雷转给电脑玩家,
(因为自己杀自己的部队,不算 kills,所以要把雷转给电脑) )
所以如果要总结的话,
虫雾的作用流程应该是先看目标为何而定,再看弹着点和splash与否,来决定最终伤害值。
目标:
1.building => 虫雾不作用,弹着点不变。
2.men => 虫雾作用,弹着点平移一格,做出动画,考虑攻击型态,
2.a 攻击型态没有splash属性,攻击无效,没人受伤。
2.b 攻击型态有splash属性,按照新弹着点来计算splash属性伤害,
中央一圈者 100%,第二圈 50%, 第三圈 25%。
注:
小炮台 和 小瓦斯桶 , 小矿石, 比较特殊,
程式本身是视为 非 men 非building。
(其属性是 men 或 building,在写RPG地图时很重要。
有时会利用到计算部队或建筑个数的trigger conditions。)
不过在魔法属性作用时,则将其纳入 "men" 的系统处理,
所以
虫雾中,有弹着点平移效果。
科学船可对其加防御方阵,保护。 templer 可用电,伤害之。
会被地雷炸伤。
: 而攻击属性是splash的话,扣血量则是看范围,
: 亦即着弹点 程式坐标系统 某个半径内100%, 第二圈 50% ,第三圈 25%。
: 所以虽然某个目标的程式坐标系统并没有很准确地跟
: 平移後的着弹点的坐标系统一模一样,还是扣了100%的血。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.25.192
※ 编辑: Eeon 来自: 220.135.25.192 (11/09 09:57)
※ 编辑: Eeon 来自: 220.135.25.192 (11/09 10:00)
1F:推 hipponipple:欢迎加入国科会 11/10 00:07
2F:推 darkeyes:National Starcraft Science Council ?! 11/10 23:29
3F:推 HolyStaff:干 原po你真的可以出论文了 orz 11/13 23:43
4F:推 davidbright:push 01/05 09:33
5F:推 fragmentwing: 这篇太猛了吧 10/02 23:46