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

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

【MCJE】如何科學的設計“僵尸增援”銅錠農(nóng)場

2023-02-09 19:52 作者:易名亦名  | 我要投稿

配合視頻觀看體驗更佳;

如有錯誤,請指出;

目錄

  1. 結構概覽

  2. 設計特點

  3. 使用說明

  4. 農(nóng)場原理

  5. 理論計算與實驗

  6. 卡頓

  7. 參考資料

一、結構概覽

image-20230128205850263
image-20230129105522443

二、設計特點

1. 減小卡頓

對于僵尸增援的銅錠農(nóng)場來說,最影響效率的就是僵尸碰撞引起的卡頓,而腳手架等可攀爬方塊能夠取消碰撞計算,當僵尸生成后,會迅速進入腳手架中,直到被玩家殺死也不會離開腳手架,這就讓僵尸碰撞引起的卡頓降到最低。這也是銅錠產(chǎn)量能夠破萬的關鍵。

image-20230201093324515

2. 溺尸轉換

溺尸轉換的部分如下圖所示,僵尸的行進方向如箭頭所示,僵尸在行進過程中,一共受到三重阻力。

  1. 其一是腳手架會初步減速;

  2. 其二是底部的粘液塊會再次減速;

  3. 其三是頭部的水會進一步減速。

經(jīng)過三重阻力的影響,僵尸的速度降至最低。由于僵尸頭部一值浸泡在水中,當僵尸走到盡頭時,剛好能夠轉化為溺尸。

image-20230128205533112

3. 快速增援

如下圖所示,該銅錠農(nóng)場設置有快速增援模式。開啟該模式后,僵尸經(jīng)過的路上會部分粘液塊更換為巖漿塊,當僵尸走過巖漿塊時,會受到傷害,由于僵尸有仇恨在掛機者身上,僵尸會召喚增援。

經(jīng)過測試,僵尸走過六塊巖漿塊剛好不會被燙死。當僵尸走到盡頭時會轉化為溺尸,轉化后的溺尸的血量和增援能力會被重置,可以繼續(xù)召喚增援,從而實現(xiàn)快速增援。

在開啟快速增援模式后,大概掛機10分鐘左右僵尸和溺尸的總量便可以達到目標值??焖僭鲈J街饕糜趩与A段,在達到我們想要的水平后,需要關閉快速增援開關,否則僵尸數(shù)量會無限制的增長,另外下面講的卡頓檢測器在快速增援模式下是不起作用的。

image-20230129104144041

4. 重復啟動

該銅錠農(nóng)場在啟動一次之后,由于部分溺尸會持有掉落物,當玩家離開,區(qū)塊卸載時,這些溺尸并不會被清除,它們可以用于下一次啟動。

5. 卡頓檢測器

下圖便是卡頓檢測器,在正常模式(非快速增援模式)下,當發(fā)生掉刻時,卡頓檢測器通過控制粘液塊和蜂蜜快來減小刷怪平臺的大小,來減小增援速度,使TPS恢復至正常水平。

image-20230129110015373
image-20230129110419505

6. 循環(huán)計數(shù)器

下圖便是循環(huán)計數(shù)器,和卡頓檢測器一樣,循環(huán)計數(shù)器通過控制粘液塊和蜂蜜來控制初始刷怪平臺的大小。

image-20230129110559711

需要注意的是卡頓檢測器使用到了強模信號[1],比較器在檢測木桶容器部分會輸出強度為30的強模信號,強模信號這里不過多贅述,具體請查看參考資料。


三、使用說明

1. 該銅錠農(nóng)場設計用于末地,不需要做特別的遮光,如果做在主世界,需要進行遮光處理。

2. 掛機時,掛機的玩家可以持任意劍類武器,站在玻璃板上對盔甲架進行橫掃即可,攻擊間隔為13tick。劍類武器請勿附魔橫掃之刃。在掛機時無法進行食物補給,建議使用生命恢復1的信標,生命恢復提供的血量能夠抵消饑餓造成的傷害,從而實現(xiàn)長時間掛機。

image-20230129182316389

3.上圖所示的左右兩個音符盒是控制平臺大小的開關,如果在掛機銅錠農(nóng)場同時需要做一些其他的小工程,可以將平臺大小調值6擋,如下圖所示即可,產(chǎn)量大概在6~7k/h左右。

image-20230129132314545

4. 如果追求高產(chǎn)量,則建議將平臺大小調至2擋,如下圖所示,產(chǎn)量取決于你的電腦性能。

