Wiske Abused 筆記

前往我的博客以獲得更好的 markdown 瀏覽體驗(yàn)以及更為長期的更新支持:
https://fallenbreath.me/2022/12/01/wiske-abused-notes

視頻傳送門
bilibili:BV1ze4y1g7SP
YouTube:https://youtu.be/HwL7VkD1pvY
主要的技術(shù)細(xì)節(jié)都在視頻里介紹完了,這里補(bǔ)充一些視頻里沒介紹的細(xì)節(jié):
刷怪面積布局
如果凋靈骷髏生成后,站在原地打死也不移動的話,理論上我們可以使用如下圖所示的 2/3 面積利用率的刷怪面積。顯然,這將顯著地提升凋靈骷髏塔的效率

可惜我們并不能使用這一布局,因?yàn)榈蜢`骷髏會跑到兩列凋靈玫瑰中間,去到一個礦車吸不到的位置
控制玩家與凋靈骷髏的距離,阻止凋靈骷髏隨機(jī)移動,是不能避免這個問題的,因?yàn)榈蜢`骷髏會被礦車推動。下面是一些礦車相關(guān)的知識:
在每個 gt 運(yùn)算礦車實(shí)體的時候,礦車會搜索一個范圍內(nèi)的實(shí)體,嘗試與其交互。這個范圍是其碰撞箱水平 4 方向各擴(kuò)大 0.2m。碰撞箱與這個范圍相交的實(shí)體都會被礦車嘗試交互
如果礦車是空載狀態(tài),這個實(shí)體將被吸上礦車
如果礦車已經(jīng)有了乘客,這個實(shí)體會被礦車往外擠
可以發(fā)現(xiàn),只要凋靈骷髏處于能被吸上礦車的站位,那么來一輛載著客的礦車,將會把凋靈骷髏往外擠,直至凋靈骷髏離開了能被礦車吸走的范圍

除非我們可以阻止凋靈骷髏往遠(yuǎn)離鐵軌的方向移動。可惜,到目前最新版本 1.19.2 為止,MC 里不存在能滿足不阻擋凋靈骷髏生成的,擁有極窄側(cè)向碰撞箱的方塊

如上圖為例,打開的活板門太寬了,活板門碰撞箱范圍與凋靈骷髏的碰撞箱相交,會導(dǎo)致凋靈骷髏無法生成
一種可行的解決方法是,利用生物尋路總喜歡回到方塊正中間的特性,放幾只鐵傀儡讓凋靈骷髏走兩步,走回方塊中間然后被礦車吸走。但這個解決方法的缺點(diǎn)也是顯而易見的:部署鐵傀儡非常影響刷怪面積的密度,凋靈骷髏的仇恨范圍不可控,并且凋靈骷髏索敵消耗的時間也比較高
沒辦法,還是得乖乖地用 1/2 面積利用率的布局
礦車物品循環(huán)
4 層刷怪面積,每 2 寬1個發(fā)射器,16gt 時鐘,那每一列都會有1x 漏斗速度的礦車流量,因此我們需要找個如 1 寬可堆疊 1x 漏斗速,或 3 寬可堆疊 3x 漏斗速的打包機(jī)來處理礦車掉落物
注意這里的打包機(jī)的處理速度需要為滿漏斗速度,也即換盒耗時不能超過 8gt,否則會在換盒時堆積輸入的礦車物品
最后為了便于實(shí)現(xiàn),也為了打包機(jī)部分的簡潔性,我選擇了 3 寬 3x 速打包機(jī),這樣會有比較充裕的空間進(jìn)行 8gt 換盒的布線

值得一提的是,這些 3 寬 3x 速打包機(jī)的滿速工作,是需要輸入端提供穩(wěn)定的 3x 漏斗速輸入的。如果有一個輸入盒子的漏斗不是穩(wěn)定的1x速輸入,那么 3 個輸入盒子的漏斗將無法同步其 8gt 運(yùn)行周期,這會導(dǎo)致打包機(jī)無法滿速工作,最壞情況下會導(dǎo)致礦車堆積
凋靈骷髏傳輸軌跡
理想情況下,凋靈骷髏應(yīng)該從刷出到死亡,全程待在礦車?yán)?,這樣可以能真正地最小化凋靈骷髏對刷怪上限的占用
不過這個設(shè)想的實(shí)踐難度極高:帶乘客的礦車流難以大范圍合并,尤其是考慮峰值流量的時候。作為參考,150頭/min 的產(chǎn)率下凋靈骷髏流量將達(dá)到一秒 45 只。如果用礦車運(yùn)載的話,與之對應(yīng)的礦車流量處理起來會非常棘手,還需要考慮實(shí)體擠壓窒息的問題
讓凋靈骷髏換乘礦車的操作也是不可行的。生物離開載具后會有 60gt 的騎乘冷卻,這對存活時間的影響是致命的。最為對比,最終設(shè)計(jì)里凋靈骷髏下車后的平均存活時間為 50gt。換乘船同理
最后我選擇了較為妥協(xié)的也最為直觀的方案:讓凋靈骷髏下車,用機(jī)械結(jié)構(gòu)傳送帶送凋靈骷髏走完最后一程

