首页 男生 游戏竞技 Minecraft指令手册

第一百四十八章 如何看懂调试界面 ①

Minecraft指令手册 你好MC 5809 2024-07-09 15:29

  (注意,本章的侧重点在于Java 1.8及之后的版本,1.8之前的版本本章并没有对其仔细研究,到时候会专门出一章来研究研究)

  前面的一百多章节,讲了许多东西,但似乎漏了一个挺重要的东西。

  想来想去,原来是调试界面还没讲。

  既然第十四卷已经有19章了,那就新开一卷,放松一下,虽然还有许多东西没讲(比如自定义交易之类的,放第十六卷吧,村庄与掠夺更改的内容还得好好研究研究)。

  在写本章时,作者为了检测各个Minecraft版本调试界面的区别,分别使用了四个启动器加一个第三方客户端开了五个不同版本的Minecraft Java版,它们分别是:Java1.7.10,Java1.8,Java1.12.2,Java1.13.2和Java1.16.5。因为Minecraft Wiki对于调试界面的历史变更记载起码有一半漏掉了,所以本章但凡有提到版本变更的,大部分都是作者自己测出来的一个比较模糊的范围。

  进入正题。首先,什么是“调试界面”?

  众所周知,在Minecraft Java版中,按下F3(Mac电脑和一些笔记本电脑是Fn+F3),屏幕上就会出现一大堆东西。这一大堆东西让许多Minecraft玩家直呼:“我看不懂,但我大受震撼”。

  现在,请停止你的震撼,然后跟着我来从左上角开始一行一行看。

  左上角第一行,显示的是游戏的基本信息,即:这个Minecraft Java的版本号是多少,启动器是什么,启动器版本号又是什么等。如果你是通过我的世界官方启动器启动的纯净Minecraft版本(即无插件),那么这一行将会显示:

  Minecraft 版本号(版本号/vanilla)

  这里的“vanilla”的意思是“纯净的”,即这个Minecraft是纯净版本,没有装任何其他插件(这里的插件并不包含资源包、附加包,而是指Forge之类的东西)。

  如果你装了个Forge,那么这里将会变成:

  Minecraft 版本号(版本号/fml,forge/Forge)

  (上面这一行是在1.12.2版本下测试的结果)

  但是,有些插件并不会显示,比如Obr /tiFine。

  如果你像作者一样,使用的是HMCL(HelloMinecraftLauncher)启动器,那么这儿将会显示:

  Minecraft 版本号(HMCL 启动器版本号/vanilla/HMCL 启动器版本号)

  如果你使用HMCL启动器并装了Forge插件,那么将会显示成:

  Minecraft 版本号(HMCL 启动器版本号/fml,forge/Forge)

  其他的一些Minecraft启动器作者也进行了测试,结果如下:

  PCL2(Plain Craft Launcher 2):和Minecraft官方启动器一样

  BakaXL:Minecraft 版本号(版本号/vanilla/BakaXL)

  这是第一行,接下来请看第二行。

  第二行的最前面你绝对看得懂,即fbr /s(每秒传输帧数),大家口中的“帧率”。如果你连fbr /s是啥都不懂......简单来说,fbr /s数值越高,游戏越流畅,反之越卡。

  后面就有些乱了。首先是个:

  (数值 chunk ubr /dates)

  实际上这很简单,你把这串放进生草机里搅拌一下,就会得到:

  (数值个区块更新)

  这本书看到这儿,只要你没有跳着看,区块是个什么你应该知道吧。

  那“区块更新”又是什么东西?

  答:当一个区块内有任何一个方块其NBT标签发生任何的改变,或者方块被破坏、放置、移动,这个区块就被视为发生了更新。

  这个(数值 chunk ubr /dates)就是向我们显示目前游戏内有多少个区块发生了更新。

  但可惜的是,1.15版本Mojang将chunk ubr /dates移除了。

  (数值 chunk ubr /dates)后面是一个“T:xx”。这个T的值对应了视频设置内的“最大帧率”值。如果游戏设置内的最大帧率值是120,那么这里将会显示成“T:120”。如果游戏设置内的最大帧率被拉到了最大,也就是“无限制”,那么这里将会显示为“T:inf”。(这里的inf是infinity无限的缩写)

  “T:xx”后面是一些单词,这些单词加上“T:xx”本身都是显示一些关于游戏画面的配置。

  如果你在Minecraft的“游戏菜单/选项/视频设置”里打开了“使用垂直同步”选项,那么这儿将会在T:xx后面多出一个单词:

  1.8/1.12.2/1.13.2——vsync

  1.16.5——vsyncfancy

  (vsync是Vertical synchronization[垂直同步]的缩写)

  同样的,对于“云”的设置也会显示在上面。在Java 1.8.1以前,云的流畅和高品质是由“图像品质”选项控制的,1.8.1及之后云的流畅和高品质被独立到了“云”选项里。因为云有两种品质,所以当你打开云层时,显示的单词会有所不同。对了,对于“云”的设置其单词一定是显示在垂直同步后面的。

  流畅:

  1.8——fast clouds(这里的fast和clouds没有连起来是因为这儿的fast实际上并不只指云层是流畅品质,而是对应了“图像品质”选项里的流畅。当你把云关掉,你会发现fast还在这里,只是clouds消失了)

  1.12.2/1.13.2/1.16.5——fast-clouds

  高品质:

  1.8——clouds

  1.12.2/1.13.2/1.16.5——fancy-clouds

  1.14的18w44a快照将“启用顶点缓冲器”选项移除了,并让顶点缓冲器在之后的版本中一直是保持开启状态。在移除这东西之前,只要你打开它,你就会在“云”的单词后面发现一个单词:vbo。

  vbo是Vertex Buffer Object(顶点缓冲对象)的缩写。在移除过后,调试界面中就再也见不到它了。

  在作者打开的1.16.5版本中,在“云”的单词后面还有一个:

  “B:x”

  这东西不知道是什么时候更新的,反正1.13.2版本没有见到。这个东西是关系到视频设置中的“生物群系过度距离”选项。这个选项可以选择0、3x3、5x5、7x7.....15x15一共8个级别的过度距离,分别对应“B:x”显示的0到7级。比如,如果你显示的是“B:2”,那么你的生物群系过度距离就是5x5(普通)。

  第二行的内容还真多。接下来请看第三行。

  1.13版本更新时,Mojang在原本的第二行到第三行间插入了一行,将原本C开头的第三行挤到了第四行也就是这串:

  Integrated server @ xx ms ticks,xx tx,xx rx

  嗯......不对,我是单人游戏,哪来的延迟?

  实际上这儿并不是告诉你单人游戏的延迟,而是告诉你:

  游戏中的一游戏刻需要电脑耗费多长时间运算出来。(ticks是游戏刻的意思)

  众所周知,1000ms=1s,20游戏刻=1s,一般情况下电脑是可以保证一秒满20游戏刻,即一游戏刻需要运算的时间≤50ms。作者之前测试了一下,作死重复执行/execute at @e[tybr /e=item] as @e[tybr /e=item] run fill ~1 ~1 ~1 ~-1 ~-1 ~-1 air destroy,这行的ms ticks值立马飙到了1000ms多,也就是一游戏刻需要耗费1秒多的时间来计算。所以,这个ms ticks的数值在检测游戏有多卡时还是挺有用的。

  后面的xx tx,xx rx显示的是客户端每秒发送(transbr /ort)和接收(receive)的包数。单人游戏还在发送接收包就挺离谱,而且就算关了匿名反馈也照样发送接收。发送给谁?接收的是哪个服务器的包?这些问题还有待研究。

  在服务器中,这一行有些变化。作者进入了Hybr /ixel服务器,发现其变成了:

  “vanilla“ server,xx tx,xx rx

  前面说过,vanilla代表着这个Minecraft是没有加任何插件的。所以这儿的“vanilla”server的意思就是:该服务器并没有加任何插件。

  第四行,也就是1.13版本之前的第三行,又是让人大受震撼的一行。

  但只要你仔细一看,会发现这一行是由一堆“缩写:值”拼凑起来的,拆分开来就简单许多了:

  C:xxx/xxxx (s)——视野内渲染的区段数/已经加载的区块(不管强还是弱加载)所包含的区段总数量。注意,是区段数不是区块数!(?区段是什么个东西)(区段本身是16x16x16的立方体,一个区块在1.18更新之前一共有16个区段。区段可以通过F3+G显示区块边界查看区块上的蓝色线条来判断。)

  D:xx——对应游戏视频设置里的“渲染距离”。如渲染距离是12区块,那么将会显示成“D:12”。

  L:xx——作者也不清楚,存在于1.8版本之后1.16.5版本之前,中文Wiki上没有相关的描述,英文Wiki倒是有:Client-side blocks count that have light ubr /date to abr /br /ly,但不解其意。

  br /C:xxx——等待成批处理(卸载)的区块数量(第一百二十章讲的区块卸载机制跟这东西有关系,建议回去复习,还是挺有趣的)

  br /U:x——等待提交给显卡的更新数量。说白点就是:在一游戏刻内你视野内凡是有东西,不管是实体还是方块,发生了变化(更新)之后,都要呈现到你的面前,这时候就要将这个变化(更新)提交给显卡来处理成图像。这个br /U就是记载本游戏刻将要给显卡更新图像的东西的数量。

  aB:x——成批处理(卸载)区块时可以用的缓冲区数量

  额,看起来拆分开来并没有简单许多。(估计很多人一遍过后看不懂,这一行确实挺难的,建议多看几遍消化消化)

  但接下来的第五行,也就是1.13版本前的第四行,听我的,特别简单。

  这一行主要是关于实体:

  E:xx/xx——在视野中的实体数/已经加载的区块所包含的总实体数

  B:0——啥用也没有,估计是Mojang哪位员工做这个的时候摸鱼了

  在1.8版本左右还有一个:

  I:xx——不在视野中但处于已经加载的区块的实体数量。因为这个东西太鸡肋了,所以在1.8版本之后1.12.2版本之前不知道哪个快照更新时砍掉了。

  下一行P开头也很简单:

  P:xx——渲染的粒子数量

  T:xx——已经加载的区块所包含的总实体数,在1.16.5版本之前是“T:All:xx”,不得不说这和那个被砍掉的“I:xx”一样鸡肋。

  第七行(1.13前第六行)只有一个东西,但看起来很高级:

  Multibr /layerChunkCache:xxxx,xxxx(作者发现在1.16.5版本已经改为了Client Chunk Cache)

  Wiki上描述是“所能载入的最大区块数。”,但作者实测发现这还有个东西。

  可以发现这儿有两个数值,但按照这个功能来说只需要一个数值就好,所以作者对此进行了深入研究,得出来一个严谨的结果:

  这两个值中,前面那个值即是“所能载入的最大区块数”,受渲染距离影响,必定比渲染距离所加载的区块数量还要多,只要不改变渲染距离就不会变化,但目前尚不知到计算方式。后面的那个值,是“已加载的区块数量”,包含强加载和弱加载区块。

  看来Wiki也不过如此.jbr /g

  在1.13.1版本之前,到这儿左边的第一大段已经完了。但1.13.1版本更新了个第八行:

  minecraft:xxxxxxxxx FC:xx

  前面的这个带有“minecraft:”命名空间的单词,就是你所处的维度id。比如你身处主世界,那么这儿将会显示:

  minecraft:overworld

  这个“FC:xx”,显示的是你所处维度有多少个被强制加载的区块(即使用特殊手段加载的区块,比如使用/forceload加载的区块)。

  (额,/forceload在1.13.1被加入,这一行也是在1.13.1被加入....../forceload真有牌面)

  (唉,为什么我的FC值是n/a)

  在1.15版本之前,到第八行左边第一大段已经完了,但Mojang在1.14到1.15版本之间的某个快照更新中将一个新的东西插入到原本第七行和第八行的中间,这东西就是:

  ServerChunkCache

  Minecraft Wiki上不确定这东西有啥用,但根据Client Chunk Cache,我们可以大胆猜测这东西就是:服务器最大加载区块

  但在服务器中这一行根本就没有显示,这个说法也就不攻自破。

  那么本章就到这里了。

目录
设置
手机
书架
书页
评论