[分享] Minecraft Hack (1)

作者: kuangjc5566 (匡匡56)   2017-12-29 20:18:23
恩恩
這兩天研究了一下Minecraft程式到底瓶頸在哪裡。
因為那個Java Flight Recorder是有把程式運行的時候紀錄細節下來啦。
可是我開程式要分析紀錄檔時一直凍結,卡在那裡不執行。
所以我換個方法,改成用VisualVM。
也是一個分析的工具,從名字可以猜到,
是個可以把Java程式運行時的細節,圖形化視覺化表現出來的工具程式。
然後就邊開邊逛Minecraft的世界。
故意找那種地形還沒畫出來的地方逛。
這時VisualVM的顯示大概是這樣。
https://i.imgur.com/UoFI5bj.png
大家可以看到左上角是Minecraft在運行的視窗,背景則是VisualVM剖析的圖。
我把VisualVM切換到顯示每一條thread執行的概略狀況。
請大家注意我有打勾的幾個條目,
Server thread還有Chunk Batcher0 ~ Chunk Batcher3,
長條圖中綠色條塊的意思是執行的時間
這5個thread在我逛Minecraft時遇到還沒有畫出地形的時候會有反應
只要有還沒有畫的地方Server thread的執行時間會先飆高,
你可以看到Server thread瘋狂的在運算。
接下來會是Chunk Batcher0 ~ Chunk Batcher3執行時間會飆高,
但是綠色條塊看來游刃有餘,因為跑一下就算完了。
我的電腦是雙核心的,開了Hyper-threading對軟體來說可以同時有4個threads在計算。
從Chunk Batcher有4個可以假設,
Minecraft會依你的電腦可以同時執行幾條threads去產生Chunk Batcher的數目。
Chunk Batcher,名字取得蠻有趣的,
batcher是這個玩意,
https://i.imgur.com/PzfFicV.jpg
卡車可以停在下面,用來從漏斗中放出定量的東西到卡車上。
大概可以翻譯成chunk的計量分配器。
看字面我猜意思是把Chunk分配給別的東西去運算。
但是看起來好像是實際在算地形的threads。
因為Chunk Batcher都一下就跑完了,所以瓶頸是在Server thread。
這是我目前為止的結論。
至於詳細的運算繁重的程式碼部份,我還在讀程式碼,一個段落後再跟大家介紹。
大概4這樣。
作者: error405 (流河=L)   2017-12-29 20:37:00
嗯其實已經有些像是optifine的提升效能MOD的說
作者: LPH66 (-6.2598534e+18f)   2017-12-29 22:22:00
Optifine 好像主要是 client 端的效能提升的樣子?
作者: ferretwind (FF)   2017-12-30 11:02:00
看起來很有趣
作者: alanqq0624 (fallere725)   2017-12-30 11:08:00
作者: j6u47803 (j6u47803)   2017-12-30 12:08:00
讚!
作者: NoyVaughty (吃貨)   2017-12-31 22:20:00
optifog.blogspot.tw/ 這篇(舊)網誌分析了Minecraft為何顯示效能不彰

Links booklink

Contact Us: admin [ a t ] ucptt.com