image-20230129132620550

5. 該銅錠農(nóng)場的收集使用了打包機[2],不需要的可以自行更換收集裝置。

6. 在建設過程中,注意需要將玩家和轉化后的溺尸放在同一區(qū)塊內(nèi)。如果溺尸轉化的位置和玩家不再同一區(qū)塊內(nèi),在溺尸轉化時,溺尸會對玩家失去仇恨。

image-20230129183222229

四、農(nóng)場原理

1. 區(qū)域難度

在講解農(nóng)場原理之前,有必要了解一下區(qū)域難度[3],不僅僅是僵尸增援銅錠農(nóng)場,其他一些基于刷怪的農(nóng)場的效率都會受到區(qū)域難度的影響。區(qū)域難度對僵尸增援銅錠農(nóng)場的效率影響也是比較顯著的。

image-20230129184314872

打開F3,如上圖所示,在Local Difficulty所在行有兩個數(shù),雙斜杠左側為區(qū)域難度(Regional difficulty),簡稱RD,右側為副區(qū)域難度(Clamped regional difficulty),簡稱CRD。兩者的關系如下圖所示。

image-20230130221446020

區(qū)域難度主要受到三個時間影響,分別是游戲天數(shù)、月相和居住時間。區(qū)域難度隨著游戲天數(shù)逐漸增加,月相的變化提供難度的波動,在一個區(qū)塊居住的時間越長,其難度也就越高。

當游戲天數(shù)大于63天且玩家在某個區(qū)塊的居住時間大于16.67h時,該區(qū)塊的副區(qū)域難度會保持最大1,且此區(qū)塊的難度不會再受到月相的影響。

在這里我們只需要知道,當區(qū)域難度大于4或者副區(qū)域難度為1時,僵尸增援的效率最高。后續(xù)的設計和測試均會在此區(qū)域難度大于4或者副區(qū)域難度為1的條件下進行。

2.溺尸的轉化

當僵尸的頭部浸潤到水中600tick(即30s),僵尸開始轉化為溺尸。轉化一旦開始,不會停止,在300tick(即15s)后,僵尸會轉化為溺尸,因此一個僵尸轉化為溺尸的時間為45s[4]。轉化為溺尸后,原有僵尸的屬性均會重置,比如血量,是否為僵尸首領,僵尸增援的能力等等,我們可以認為是在原來僵尸的位置重新生成一個溺尸,并將原來的僵尸從世界中刪除。利用這個特性,我們可以通過擊殺僵尸轉化的溺尸,來獲得銅錠。值得注意的是,轉換后的溺尸是會保留原來僵尸身上的裝備。

3. 僵尸增援

僵尸增援中的僵尸,泛指僵尸和繼承僵尸類的生物實體,比如溺尸,僵尸村民,尸殼等,這些生物均能進行僵尸增援。僵尸增援的生物均為僵尸,并不會生成繼承僵尸類的生物。僵尸增援的來源主要來自兩個部分,其一是僵尸首領所增援的僵尸,其二是非僵尸首領的僵尸所增援的僵尸。這里我們統(tǒng)一一下說法,對于非僵尸首領的僵尸,下面會一律稱為普通僵尸。在次,我們需要了解一下僵尸首領[5]

1) 僵尸首領

僵尸和繼承僵尸類的生物均有僵尸首領,包括小僵尸也有可能成為僵尸首領。

僵尸首領與普通僵尸最大區(qū)別就是最大血量值和僵尸增援的能力。僵尸首領的最大血量是一般是普通僵尸的1-4倍,如果看到最大血量大于20的僵尸,其一定是僵尸首領。盡管僵尸首領最大血量很大,但是其生成時的血量仍和普通僵尸相同,即20血。

僵尸有一個屬性zombie.spawn_reinforcements,是用于控制僵尸增援的能力,下面用概率Psr表示。我們可以認為,增援能力是僅在困難難度下,僵尸在受到傷害時,召喚僵尸的概率,且每只僵尸每次受傷最多召喚一個僵尸。我們可以通過下面這條指令查看離我們最近的僵尸的增援能力。

/attribute @e[type=minecraft:zombie,limit=1,sort=nearest] minecraft:zombie.spawn_reinforcements get

在困難難度下,普通僵尸的初始增援能力Psr是介于0~0.1的任意一個值,即0<Psr<0.1。僵尸首領在生成時,其初始增援能力會在普通僵尸的基礎之上增加%5CDelta%20P_%7Bsr%7D,%5CDelta%20P_%7Bsr%7D是介于0.5~0.75之間的任意值,因此僵尸首領的增援能力為P_%7Bsr%7D'%3DP_%7Bsr%7D%2B%CE%94P_%7Bsr%7D,即0.5<Psr'<0.75。