最后一次歸中
鐵軌礦車凋靈玫瑰刷怪面積這種架構(gòu)的最大特點(diǎn)是,能在幾乎不增加凋靈骷髏存活時間的前提下,提升刷怪面積,代價僅僅是卡頓會隨之增加
因此,為了最小化存活時間,最理想的情況下是,在所有凋靈骷髏進(jìn)入了玩家攻擊范圍的那一刻,就讓玩家揮劍擊殺凋靈骷髏。這樣雖然會因玩家附近 24m 不能刷怪而損失了一些刷怪面積,但換來的存活時間下降是非常值得的
不過,上述僅僅是理想情況。20 血的凋靈骷髏玩家是無法一刀殺死的,需要兩次攻擊。這意味著凋靈骷髏需要承受 2 次傷害,間隔至少 1 次傷害冷卻的時間,也就是 10gt
在這個凋靈塔的設(shè)計(jì)中,第一次傷害我選擇了 TNT 的爆炸。我將 TNT 給出傷害的時間點(diǎn)定在了 20bps + 26.67bps 匯聚的那一刻,這樣不僅能傷害到所有凋靈骷髏,還能讓 TNT 傷害覆蓋上層凋靈骷髏落地時的摔落傷害,統(tǒng)一化所有凋靈骷髏的血量。這應(yīng)該算是適合放置 TNT 爆炸室的最早時刻

在 TNT 傷害的 10gt 傷害冷卻時間里,凋靈骷髏被運(yùn)送到玩家旋風(fēng)斬范圍。傷害冷卻一結(jié)束,玩家揮劍斬殺凋靈骷髏

如果玩家揮劍遲了,凋靈骷髏在擊殺室落地了,也不需要擔(dān)心,因?yàn)橥婕业膫ψ銐蚋采w凋靈骷髏在擊殺室的摔落傷害,照樣可以秒殺凋靈骷髏
10gt 的時間并不多,再加上把凋靈骷髏從受TNT爆炸傷害處推出來的時間,剩余下彈凋靈骷髏的時間所剩無幾,這導(dǎo)致?lián)魵⑹译x刷怪平臺的高度無法做的太高。雖然這樣損失了一些刷怪面積,但這換來的存活時間下降依然是非常值得的

礦車軌道架構(gòu)
對于刷怪面積部分的鐵軌線路布局,我曾經(jīng)做出過如下圖右側(cè)的嘗試:

右側(cè)的布局看上去有著很多的好處:
礦車路程翻倍,有效提升了載客率,礦車物品的流量折半
發(fā)射器發(fā)車點(diǎn)和仙人掌扎車點(diǎn)接近,不需要長距離運(yùn)輸?shù)V車
下車點(diǎn)離中心更近了,凋靈骷髏下車后走傳送帶的耗時能減小
但實(shí)際測試下來,在相同的刷怪面積的情況下,右側(cè)布局的效率反而下降了,分析見下:
礦車的載客率提升會帶來凋靈骷髏等車時間的提升,尤其對于那些生成于鐵路末端的凋靈骷髏,得等好一會才能等到一輛空車。這導(dǎo)致了凋靈骷髏上車前存活時間的上升
除此之外凋靈骷髏上車前是沒有套上南瓜頭的,因此這部分對總刷怪上限占用存活時間的增加是100% 的權(quán)重,而非傳送帶里的 45% 權(quán)重
“-6gt(理論 + 實(shí)測)的傳送帶存活時間”的提升,還是抵不過“+2gt(實(shí)測)的上車前存活時間 + 刷怪面積阻擋”的下降
最后,右側(cè)布局里礦車跟凋靈骷髏在轉(zhuǎn)彎處增加的路程也會帶來不小的卡頓,這部分卡頓還是會隨著每層單元數(shù)的增加而增加的
與層相關(guān)的單元數(shù)
讓每層堆疊的單元數(shù)量與層數(shù)相關(guān)。比如將第四層最邊緣的單元移動追加至第一層末端。這樣可以進(jìn)一步減少一部分凋靈骷髏下車后的存活時間
但是由于這對存活時間的降低很小,會增加迭代機(jī)器的難度,更重要的是會讓機(jī)器變丑,我沒有去實(shí)施

