第一百五十章 如何看懂调试界面 3

在上一章中,作者提到了调试界面左边第二阵第四行之后的内容,在1.13.2到1.16.5版本期间发生了极大的变化。这一章,我们就要了解,到底发生了什么变化?

在1.16.5版本,第五行已经不是biome了。这一行得和下面一行,即第六行一起看:

client light:光照强度(天空光照强度 sky,方块光照强度 block)

server light:光照强度(天空光照强度 sky,方块光照强度 block)

不难发现,新版本是将light一行拆成了客户端光照强度(client light)和服务端光照强度(server light),实际作用和原本的light一样,只不过分成了两端。比较奇怪的是,当你并没有在玩服务器而是在单人游戏时,server light还是会显示,只不过会显示成:

server light:(与上一行的天空光照强度一样 sky,与上一行的方块光照强度一样 block)

嗯,所以说为什么mojang不直接把它给隐藏掉呢?

第六行下面的第七行ch和第八行sh,是新版本新添加的一对兄弟,也需要一起看:

ch s:xx m:xx

sh s:xx o:xx m:xx ml:xx

这两行的作用差不多,其用处都是显示玩家当前位置(x和z坐标)最高的特定方块的y坐标信息,区别就在于一个是客户端的信息(client highest)一个是服务端的信息(server highest)。zuqi.org 葡萄小说网

ch和sh都有s和m这两个参数。s的作用是显示玩家当前所处位置(x和z坐标)最高的非空气方块的方块的y坐标信息。m是显示玩家当前所处位置(x和z坐标)最高的任意液体或会挡住你的方块的y坐标信息。

m这个参数可能会比较难以理解。那就举个例子:

假设一个服务器的腐竹,由于服务器没人玩,很无聊,就用蜘蛛网从地上一直搭(创造模式)搭到y坐标为212的地方。此时如果有一位玩家路过这个服务器,并且从蜘蛛网下面走了过去,那么在穿过蜘蛛网的时候,它的ch一行会显示为:

ch s:212,m:64

因为蜘蛛网并不会挡住玩家,它本身也不是个液体,导致并不会被m参数算到。但蜘蛛网并不是个空气方块,s参数便记录了它的坐标,所以最终得出了这个结果。

sh在ch的基础上还有o和ml这两个参数(1.18版本还多了个东西在s和o之间,只不过目前在预览版中显示为null:xx),但这两位并不适合单独介绍,而是应该和刚才那两位,搞一个表格(建议电脑或平板上观看):

参数名\/方块类型——空气方块—挡人方块—液体—树叶—其他

s——————————x————√———√——√——√

o —————————x————√———x——√——x

m—————————x————√———√——√——x

ml—————————x————√———√——x——x

可能这仍然有些难以理解,但好在,这位腐竹又搞了两个奇怪的塔:

蜘蛛网--- 67

水--- 66

树叶--- 65

草方块---64

蜘蛛网--- 67

树叶--- 66

水--- 65

草方块--- 64

如果此时有一位管理大大从正上方路过,那么它的调试面板sh这一行将会显示:

1——sh s:67 o:65 m:66 ml:66

(因为蜘蛛网不是空气方块,所以s是67;因为蜘蛛网和水都不会挡住玩家,但树叶可以,所以o是65;因为蜘蛛网和水都不会挡住玩家,但水是液体,所以m和ml都是66)

2——sh s:67 o:66 m:66 ml:65

(因为.....所以s是67;因为树叶会挡住玩家,但蜘蛛网不会,所以o和m都是66;因为蜘蛛网不会挡住玩家,树叶不属于ml的计算范围,水是液体,所以ml是65)

理解了吧?不理解就再看一遍。

第九行和第十行即biome(生物群系)和local difficultly(区域难度)。

第十一行,即sc一行,是在1.16版本中新加入的一行参数,作用是显示生物生成的详细信息:

sc:xx——当前可以生成生物的区块数量,似乎与渲染距离没有关系

m:xx——当前所有已生成的生物中,敌对生物的总数量

c:xx——当前所有已生成的生物中,动物的总数量

a:xx——当前所有已生成的生物中,环境生物(比如蝙蝠)的总数量

w:xx——当前所有已生成的生物中,水生动物的总数量

m:xx——当前所有已生成的生物中,其他类型的生物的总数量

最后一行,也就是sounds行:

sounds:xx\/xxx + x\/x(mood xx%)

sounds一行主要是关于游戏声音。minecraft的游戏声音大致可以分为三类:

普通音效、环境音效、背景音乐