僵尸首領的生成概率Pzl與副區(qū)域難度CRD有關,Pzl=CRD*0.05。對于因此當CRD最大時(CRD=1),有著最大的僵尸首領生成概率


max%5C%7BP_%7Bzl%7D%5C%7D%3DP_%7Bzl%7D%7C_%7BCDR%3D1%7D%3D0.05%5Ctag%7B4%20-%201%7D

2) 懲罰機制

當僵尸受到傷害并成功召喚一只增援僵尸時,召喚增援的僵尸和被增援的僵尸的增援能力均會有5%的衰減,以防止游戲難度過高。很顯然,這個懲罰機制增加了溺尸農(nóng)場的設計難度。值得注意的是,當僵尸轉化為溺尸后,溺尸的增援能力會重新初始化。

考慮懲罰機制,每只普通僵尸(0<Psr<0.1)最多會增援兩只僵尸;每只僵尸首領(0.5<Psr'<0.75)最多能夠增援17只僵尸。

3) 增援區(qū)域

接著是僵尸增援的區(qū)域,對于僵尸的位置,我們可以認為是僵尸腳所在的方塊就是僵尸的位置。僵尸增援的區(qū)域共有27個。分別是1個點區(qū)域、6條線區(qū)域、12個面區(qū)域和8個體區(qū)域,如下所示。

2023-01-17_21.41.30

假設召喚增援的僵尸坐標為(x0, y0 ,z0),則增援僵尸的位置為(x1, y1 ,z1)可以用下列代碼[6]計算:

int x1 = x0 + Mth.nextInt(this.random, 7, 40) * Mth.nextInt(this.random, -1, 1);
int y1 = y0 + Mth.nextInt(this.random, 7, 40) * Mth.nextInt(this.random, -1, 1);
int z1 = z0 + Mth.nextInt(this.random, 7, 40) * Mth.nextInt(this.random, -1, 1);

Mth.nextInt(this.random, 7, 40)表示在7-40之間隨機取一個整數(shù),包含7和40,Mth.nextInt(this.random, -1, 1)表示在-1、0和1之間任取一個數(shù)。

因此可以用于增援僵尸的位置一共有328509個方塊,請問選中這328509個方塊中任意一塊的概率是否相同,可以思考一下。

……

答案是不同的。剛才提到僵尸增援的生成區(qū)域共有27個,每個區(qū)域被選中的概率是相同的,均為1/27。但是不同區(qū)域所包含的方塊數(shù)量是不同的,很顯現(xiàn)點區(qū)域僅包含1個方塊,那么這個區(qū)域被選中的概率就是1/27,體區(qū)域所包含的方塊最多,其中一個方塊被選中的概率最小,僅有%5Cfrac%7B1%7D%7B27%5Ctimes(40-7%2B1)%5E3%7D%5Capprox9.42%5Ctimes10%5E%7B-7%7D,可以看到相差甚遠。

因此我們可以得到選中每個區(qū)域的方塊的概率:

  • 點區(qū)域:

P_p%3D%5Cfrac%7B1%7D%7B27%7D%5Ctag%7B4%20-%202%7D

  • 線區(qū)域:

P_l%3D%5Cfrac%7B1%7D%7B27%5Ctimes(40-7%2B1)%7D%5Capprox1.08%5Ctimes10%5E%7B-3%7D%5Ctag%7B4%20-%203%7D

  • 面區(qū)域:

P_a%3D%5Cfrac%7B1%7D%7B27%5Ctimes(40-7%2B1)%5E2%7D%5Capprox3.20%5Ctimes10%5E%7B-5%7D%5Ctag%7B4%20-%204%7D

  • 體區(qū)域:

P_v%3D%5Cfrac%7B1%7D%7B27%5Ctimes(40-7%2B1)%5E3%7D%5Capprox9.42%5Ctimes10%5E%7B-7%7D%5Ctag%7B4%20-%205%7D

如果僵尸確定需要生成增援僵尸,則游戲會在上述區(qū)域內(nèi)隨機選擇方塊 并判斷是否符合僵尸生成條件,如果不符合,繼續(xù)選擇其他位置,此過程最多進行50次,超過50次就生成增援失敗,這種生成失敗并不會觸發(fā)懲罰機制。

