Minecraft 中的瘋狂滴答延遲
我在以下機器上執行 Minecraft:Windows 8 x64、8 GB RAM(為 Minecraft 分配了 4 個)、i5-2500K @ 4.5Ghz、AMD Radeon R9 290。
我有大約 70 個 mod,包括 Buildcraft、Thermal Expansion 和一些其他常見的技術 mod。我在早期版本的 Minecraft 中沒有遇到過這個問題。至於 Forge,我使用的是 1226(最新版本之一)。
現在,當我獨立於哪張地圖進行遊戲時,無論有無模組,遊戲執行起來非常不完整。我得到的平均幀速率為 30 與 Mods 和約 60 沒有 Mods。雖然我至少有 30 FPS,但遊戲卡頓。這是由所有 1-10 個刻度發生的隨機滯後峰值引起的。這是我的延遲計和分析器的螢幕截圖:
如您所見,有很多不規則的尖峰和非常高的滴答時間。此外,在“調試”視圖中,我不時收到一條消息,指出某些事情花費了太長時間,“root”或“root.tick”或“root.render”或其他人花了大約。110 毫秒。
現在我很好奇,我在一台設置完全相同但在 Intel Celeron(2 核)@ 3.2 GHz 和 Nvidia Geforce GTX 560 Ti 上執行的機器上進行了測試。
遊戲在所有模組下都執行得非常流暢。滴答聲又短又相等,我得到平均 60 FPS 的 Mods 和最高的觀看距離。這裡看看,同一個世界只是在另一台機器上:
您清楚地看到了差異,並且分析器顯示 Tick 和 Rendering 之間的比率與我的完全相反。
現在有人知道為什麼會這樣嗎?我真的不明白。我都試過了。人們在網上建議的各種 Java 參數,嘗試過 Java 8,嘗試過不同的 Java 版本,玩過分配的 RAM,但沒有任何幫助……它只是執行不流暢,玩起來太可怕了。
我最近遇到了一個問題,即在 Thief 中隨機出現菜單的滯後和音頻故障(CPU 凍結)。從那時起,我就跟著時鐘走下去了,儘管很多強烈的老化都說它會很穩定。現在,這些故障不再出現,但我不敢相信 Minecraft 對 CPU 的壓力如此之大以至於它變得不穩定……此外,我在時鐘仍然更高時嘗試了 Terasology(最大圖形設置)。它以流暢的 60 FPS 執行,沒有任何問題。幾天后我再次嘗試了它,然後它和 Minecraft 一樣滯後,只是 Terasology 遲早會因“有點延遲”異常而崩潰。我猜同樣的問題——不穩定的滴答聲。
所有其他遊戲都執行良好,沒有任何麻煩。看起來它只是與Java遊戲……
滯後峰值是由三種可能的原因引起的:
請記住,有多種方法可以解決這些問題,以及可能導致這些問題的多種因素。
- 包太多了!
Minecraft 只能在一個設置中處理如此多的塊更新;打鉤。因為它不能在那一秒的 1/20 秒內完成所有更新,所以它會凍結世界,直到它能夠完成該滴答的處理。
您可以通過獲得更好的 CPU 來提高它可以完成的工作量;處理器(或給予 Minecraft 比其他任務更高的優先級)。RAM只允許你有更大的工作量;不要更快地完成那個工作量。
由於伺服器和客戶端(如果您正在玩單人遊戲)都是連結的,因此當您的遊戲無法在一個滴答聲(1/20 秒)。
*注意:超過 20 FPS 意味著在單個滴答中創建了多個幀。
- 等待。我還在寫……
當你擁有一個 Minecraft 世界時,遊戲會每 3 秒不斷地將世界保存到磁碟(除非你增加了這樣做的時間間隔)。但是,如果伺服器無法寫入磁碟,它會凍結伺服器以確保需要保存的數據狀態不會改變。如果它可以一口氣保存它,當然 - 一切都會照常進行。
幾乎,防止這種情況的唯一方法是停止所有,或者至少停止在後台佔用 I/O 功能的程序/任務/程序正在讀取磁碟,或者獲得更好的硬碟驅動器。
(即 Steam 更新文件、複製粘貼命令、保存學校/家庭/工作-工作等;任何涉及讀取和寫入磁碟的事情)
- 低效的編碼,AKA。錯誤
非常不可能,如果不是 - 甚至不適用於此,但
遊戲中可能存在錯誤編碼和模組的程式碼,使其洩漏記憶體或不斷記住記憶體中的新事物而不會清除冗餘值。儘管已知一些大型模組可以做到這一點,但它們中的大多數現在已經修復了大多數(如果不是全部)導致記憶體使用高峰的問題。解決此問題的唯一方法是自己修復編碼,如果原始碼已發布。
如果一切都失敗了(沒有解除安裝/修改你擁有的模組):
- 恢復為低解析度紋理
- 降低您的音頻和影片設置
- 關閉除 Minecraft 之外的所有其他任務。
因為這很可能是因為您的電腦無法處理它。
我可以繼續討論 Java 是如何成為一個模擬系統(執行中的作業系統中的虛擬作業系統)以及模擬器如何執行更慢,因為它需要模擬一個與 PC/任何設備完全不同的系統架構,但這不是重點。
Minecraft 在 Java 上執行,這需要在您的電腦內模擬虛擬機。正因為如此 - 仿真需要比它通常需要的更多記憶體和 CPU 處理能力(如果您要在本機作業系統上執行它)。
其他遊戲之所以有效,是因為它們是 Windows 原生的;在更改值或輸出某些內容之前,不需要經過 5 個其他步驟。
您最近是否超頻了您的顯示器?如果是這樣,請將刷新率更改回其原始狀態。它對我有用,所以如果這是你的場景,那麼它對你有用。