普通音效——游戏中的大部分声音是普通音效,比如放置方块、怪物\/动物发出声音、脚步声等都算普通音效

环境音效——环境音效一般是指在特定场景下播放的声音,说白点就是你在挖矿的时候听到的怪声(晚上玩怪恐怖的)。环境音效除了在洞穴里有,还有在水下和在下界的环境音效。

背景音乐——不用多说,c418的音乐真好听。

加号的左边即是普通音效,具体是:

当前正在播放的普通音效数量\/可以播放的普通音效数量上限

右边是环境音效,只不过此环境音效还包括了唱片机播放的音乐和游戏背景音乐(或者更准确的来讲应该使用英文minecraft wiki的streamed sounds):

当前正在播放的环境音效数量\/可以播放的环境音效数量上限

在这一串参数后面,还有一个:

mood xx%

这个东西目前中文wiki上没有说明。作者将这东西放进百度生草机里搅拌了一下,得出来了:

情绪 xx%

生草机出来的东西准不准不知道,但这东西绝对跟你的情绪有关。

这东西的百分比后面有一个算法:mood algorithm

mood 算法大致的代码(伪)是这样的:

updatemood(mood):

tickdy = 6000

maxlightlevel = 15

block = select a random block in a 17x17x17 block cube centered around the yer

skylight =   if (skylight > 0):

mood = mood -(skylight \/ maxlightlevel)* 0.015

else:

blocklight =   mood = mood -(blocklight - 1)\/ tickdy

if (mood ≥ 1.0):

yer.yspookysound  mood = 0.0

else if (mood < 0):

mood = 0.0

翻译:

声明“更新情绪”方法(情绪):

设定变量“游戏刻延迟”值为6000

设定变量“最大光照等级”值为15

在以玩家为中心的17x17x17的立方体中随机选定一个方块

获取该方块的天空光照等级

如果(天空光照等级大于0)

设定变量“情绪”的值=情绪-(天空光照等级÷ 最大光照等级)x 0.015

否则

获取该方块的方块光照等级

设定变量“情绪”的值=情绪-(方块光照等级- 1)÷游戏刻延迟

如果(情绪大于等于1.0)

执行玩家类方法“游戏里诡异的声音”

设定变量“情绪”的值为0.0

否则如果(情绪小于0)

设定变量“情绪”的值为0.0

为了让你能够真正理解这算法是怎么算的,我们来举个栗子。

假设此时你正在矿洞里挖矿。在上一游戏刻中,你的情绪值为0.(mood 99%),如果此刻游戏随机到了你正前方五格的方块,那么:

游戏通过执行这个方法(java语言中的方法类似于minecraft中的函数,将一串代码包起来成为一个方法,需要执行的时候再调用),获取到了这个方块的天空光照等级为0。

因为这个方块的天空光照等级是0,所以游戏又执行了这个方法,获取到了这个方块的方块光照等级,发现也是0。

于是游戏做了一个简单的运算:

mood = 0.-(0-1)÷6000

=0.-(-1)÷6000

=0.-(-0.000)

=0.+0.000

=1.000

此时游戏发现1.000大于1,所以执行了yer.yspookysound方法,然后你就听到了一辆地铁驶过的声音(cave 11)。

但如果这个方块的方块光照等级大于等于1,或者这个方块的天空光照大于0,那么mood值反而会减少一些或不增不减,因为如果仔细观察上面的代码,你会发现计算mood时都是减法,要让mood增加,必须要让减数为负数,各种情况下,只有天空和方块光照等级都为0的情况下才能得出负数。

mood算法每游戏刻都会执行一遍,每次执行最多增加1\/6000。也就是说,在极端的情况下,即你完全置身于黑暗之中,mood也需要每五分钟才能够轮回一次。

说了这么多,那么这个mood xx%到底有什么用?

看一下上面的假设就知道了,当mood到100%也就是你的情绪达到了顶峰时,游戏就会突然给你随机放一个环境音效,把你吓一跳。

嗯.......不愧是mojang,把玩家的情绪拿捏得明明白白的。

到这儿。左边的第二方阵算是彻底研究完了,但本章还没有结束。

1.8.2版本,左边新出现了个第三方阵,这个第三方阵主要是关于调试本身的信息,它长这个样子:

(1.14版本之前)

debug:pie [shift]:hidden fps [alt]:hidden

for help:press f3 + q

(1.14版本之后)

debug:pie [shift]:hidden fps + tps [alt]:hidden

for help:press f3 + q