值得注意的是,盡管點區(qū)域的方塊被選中的概率最高,但是大部分情況下,此方塊通常會與召喚增援的僵尸有碰撞沖突,因此大概率不會滿足僵尸的生成條件,但也并非絕對,因此我們可以忽略點區(qū)域。

而你們常見到的僵尸增援銅錠農(nóng)場通常就是使用的線區(qū)域進行刷怪,其實線區(qū)域已經(jīng)足夠產(chǎn)生鏈式反應了,但是我設計的農(nóng)場采用的是面區(qū)域進行刷怪,主要就是為了減小卡頓。


五、假設與實驗

1. 假設

我們在設計銅錠農(nóng)場時,做出下列假設:

1. 假設可以生成增援的方塊數(shù)量為Aa,由于采用的是面區(qū)域進行刷怪,因此平臺的大小限制生成增援的比率如下,下面將其簡稱平臺使用率 ;

P_%7Bp%7D%20%3D%20A_a%20P_a%3D3.20%5Ctimes10%5E%7B-5%7D%20A_a%5Ctag%7B5%20-%201%7D%20%5Clabel%7B5-1%7D

2. 假設每秒攻擊β下,即攻速為β/s,則%5Cfrac%7B20%7D%7B%5Cbeta%7D就是間隔攻擊的tick數(shù)。顯然,攻速β越快,單位時間的產(chǎn)量就越高,單位時間殺死和需要生成的溺尸數(shù)量也就越多,所堆積的僵尸和溺尸的數(shù)量也就越少。對于劍來說,劍的最大攻速為β=1.6次/s,最小攻擊間隔為%0A%5Cfrac%7B20%7D%7B%CE%B2%7D%3D12.5tick,因此我們可以選擇13tick作為攻擊間隔,此時的%5Cbeta%3D%5Cfrac%7B20%7D%7B13%7D%3D1.538。

玩家在不使用搶奪附魔的工具擊殺溺尸時,掉落一個銅錠的概率為11%,每級搶奪魔咒會增加2%的掉落概率,因此使用搶奪三的劍擊殺溺尸掉落銅錠的概率為P_%7Blooting%7D%3D11%5C%25%2B3%5Ctimes2%5C%25%3D17%5C%25。

為了保證溺尸有足夠的次數(shù)進行僵尸增援,顯然每次攻擊的傷害越少越好。使用不含橫掃之刃魔咒的劍對護甲值為0的生物進行橫掃時,不管是木劍還是下屆合金劍,其對于沒有護甲的生物的橫掃傷害均為1點傷害,并且橫掃能夠使在橫掃范圍內(nèi)的所有生物都會受到橫掃傷害,這就保證了傷害的持續(xù)和穩(wěn)定。

但是僵尸在不穿帶任何防具時是有2點基礎護甲值,其中有些僵尸會生成防具,并且部分僵尸會撿起其他僵尸掉落的防具,這就降低橫掃產(chǎn)生的傷害,使得橫掃產(chǎn)生的傷害具有了不確定性,并且這種不確定性是無法進行計算的。因此我們需要設計實驗進行測試。

2. 實驗

1)實驗1 - 1 存在僵尸的平均數(shù)量僵尸的生成速度關系測定

a. 實驗環(huán)境

實驗環(huán)境如下圖所示:

image-20230130222644088

僵尸會生成在盔甲架的下方,假人通過橫掃盔甲架來對僵尸造成傷害,當僵尸的生成速度一定時,僵尸的數(shù)量會維持在一定的水平。

  • 為了保證測試結果的準確性,測試采用的是僵尸而非溺尸,因為在實際擊殺的是有僵尸轉換的溺尸,由僵尸轉化的溺尸會保留原有的護甲,而自然生成的溺尸是不會生成護甲的;

  • 僵尸會生成在腳手架中,生物實體在腳手架、梯子和藤曼等可以攀爬的方塊中時,會取消不同生物之間的碰撞計算的,也就可以認為不同的生物之間不會發(fā)生沖突;

  • 由于小僵尸很難在僵尸增援中起到作用,因此需要排除小僵尸;

  • 實驗中,假人會以13tick為攻擊間隔對盔甲架進行攻擊,即攻速 %5Cbeta%20%3D%20%5Cfrac%7B20%7D%7B13%7D%E6%AC%A1%2Fs

  • 待數(shù)據(jù)穩(wěn)定后,每14tick采集一次數(shù)據(jù),每組數(shù)據(jù)采集100次。

b. 實驗原理

