[分享] Minecraft Hack (1)

看板Minecraft (當個創世神)作者 (匡匡56)時間8年前 (2017/12/29 20:18), 8年前編輯推噓5(502)
留言7則, 6人參與, 8年前最新討論串1/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
嗯其實已經有些像是optifine的提升效能MOD的說
12/29 20:37, 1F

12/29 22:22, 8年前 , 2F
Optifine 好像主要是 client 端的效能提升的樣子?
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
optifog.blogspot.tw/ 這篇(舊)網誌分析了Minecraft
12/31 22:20, 6F

12/31 22:21, 8年前 , 7F
為何顯示效能不彰
12/31 22:21, 7F
文章代碼(AID): #1QHZAKIl (Minecraft)
文章代碼(AID): #1QHZAKIl (Minecraft)