最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【我?guī)旺椊切辀ug】囚犯們神秘的解放機(jī)制

2020-12-25 07:10 作者:等--等燈等燈  | 我要投稿

前言和bug簡介

這個系列內(nèi)容大概是科學(xué)分析一些游戲bug或"bug"的原理并給出可能的解決方案

往期內(nèi)容歡迎查看本人專欄

本期的是新囚犯敵人專場,新囚犯敵人的解放機(jī)制上出現(xiàn)了2個bug
第一個:囚犯敵人處于警報模式時(即身上橙光閃爍),無法被重犯強(qiáng)制激活。詳情可見
此視頻約1分30秒處
第二個:弓箭手囚犯解放后被禁錮,再次進(jìn)入解放模式僅需3次遠(yuǎn)程攻擊,且跳過警報模式

本期內(nèi)容中第2個bug的分析與fux2大佬共同完成,在此特別感謝


囚犯機(jī)制的詳解

在弄清楚bug的成因前,首先需要知道囚犯的詳細(xì)機(jī)制

囚犯一共擁有3種模式,分別為:禁錮模式,警報模式,解放模式

進(jìn)入禁錮模式時,會創(chuàng)建4層buff(以下簡稱為計數(shù)buff)
計數(shù)buff的效果為:在進(jìn)行攻擊前,減少一層計數(shù)buff(最低降至0),隨后判斷計數(shù)buff的層數(shù),如層數(shù)等于1,則切換至警報模式

進(jìn)入警報模式0.05s后,會創(chuàng)建另一個buff(以下簡稱為警報buff)
警報buff的效果為:在進(jìn)行攻擊前,減少一層計數(shù)buff(最低降至0),隨后切換至解放模式
警報buff屬于衍生buff,僅可存在于警報模式下(退出警報模式時自動結(jié)束)

解放模式下,會持有特征buff,方便禁錮裝置判斷目標(biāo)是否處于解放模式


無法強(qiáng)制解放的警報模式

首先是第一個bug,警報模式的囚犯無法被重犯(或杰斯頓)強(qiáng)制激活

重犯的強(qiáng)制解放的機(jī)制為,檢測敵人身上是否持有計數(shù)buff,如果持有計數(shù)buff,則清空計數(shù)buff(層數(shù)直接歸0),并直接將其切換至解放模式
這里可以直接進(jìn)行推測,由于某種原因,警報模式下的囚犯,身上不存在計數(shù)buff,因此無法被重犯強(qiáng)制解放
進(jìn)一步推測可以發(fā)現(xiàn),導(dǎo)致計數(shù)出問題的,只可能出現(xiàn)在“進(jìn)行攻擊前”這個節(jié)點(diǎn)上

讓我們實(shí)際推一遍囚犯計數(shù)buff的變化:

4層buff -> 攻擊前,4-1層,剩余3層 -> 第1次攻擊 -> 攻擊前,3-1層,剩余2層 -> 第2次攻擊 -> 攻擊前,2-1層,剩余1層,切換至警報模式

問題出現(xiàn)在這里,切換至警報模式后,原本還未進(jìn)行的攻擊由于模式切換不復(fù)存在,無法繼續(xù)進(jìn)行
而切換至新模式后,程序會立刻嘗試下一次攻擊,觸發(fā)成功后會再次觸發(fā)一個“進(jìn)行攻擊前”的節(jié)點(diǎn)
因此后續(xù)的邏輯為:

攻擊前,2-1層,剩余1層,切換至警報模式 -> 攻擊前,1-1層,剩余0層 -> 第3次攻擊

很明顯可以看出,在第3次攻擊開始后,計數(shù)buff由于“進(jìn)行攻擊前”節(jié)點(diǎn)的多次觸發(fā),已經(jīng)不復(fù)存在
因此,重犯無法強(qiáng)制激活警報模式下的敵人

修復(fù)方案1:進(jìn)入警報模式極短時間后,再創(chuàng)建一層計數(shù)buff(不推薦)
修復(fù)方案2:讓重犯在檢測到禁錮模式特征buff(enemy_confinement)或警報模式特征buff(enemy_liberty[warning])時,可強(qiáng)制解放目標(biāo)


只需三次攻擊解放的弓箭手

然后是第二個bug,弓箭手囚犯解放后被禁錮,再次進(jìn)入解放模式僅需3次遠(yuǎn)程攻擊,且跳過警報模式

bug的具體表現(xiàn),動圖為NGA@hxiaiya提供,在此感謝

這個bug比較詭異,我們可以先從邏輯上進(jìn)行一些推理

首先,不考慮其它單位的情況下,能切換至解放模式只有一種手段,就是觸發(fā)了警報buff(即在已經(jīng)獲得了警報buff的情況下,觸發(fā)一次“進(jìn)行攻擊前”節(jié)點(diǎn))
但是獲取警報buff只有一種途徑,即切換至警報模式0.05s后
所以,從理論上來講,警報模式不可能被跳過,只是持續(xù)了一個極短的時間

但是,最令人迷惑的點(diǎn)不是上面的內(nèi)容,而是:為什么解放后再禁錮會導(dǎo)致前后出現(xiàn)差異?這其中發(fā)生了什么變化嗎?
多遍確認(rèn)后,可以確定:對比再次禁錮前后的禁錮模式,buff并沒有發(fā)生任何變化
那么可以確定變化并不是出在buff身上