通過命令方塊控制每秒生成僵尸的數(shù)量Sps,當目標位置的僵尸數(shù)量穩(wěn)定后,記錄目標位置的僵尸數(shù)量n_z。在保證其他地方的防刷怪后,可以使用地毯模組的 /log mobcaps 指令,開啟怪物數(shù)量顯示,按下Tab鍵,第一個值就是當前的怪物數(shù)量,我們需要記錄每秒生成僵尸的數(shù)量Sps和當前存在僵尸的數(shù)量n_z

c. 實驗內(nèi)容

我需要分別測定并記錄當每秒生成僵尸的數(shù)量Sps=1、2、3 ... 20個/s時,對應的僵尸數(shù)量n_z。顯然這是一個重復的體力活,作為一個懶人,當然不會親自測定,而電腦就能輕松完成這個工作。

Python正好可以用于測定,使用pyautogui模塊進行自動化控制,采用ocr文字識別來識別當前的怪物數(shù)量,代碼也是非常的簡單,就是ocr文字是被有時會將8誤判為“日”字,需要單獨做一下修正,其他的識別錯誤直接忽略。

d. 實驗結果

實驗結果如下所示,由于生成僵尸時會有5%的概率生成小僵尸,因此需要剔除小僵尸的部分

做出曲線如下所示:

image-20230131140430366

可以看到,實驗圖像趨于一條直線,我們使用最小二乘法計算其回歸曲線為:

n_z%3D12.74s_%7Bps%7D%2B2.50%5Ctag%7B5%20-%202%7D

轉換為n_z與的關系為:

%5Cbegin%7Balign%7D%20n_z%26%3D12.74%5Cbeta%20s_%7Bpa%7D%2B2.50%5C%5C%20%20%26%3D19.6s_%7Bpa%7D%2B2.50%20%20%5Ctag%7B5%20-%203%7D%20%5Clabel%7B4-8%7D%20%5Cend%7Balign%7D

當Sps(或Sps)較大時,可以認為每次攻擊到的僵尸(溺尸)數(shù)量n_z與僵尸的生成速度Sps(或Spa)成正比。

2) 實驗1 - 2 僵尸受到的平均橫掃傷害的測定

a. 實驗原理

在腳手架處的僵尸數(shù)量穩(wěn)定后,每秒生成僵尸的數(shù)量Sps×僵尸基礎血量20 就是每秒橫掃產(chǎn)生的總傷害(即20Sps)。將總傷害分攤到每個僵尸身上就是僵尸平均每秒受到的橫掃傷害%7BD%20%7D_%7Bps%7D,即

%7BD%20%7D_%7Bps%7D%3D%5Cfrac%7B20s_%7Bps%7D%7D%7Bn_z%7D%20%5Ctag%7B5%20-%204%7D

平均每次橫掃產(chǎn)生的傷害%7BD%20%7D_%7Bpa%7D

%7BD%20%7D_%7Bpa%7D%3D%7BD%20%7D_%7Bps%7D%5Cfrac%7B1%7D%7B%5Cbeta%7D%3D%5Cfrac%7B13s_%7Bps%7D%7D%7Bn_z%7D%20%5Ctag%7B5%20-%205%7D

因此我們只需要對實驗1-1進行簡單的處理,即可得到實驗結果。

b. 實驗結果

做出僵尸在不同生成速度下受到的平均橫掃傷害圖像,如下所示。

image-20230131140621352

計算出其方差S%5E2、均值%5Coverline%7BD%20%7D_%7Bps%7D、平均偏差%5Coverline%20d和相對平均偏差%5Cfrac%7B%5Coverline%20d%7D%7B%5Coverline%7BD%20%7D_%7Bps%7D%7D分別為

S%5E2%20%3D%5Cfrac%7B%5CSigma_%7Bi%3D1%7D%5E%7B20%7D(D_%7Bpsi%7D-%5Coverline%7BD%20%7D_%7Bps%7D)%7D%7B20-1%7D%3D%200.0013%20%5Ctag%7B5%20-%206%7D
%5Coverline%7BD%20%7D_%7Bps%7D%3D%5Cfrac%7B%5CSigma_%7Bi%3D1%7D%5E%7B20%7D%20D_%7Bpsi%7D%7D%7B20%7D%3D1.53%E8%A1%80%2Fs%20%5Ctag%7B5%20-%207%7D
%5Coverline%20d%20%3D%5Cfrac%7B%5CSigma_%7Bi%3D1%7D%5E%7B20%7D%7CD_%7Bpsi%7D-%5Coverline%7BD%20%7D_%7Bps%7D%7C%7D%7B20%7D%3D0.0264%E8%A1%80%2Fs%20%5Ctag%7B5%20-%208%7D
%5Cfrac%7B%5Coverline%20d%7D%7B%5Coverline%7BD%20%7D_%7Bps%7D%7D%3D%5Cfrac%7B0.0264%7D%7B1.61%7D%20%5Ctimes%20100%5C%25%3D1.64%5C%25%20%5Ctag%7B5%20-%209%7D

