[分享] 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