第一行debug主要是一些关于调试界面的参数。pie指的是饼图,这东西可以通过按shift + f3显示(visible),默认是隐藏(hidden)。

什么?你说按了没用?

哦,这东西得这样按出来:

第一步,按住shift,由于和游戏按键冲突,按住时会蹲下或向下飞行。如果此时调试界面已打开,请先关闭调试界面。

第二步,继续按住shift,同时另一个手指按住f3。

第三步,两个手指同时放开。看,饼图出来了!(这饼图小得字都看不清啊)

fps(1.14版本之后还有一个tps,即ticks per second每秒传输刻数)指的是帧(刻)生成时间柱状图,可以按alt + f3显示。在1.14版本之前,这儿只有一个柱状图。这个柱状图有两条参考线,一个参考线在最上面,代表30fps;另一个在中间,代表60fps。这个柱状图的柱子越低,即代表每帧运算的时间越快,fps越高。

在1.13版本之前,这个柱状图很简陋,但相对于之后的版本,多了一个东西:

xx mb\/s

作者猜测这可能跟读写速度有关,可能是内存的读写速度。

1.13版本更新后,这个柱状图就好看多了,首先它变大了,其次它有更丰富的颜色了——柱子越矮越绿,越高越红。

1.14版本更新后,这儿又多了个tps的生成时间柱状图,看法和fps的柱子差不多。同时,柱状图上面会显示当前最低和最高计算用时,单位为毫秒。

上面所述的两个附加调试图在关闭调试界面后,如果再打开调试界面,那么将会又一次隐藏。你可能以为我要说如何保持它默认开启,但可惜不是,因为没有这个功能。我要说的是:如何一次性将两个图表都打开。

你只需要按下shift + alt + f3即可。

第二行for help相信大家都看得懂,这就类似于软件中的“获取帮助”,这一行就是提醒你按f3 + q可以了解更多东西。

具体有什么东西如下:

[?~]f3 + a:重新加载所有区块

[1.8~]f3 + b:打开或关闭实体的碰撞箱(白色线条)、朝向(蓝色线条)和生物的视线高度(红色线条)信息。

[?~1.13~]f3 + c:短按以\/execute指令的形式复制玩家本身的坐标、旋转角度信息[1.13及之后]:

\/execute in minecraft:overworld run tp ......

长按10秒以使minecraft游戏本身强制性崩溃

[1.13.1~]ctrl + f3 + c:按住10秒以使java本身强制性崩溃(有些键盘需要使用右ctrl)

[?~]f3 + d:清空聊天记录,但仍然可以通过上下键查看之前输入过的指令和消息

[1.9~]f3 + f:使客户端渲染距离+1(范围为2~32)

[1.9~]f3 + shift + f:使客户端渲染距离-1(范围为2~32)

[1.10~]f3 + g:打开或关闭区块边界(红色,玩家所处区块为黄色)、玩家所处区块区段边界(蓝色)信息

[1.4.2~]f3 + h:打开或关闭高级提示框(即显示物品详细信息,如物品id、nbt标签)

[1.13~]f3 + i:将玩家所注视的方块或实体在服务端的信息复制下来,具体如下。

方块:\/setblock 坐标信息,方块id[方块状态]

实体:\/summon 实体id,实体坐标,实体nbt

[1.13~]shift + f3 + i:将玩家所注视的方块或实体在客户端的信息复制下来。

[?~1.12.2|1.17~]f3 + l:wiki上说是“生成、保存性能分析数据”。在1.12.2版本,按住f3 +l会显示“正在加载可见区块”,但实际啥也没有发生。

[1.9~1.16~|需要执行\/gamemode权限]f3 + n:在上一个游戏模式和旁观模式切换[1.15之后]在创造模式和旁观模式中切换[1.15及之前]

[1.4.2~]f3 + p:开启或关闭当minecraft窗口没被选中时自动暂停的功能

[1.9~]f3 + q:显示帮助列表

[?~1.9]f3 + s:重新加载声音

[?~]f3 + t:重新加载所有资源包(包括原版资源包)和声音

[1.16~|需要执行\/gamemode权限]f3 + f4:在四种模式中切换,可以使用鼠标选择或按f4下一个,松开f3即切换到选定模式

[1.14.1~]f3 + esc:暂停游戏而不显示菜单,多人模式无法暂停

[1.2.4~]shift + f3:显示饼状图

[1.8.2~]alt + f3:显示柱状图

[1.8.2~]shift +alt + f3:我全都要显示

到这里,调试界面左边这一栏才算介绍完成。

本章到此结束。

上一章目录+书架下一章