可以看到測試出的方差較小,相對平均偏差%5Cfrac%7B%5Coverline%20d%7D%7B%5Coverline%7BD%20%7D_%7Bps%7D%7D小于5%,屬于可接受范圍內(nèi)。因此我們可以認為僵尸受到的平均橫掃傷害與僵尸的生成速度無關。轉換為每只僵尸(溺尸)每次攻擊的傷害如下:

%7B%5Coverline%20D%20%7D_%7Bpa%7D%3D%7B%5Coverline%20D%20%7D_%7Bps%7D%5Cfrac%7B1%7D%7B%5Cbeta%7D%3D1.53%5Ctimes%20%5Cfrac%7B13%7D%7B20%7D%3D0.995%E8%A1%80%2F%E6%AC%A1%20%5Ctag%7B5%20-%2010%7D%5Clabel%7B4-15%7D

3) 實驗2 模擬平臺使用率平均每次橫掃每只僵尸增援數(shù)量的關系

由于游戲存在僵尸增援的懲罰機制,僵尸的增援能力隨著增援的次數(shù)而衰減,這就很難從理論上計算每只僵尸能夠增援僵尸的數(shù)量。因此,我們可以通過計算機模擬結果。

a. 實驗原理

實驗平臺采用java平臺。注意,雖然游戲中使用的偽隨機算法與世界種子相關聯(lián),但是從概率上講,當樣品數(shù)量足夠大時,游戲的隨機結果與使用java自帶的隨機算法獲得的隨機結果可以認為相同。

模擬實驗可分成三層循環(huán)嵌套

  • 最外層循環(huán)用于改變平臺使用率P_p和計算對應的平均增援數(shù)量n_%7Br%7D;

  • 中間層循環(huán)用于根據(jù)概率選擇生成普通僵尸和僵尸首領;

  • 最內(nèi)層循環(huán)計算每個僵尸能夠召喚的增援數(shù)量。

根據(jù)實驗1-2的結論公式5-10,可以計算出每只僵尸平均需要橫掃次數(shù)為A%20%3D%20%5Cfrac%7B20%7D%7B%7B%5Coverline%20D%20%7D_%7Bpa%7D%7D%3D20.10%E6%AC%A1。A就是內(nèi)層循環(huán)的循環(huán)次數(shù),同時也用于計算平均每次橫掃每只僵尸增援數(shù)量。

b. 實驗結果

image-20230131194655301

c. 不發(fā)散的刷怪平臺大小計算

根據(jù)上述圖像,當我們知道每只僵尸(溺尸)每次增援的數(shù)量n_r時,就能夠選擇出對應的平臺使用率。接下來計算一下每只溺尸每次增援的數(shù)量n_r

根據(jù)n_r和每次攻擊到的僵尸數(shù)量n_z計算出每次攻擊生成僵尸的數(shù)量s_%7Bpa%7D%3Dn_rn_z,將實驗1-1的回歸方程5-2,代入得到:

s_%7Bpa%7D%3D(19.6s_%7Bpa%7D%2B2.50)n_r%20%5Ctag%7B5%20-%2011%7D

整理得到:

n_r%20%3D%20%5Cfrac%7Bs_%7Bpa%7D%7D%7B19.6s_%7Bpa%7D%2B2.50%7D%20%5Ctag%7B5%20-%2012%7D

19.6s_%7Bpa%7D%5Cgg2.5時,可以近似計算

n_r%20%5Capprox%5Cfrac%7Bs_%7Bpa%7D%7D%7B19.6s_%7Bpa%7D%7D%20%3D%20%5Cfrac%7B1%7D%7B19.6%7D%20%3D%200.051%20%5Ctag%7B5%20-%2013%7D

根據(jù)n_r%3D0.051查實驗2的圖像可以得到平臺使用率為

P_%7Bp%7D%3D0.0429%20%5Ctag%7B5%20-%2014%7D

根據(jù)公式4-6,對應面區(qū)域的刷怪面積為