這個bug還有一點(diǎn)很特殊的地方在于
囚犯敵人中僅弓箭手會出現(xiàn)這個bug
經(jīng)測試后發(fā)現(xiàn),出現(xiàn)這個bug的條件是使用遠(yuǎn)程攻擊,弓箭手使用近戰(zhàn)攻擊時并不會觸發(fā)這個bug
對于敵方單位來說,近戰(zhàn)攻擊和遠(yuǎn)程攻擊的不同之處在于狀態(tài)機(jī)的不同(近戰(zhàn)阻擋使用Combat,遠(yuǎn)程攻擊使用Attack)
而狀態(tài)機(jī)的不同,帶來的一個區(qū)別是,敵人的遠(yuǎn)程攻擊需要使用觸發(fā)器(Trigger)來判斷條件進(jìn)行觸發(fā),而近戰(zhàn)攻擊不需要這個,可以直接觸發(fā)

每個模式使用不同的觸發(fā)器
最常用的一種觸發(fā)器是選擇觸發(fā)器(SelectorTrigger)
大概邏輯就是,攻擊范圍內(nèi)有指定個符合選擇器條件的單位時,觸發(fā)攻擊
這種觸發(fā)器有一個很有意思的地方,就是它是有冷卻的
每次搜索目標(biāo)后,觸發(fā)器都會進(jìn)入持續(xù)3幀的冷卻。在這段時間內(nèi),嘗試搜索目標(biāo)都會直接失敗
對機(jī)制比較熟悉的朋友應(yīng)該能想到,這就是所謂的“索敵幀”(其實(shí)我不喜歡這個稱呼,因為它并不準(zhǔn)確,我會在下文中稱其為“索敵冷卻”)

那么,在考慮了索敵冷卻后,我們再來推一遍禁錮前囚犯身上發(fā)生的變化,為了簡便直接從身上剩余2層計數(shù)buff開始:

2層計數(shù)buff -> 嘗試觸發(fā)攻擊,成功,禁錮模式觸發(fā)器進(jìn)入3幀冷卻 -> 攻擊前,2-1層,剩余1層,切換至警報模式 -> 嘗試觸發(fā)攻擊,成功,警報模式觸發(fā)器進(jìn)入3幀冷卻 -> 攻擊前,1-1層,剩余0層 -> 第3次攻擊開始 -> 獲得警報buff -> 第3次攻擊結(jié)束 ->?嘗試觸發(fā)攻擊,成功,警報模式觸發(fā)器進(jìn)入3幀冷卻 -> 攻擊前,切換至解放模式

毫無問題是嗎?
我們現(xiàn)在加入一個條件,切換至一個模式后,其它模式的選擇觸發(fā)器不會進(jìn)行冷卻更新
注意上面過程中加粗的地方,由于在警報模式的觸發(fā)器進(jìn)入冷卻后,立刻從警報模式切換至了解放模式,因此警報模式的觸發(fā)器,在再次切換至警報模式前,始終保持3幀的冷卻
讓我們推一遍,保持著這個冷卻的情況下,也就是再次禁錮后,囚犯身上發(fā)生的變化:

2層計數(shù)buff -> 嘗試觸發(fā)攻擊,成功,禁錮模式觸發(fā)器進(jìn)入3幀冷卻 -> 攻擊前,2-1層,剩余1層,切換至警報模式 ->?嘗試觸發(fā)攻擊,失?。?警報模式觸發(fā)器仍處于3幀冷卻) -> 獲得警報buff(3幀>0.05s) -> 嘗試觸發(fā)攻擊,成功,警報模式觸發(fā)器進(jìn)入3幀冷卻 -> 攻擊前,1-1,剩余0層;切換至解放模式 -> 第3次攻擊開始

注意上文的加粗部分
由于觸發(fā)器的冷卻,導(dǎo)致禁錮后再次切換至警報模式后,攻擊無法立刻觸發(fā),需等待3幀
而3幀的時間>添加警報buff所需的0.05s
第3次攻擊觸發(fā)后,警報buff已經(jīng)被添加,因此這次攻擊前的行動節(jié)點(diǎn)會直接將弓箭手切換至解放模式

警報模式僅僅存在了3幀,一般情況下很難觀察到

感謝NGA@hxiaiya提供的動圖,動圖經(jīng)過一定處理方便觀察

修復(fù)方案1:切換模式時,重置切換前模式攻擊觸發(fā)器的索敵冷卻
修復(fù)方案2:延長進(jìn)入警報狀態(tài)后添加警報buff的延遲時間至0.1s以上



本文原載于NGA:https://ngabbs.com/read.php?tid=24802079

作者為本人

此專欄以CC BY-NC-SA 4.0協(xié)議發(fā)布

【我?guī)旺椊切辀ug】囚犯們神秘的解放機(jī)制的評論 (共 條)

分享到微博請遵守國家法律
温州市| 曲沃县| 凯里市| 荥经县| 田阳县| 游戏| 淳化县| 衡山县| 龙州县| 肥西县| 三门县| 封开县| 河西区| 东台市| 金塔县| 临泽县| 保康县| 苏尼特左旗| 始兴县| 临清市| 湘潭县| 永安市| 自贡市| 广灵县| 南丹县| 霍州市| 鸡泽县| 东乌珠穆沁旗| 禹城市| 瑞昌市| 遵义市| 莒南县| 福清市| 皮山县| 民丰县| 德兴市| 鸡泽县| 两当县| 玉环县| 溆浦县| 祥云县|