[分享] Minecraft Hack (1)
恩恩
這兩天研究了一下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這樣。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.167.172.86
※ 文章網址: https://www.ptt.cc/bbs/Minecraft/M.1514549908.A.4AF.html
※ 編輯: kuangjc5566 (118.167.172.86), 12/29/2017 20:29:08
→
12/29 20:37,
8年前
, 1F
12/29 20:37, 1F
推
12/29 22:22,
8年前
, 2F
12/29 22:22, 2F
推
12/30 11:02,
8年前
, 3F
12/30 11:02, 3F
推
12/30 11:08,
8年前
, 4F
12/30 11:08, 4F
推
12/30 12:08,
8年前
, 5F
12/30 12:08, 5F
推
12/31 22:20,
8年前
, 6F
12/31 22:20, 6F
→
12/31 22:21,
8年前
, 7F
12/31 22:21, 7F
Minecraft 近期熱門文章
PTT遊戲區 即時熱門文章
8
12