A_a%20%3D%5Cfrac%7BP_%7Bp%7D%20%7D%7B3.20%5Ctimes10%5E%7B-5%7D%20%7D%5Capprox1340m%5E2%20%5Ctag%7B5%20-%2015%7D

根據(jù)實驗結果計算出我們需要使用到的面區(qū)域刷怪大小為1340格,這個可以認為是僵尸數(shù)量不發(fā)散時的刷怪面積。我們應該明白,實驗結果總會出現(xiàn)誤差,實驗計算結果A_a為我們限定了平臺的大小,為了保證僵尸數(shù)量不發(fā)散,我們需要在A_a的基礎之上,改變小范圍平臺的大小進行測試,這邊大大減小了測試的工作量。

3. 測試與驗證

經(jīng)過測試,當A_a%20%3D%201340m%5E2時,僵尸總數(shù)會發(fā)散,但是發(fā)散的速度相對緩慢,適當降到A_a%3D1207m%5E2時,不再發(fā)散。在A_a%3D1207m%5E2的條件下,通過4h的測試,測試結果如下圖:

image-20230131194727570

圖中橫坐標表示時間,縱坐標表示測試過程中對應時間的僵尸和溺尸總量n_a。n_a的大小可以直接反應出銅錠的產(chǎn)量,我們可以看到,初始n_a為500左右,但經(jīng)過4h的掛機后,會穩(wěn)定至1200-1400的范圍內(nèi)。

查實驗2表格得,當A_a%20%3D%201207m%5E2時,對應的每只溺尸每次增援的數(shù)量n_r'%3D0.050,則絕對誤差

e_r%20%3D%20%5Cfrac%7B%7Cn_r-n_r'%7C%7D%7Bn_r'%7D%20%5Ctimes%20100%5C%25%3D%202%5C%25%3C5%5C%25%5Ctag%7B5%20-%2016%7D

在誤差允許范圍內(nèi)。

如果你的電腦性能足夠好,僵尸和溺尸數(shù)量穩(wěn)定后電腦的性能并不會被榨干,你可以在使用假人掛機的時候,進行一下其他的小工程。但是對于電腦性能不足或者追求更高的效率的玩家來說,僅僅依靠平臺大小來控制僵尸和溺尸的數(shù)量就有些力不從心了。別急,后面會提供解決方案。


六、卡頓

1. 卡頓的來源

首先要提高溺尸塔的產(chǎn)量,就必須增加僵尸轉化為溺尸的速率,即必須得堆積足夠多的僵尸。因此卡頓的主要來源就是僵尸和溺尸的實體數(shù)量和它們之間的碰撞計算。

2. 卡頓的緩解

1)減少實體數(shù)量

緩解卡頓的第一個辦法是減小實體數(shù)量,溺尸群體每秒受到的總傷害可以直接反應出溺尸的死亡速率,進而決定銅的產(chǎn)量。在銅產(chǎn)量固定的情況下,總秒傷是不變的,因此攻速越高,所需的溺尸數(shù)量就越少。

游戲中,劍在不丟失傷害時的最大攻速為%5Cbeta%3D%5Cfrac%7B20%7D%7B13%7D%E6%AC%A1%2Fs,即間隔13tick進行橫掃攻擊。此時溺尸和僵尸的數(shù)量最小。

2)減少碰撞計算

我們可以看一下下面這組對比實驗,當1000個實體擠在100個的區(qū)域內(nèi),游戲已經(jīng)出現(xiàn)掉刻:

image-20230128155558965

當1000個實體之間沒有碰撞,游戲卡頓明顯減少:

image-20230128160708900

因此第二個緩解卡頓的方法是避免碰撞計算,當生物的腳部處于可以攀爬的方塊,如腳手架、梯子、藤曼等,是不會進行碰撞計算的,也不會因為實體數(shù)量過多導致窒息死亡。雖然使用線區(qū)域進行刷怪的效率很高,但是線區(qū)域很難讓僵尸快速的進入可攀爬的方塊,來減少實體碰撞,而面區(qū)域進行刷怪就很容易進入腳手架。這就是選擇面區(qū)域刷怪的原因之一。另外,在面區(qū)域運動的僵尸可以認為它們之間是沒有碰撞的。

3. 卡頓檢測器

卡頓檢測器[7,8,9]對于提高銅錠農(nóng)場效率,榨干電腦性能是非常有必要的。

1)原理

具有尋路AI的生物,在選定目的地后,會有兩種重新計算路徑的情況,分別是PP更新和路徑超時檢測。