細(xì)枝末節(jié)
各種刷怪塔通用的細(xì)枝末節(jié):
摳 lc
摳同層實(shí)體方塊數(shù)
加大游走范圍
……
摳 lc 或許能讓效率增加一丟丟,但是會讓機(jī)器變得很不好看。我可不喜歡為了摳 lc,而整出了個凹凸不平的傳送帶天花板
同層實(shí)體方塊當(dāng)然可以摳,但數(shù)量已經(jīng)沒多少了,個別的同層實(shí)體方塊對效率的影響其實(shí)甚至不如測量誤差大
加大游走面積的話會增加找到適配堡壘的難度,畢竟現(xiàn)在已經(jīng)需要 z 寬度 大于等于 ≥ 207m 了?,F(xiàn)在 10m 游走其實(shí)已經(jīng)非常足夠了,再加的收益非常低
傳送帶加速
現(xiàn)在凋靈骷髏下車后的歸中使用的是 20bps 傳送帶,如果能整出兼容的 30bps 傳送帶,可以進(jìn)一步地減小這一次橫向歸中所需要的存活時間
但是 30bps 并不是這么容易安上去的。30bps 的復(fù)雜度就不提了,這里還需要這個 30bps 還需要 4 高可堆疊,否則會導(dǎo)致效率下降
更重要的一點(diǎn)是,30bps 大部分以是 3 長為基本單位進(jìn)行堆疊,并且不支持每個位置都輸入生物的。但這凋靈骷髏塔的布局是每 4 格一個側(cè)向輸入口的,3 和 4 互質(zhì),因此必然會存在凋靈骷髏輸入口位于 30bps 的非法輸入位置的情況。這只有增加適配模塊調(diào)整凋靈骷髏位置才能解決,但這也會增加存活時間
總體來看,30bps 的工程可行性堪憂
雙維度
讓凋靈骷髏下車就進(jìn)傳送門,利用地獄門機(jī)制進(jìn)行歸中,利用跨維度機(jī)制來重置載具冷卻,讓凋靈骷髏在回地獄的時候立刻上船,類似 burst 的 1.19 凋靈塔(BV1e44y1f71v)
不過如果用了地獄門的話,那就是雙維度農(nóng)場的范疇了
視頻制作
mod
Optifine:光影。1.16.5 sodium 的透明方塊渲染真的不太行
Replay:核心渲染工具
G4mespeed:絲滑的活塞動畫
TweakFork:選擇性區(qū)域渲染,那些區(qū)域半透明的效果就是借助它做的
Carpet-TIS-Addition:拉滿方塊事件距離、實(shí)體追蹤距離,讓客戶端能看得見機(jī)器運(yùn)行時的所有事件
TweakerMore:拉滿客戶端的實(shí)體渲染距離和方塊實(shí)體渲染距離;保證渲染時玩家皮膚已加載;用偽夜視給 BSL v8 的光影增亮(Tweakeroo 的 GammaOverride 在這個光影下好像不太能用)
光影
BSL 8.0 以后,紅石中繼器跟紅石比較器在激活的時候會出發(fā)光效果,這會顯得很奇怪。雖然可以關(guān)掉光影設(shè)置里的 Material-Emissive 來解決,但這也會把其他光源的發(fā)光效果干掉
最終我的解決方法是修改光影包 zip 里?shaders/block.properties
?這個文件(猜測是用于決定各種方塊狀態(tài)的渲染邏輯的),把里面的?minecraft:repeater:powered=true
、minecraft:comparator:powered=true
?刪掉,就行了
這個方法至少在 BSL v8.2 有效
存檔
大部分凋靈骷髏塔的存檔都非常的大,存檔很多體積都被無用的自然地形填滿了,這顯然是非常令人不爽的
減少存檔體積的方法很簡單,將無用的 .mca 文件都刪掉,僅保留與機(jī)器有關(guān) region 的 .mca 文件
為了最小化地獄側(cè)的 mca 數(shù)量,在挑選地獄堡壘的時候,我就專門找了一個位于 region 中間的地獄堡壘,這樣整個凋靈骷髏塔包括空置域都能被一個 region 所包含
這樣,整個存檔只需要包含一個地獄側(cè) region 的 mca 文件,以及一個主世界出生點(diǎn) region 的 mca 文件,用于存放快速從出生點(diǎn)前往地獄的命令方塊

玩家數(shù)據(jù)進(jìn)度什么的文件體積占用不大,可以不做處理
最后,整個存檔的體積控制在了 2MB 左右,非常精簡