當生物周圍有PP更新時,生物會重新計算路徑。

當生物超時未到達目的地時,生物也會重新計算路徑。在超時檢測中,所使用的時間是以毫秒為單位進行比較的,與游戲刻無關。當超時時間固定時,在沒有發(fā)生掉刻的情況下走過的游戲刻和發(fā)生掉刻的情況下走過的游戲刻是不同的,通過檢測這種變化,便可知道是否發(fā)生了掉刻。

超時時間與生物的移動速度和生物離節(jié)點目的地的距離有關,并非固定值。但我們可以通過控制初始條件相同來保證每次的超時時間相同。

2)卡頓檢測器

通過上面原理便可以設計出下面的卡頓檢測器,通過調低tps來模擬掉刻,當出現(xiàn)掉刻時該卡頓檢測器會輸出信號,使紅石燈亮起。

image-20230128173521232

在設計過程中,如果僅僅使用超時檢測,僵尸的超時時間很容易受到周圍環(huán)境的影響,造成超時時間不穩(wěn)定。經(jīng)過測試,當僵尸在更換路徑后,通過下圖指針指向的活塞,立刻在其周圍進行一次PP更新,會使其超時時間相對穩(wěn)定,測試出的超時時間能夠穩(wěn)定在11.88s。

image-20230128175054154

此外,當發(fā)生掉刻時,僵尸有一定的概率會發(fā)生抽風,在兩個重質壓力板之間反復走動,造成輸出不穩(wěn)定,因此增加了一個檢測抽風的裝置,當僵尸發(fā)生抽風后,左上方的粘性活塞會推出,阻止僵尸移動,使機器恢復正常。

在添加了卡頓檢測器后,通過3個小時的測試,測試出僵尸和溺尸的實體總量隨時間變化的結果如下:

image-20230131200637303

可以看到,在掛機2h后,僵尸和溺尸的總量隨時間呈鋸齒形變化,在這個過程中,游戲會在正常和掉刻之間反復橫跳。本人的電腦CPU為i5-9300H,GPU為GTX1650。測試得到極限僵尸和溺尸的總量在1600左右浮動,銅錠產(chǎn)量在1w+/h。


七、參考資料

[1]: [mc紅模]什么是紅石強模?如何跨線傳輸強模信號? (bilibili.com)

https://www.bilibili.com/video/BV1yN4y1G76K/

[2]: mc 最小完美無t觸靜音六倍速分類打包機 1.13+_嗶哩嗶哩bilibili

https://www.bilibili.com/video/BV1HG4y1h7Lp/

[3]: 難度 - Minecraft Wiki

https://minecraft.fandom.com/zh/wiki/%E9%9A%BE%E5%BA%A6

[4]:溺尸 - Minecraft Wiki

https://minecraft.fandom.com/zh/wiki/%E6%BA%BA%E5%B0%B8

[5]: 僵尸 - Minecraft Wiki

https://minecraft.fandom.com/zh/wiki/%E5%83%B5%E5%B0%B8

[6]: Minecraft1.19源碼獲取來源 GitHub - Hexeption/MCP-Reborn

https://github.com/Hexeption/MCP-Reborn

[7]: 【懶窮簡】實裝優(yōu)化的極限效率銅錠反應堆_我的世界 (bilibili.com)

https://www.bilibili.com/video/BV1BB4y1y7qN

[8]: 【MC】生存可用的卡頓檢測器【2No2Name】_嗶哩嗶哩_bilibili

https://www.bilibili.com/video/BV19z4y1y7UQ

[9]:[mc] 便宜又好用-生存可用的卡頓檢測器_嗶哩嗶哩bilibili_我的世界

https://www.bilibili.com/video/BV1cb4y1p7es



【MCJE】如何科學的設計“僵尸增援”銅錠農(nóng)場的評論 (共 條)

分享到微博請遵守國家法律
平遥县| 清水县| 高青县| 富裕县| 仁寿县| 乌兰察布市| 襄垣县| 赤水市| 日土县| 安西县| 镇远县| 平阳县| 东丽区| 五常市| 祥云县| 天门市| 宜兰县| 惠来县| 伊金霍洛旗| 图片| 天等县| 山东省| 广宗县| 如东县| 黄平县| 根河市| 台中市| 长治县| 天津市| 海淀区| 花莲市| 平陆县| 海林市| 成武县| 岳阳市| 探索| 襄城县| 普定县| 安顺市| 青海省| 正安县|