(观前提示:此章有部分内容涉及到初中物理的知识)
在之前,我们已经大致了解了方块、实体、状态效果、粒子效果这四个在minecraft中相当常见的四种东西,还学习了一部分基础的游戏运作机制。接下来,我们就要来看看不管是在minecraft还是在其他游戏,都具有十分重要地位的东西——游戏声音。
在minecraft中,游戏声音主要包括以下三类:
普通音效——由玩家、生物、物品、实体和方块发出的声音,如玩家破坏方块、鹦鹉学舌、武器损坏、射出的箭落地、熔炉工作。
环境音效——这并不是指背景音乐。一般来说,这是指在特定情况下才会播放的声音,所以才带有『环境』二字。比如你在挖矿时突然听到的怪声,那其实就是一个环境音效。关于这东西我们会在第一百五十章讲调试界面的mood值时再次提到。
音乐——一般来说,指的是游戏背景音乐。(c418的音乐针不戳)
当然,如果要分类得更细一些,那就得按照minecraft游戏中的分类,也就是你在设置界面中看到的那十类:主音量(master)、音乐(music)、唱片机\/音符盒(record)、天气(weather)、方块(block)、敌对生物(hostile)、友好生物(neutral)、玩家(yer)、环境(ambient)、声音\/语音(voice)。zuqi.org 葡萄小说网
你在minecraft中听到的每个声音,肯定都包括有以下信息:
1声音名称(在[je]或sound_[be]中所规定的声音名称。下面会详细讲一下这东西怎么弄到。)
2声音类别(按照minecraft内的分类来分)
3声音目标(这个声音给谁听,也就是能够被哪些玩家听到,是一个目标选择器或玩家名、uuid)
4声源位置(声音产生的地点,是一个坐标)
5音量(音量越大,声音可闻范围越大,是一个小数。下面会详细讲解这东西)
6音调(自己把物理书或乐理书拿出来翻一下看看,是一个小数。下面也会详细讲解这东西)
7最小音量(指定在声音可闻范围外的最小音量,是一个小数。下面也会详细讲解这东西)
其中,我们需要详细讲解的东西有四个:声音名称、音量、音调和最小音量。
——1.声音名称
在上面有提到,声音名称是在一个叫做[java版]或sound_[基岩版]的文件中规定的。那么这个文件在哪呢?
想要找到这个文件可是个技术活,如果你嫌麻烦可以去看minecraft wiki,我们会在章末讨论如何找到这个东西。在此之前,你只需要在minecraft wiki上查找声音名称即可。
——2.音量
声音的音量在这里并不只是影响声音的响度。音量是一个≥0.0的小数(浮点数)。音量对声音的影响有两种情况:
1当0.0≤音量<1.0时
音量越小,声音响度会相对减轻,直到完全没有(0.0)。声音的球状可闻范围也会相应减小一些。
2当音量≥1.0时
声音响度会不变,但其可闻范围和音量大小的关系符合下面的函数关系式:
可闻范围(单位:米)=音量x16
比如音量为1.2时,该声音的可闻范围就是1.2x16=19.2米。
另外,我们还要了解一下声音的可闻范围:
声音的可闻范围是一个球体,其中心就是声源位置。越远离中心,声音的大小就会越小,直至无声。
——3.音调
音调是什么?物理学对音调的定义是:声音频率的高低叫做音调。在minecraft中虽然有些不同,但也跟声音频率有关。
这个东西要深究起来非常复杂,在这里我们简简单单了解一下。
音调的值是个小数(浮点数),在java版中是一个在0.0~2.0(含)范围内的数,其对声音的影响可以分为两种情况:
1当0.0≤音调<0.5
等同于音调值为0.5的情况
2当0.5≤音调≤2.0
音调越低,声音的频率越低,持续时间越长。
音调越高,声音的频率越高,持续时间越短。
音调等于1.0时,声音的频率和持续时间均为正常水平。
(如果你并不能很好理解上面的描述,那我就举个例子:当你在观看视频的时候,如果你加快播放速度,声音的波就会挤在一起,频率变高,使得视频的声音变得尖锐,而如果你放慢速度,声音的波反而会离得更开,频率变低,使得视频的声音变得低沉。当然,现在诸如b站之类的视频平台大多都对倍数播放添加了优化,使得视频变快或变慢不会影响到视频音调的改变,但你还是可以在诸如pr之类的视频剪辑软件中体验到这种效果)
(也就是说,从某种意义上来讲,这个音调的作用其实就是让你像看b站视频一样倍数播放声音,只不过没有优化声音频率的效果而已)
在基岩版中,其值并没有任何限制,但必须要在0.0至256.0(含)之间才能有效果。如果大于256.0,最终的情况相当于音调等于1.0的情况,也就是默认情况。如果小于等于0.0,声音将会不可听见。
值在0.0至256.0之间的效果类似于java版在0.5和2.0之间的效果。
——4.最小音量
前面我们讲音量时提到了可闻范围,默认情况下声音会在可闻范围之外不可听见。为什么要说一个『默认情况』呢?因为默认情况下声音的最小音量的值是0.0。
上面我们了解过,声音的最小音量是指在声音可闻范围外的最小音量,是个小数(浮点数),默认为0.0,也就是不可听见。在基岩版中此值无限制,可正也可负,在java版此值必须在0.0~1.0(含)之间。
……………
现在我们已经讲了很多,但了解这些东西有什么用呢?难不成我们可以用指令来控制游戏声音?
答案当然是能啦,不然我写这个章节干嘛?
mojang为minecraft添加了两条声音相关的指令:\/ysound和\/stopsound
\/ysound
作用:播放一段声音
需要权限等级:java-2,基岩-1
需要作弊:是
格式:
java版
\/ysound <声音名称><类别><目标:目标选择器>[声源位置:坐标][音量][音调][最小音量]
基岩版
\/ysound <声音名称>[目标:目标选择器][声源位置:坐标][音量][音调][最小音量]
看起来这\/ysound指令参数很多啊,但如果你仔细一瞧,就会发现这些参数我们上面都讲过了。
其中我们唯一要讲的就是『类别』这个参数。类别有哪些呢?让我们来看看前文是怎么说的:『声音类别(按照minecraft内的分类来分)』
那么minecraft内部对声音的分类有哪些?
其实已经写在了开头:『主音量(master)、音乐(music)、唱片机\/音符盒(record)、天气(weather)、方块(block)、敌对生物(hostile)、友好生物(neutral)、玩家(yer)、环境(ambient)、声音\/语音(voice)』
懂了吧,那么我们现在来看一个例子。
假设你要播放出洞穴的环境音效,该怎么办?
第一步,你需要打开minecraft中文wiki,搜索,找到这个叫做的条目(或者找到环境音效这个条目也可以)。第二步,往下拉找到数据值,根据你对应的游戏版本点击展开,往下滑并看着『声音事件』这一列,找到洞穴环境音效的声音事件名称(也就是声音名称),复制。第三步,在minecraft里运行如下指令:
\/ysoun ambient ~~~ 1.0 1.0 0.0 ——java
\/ysoun ~~~ 1.0 1.0 0.0 ——基岩
然后你就听到了和你在洞穴里听到的一模一样的声音。但是如果你多次播放就会发现一个问题:怎么每次播放都是不同的声音啊?
其实一个声音名称对应的不只是一个声音文件,像是这个名称对应的就有19个声音文件。游戏在播放这个声音时其实会在这19个声音中点兵点将点到谁就播放谁,播放的具体是哪个其实完全是随机的。当然,虽然说是随机,但游戏也有规定权重在其中,哪个声音文件权重大就有更高几率抽到那个声音。
\/ysound是播放声音,相对应就还有一个\/stopsound用来停止播放声音。
\/stopsound
作用:停止声音播放。
需要权限等级:java-2,基岩-1
需要作弊:是(java版不需要)
格式:
java
\/stopsound <玩家:目标选择器>[声音类别][声音名称]
基岩
\/stopsound <玩家:目标选择器>[声音名称]
玩家这个参数在这边用于指定要停止谁的声音,也就是让谁听不到声音。
如果仅仅指定了玩家,将会停止该玩家所听到的所有(游戏中的)声音,也就是让这个玩家的耳朵突然安静下来。你也可以额外指定声音类别和声音名称两个参数,来指定具体要停止什么声音。
举个例子:
\/stopsound bloc ——java
\/stopsound ——基岩
这两条指令都将会停止tnt嘶嘶作响的声音。
看起来上面的指令没有丝毫的问题,但仅仅是看起来而已。
如果我们不知道属于哪个声音类别怎么办?毕竟wiki上可没有标出这个的类别。
答案很简单,我们只需要:
\/stopsound *
不去管就行了!管它干什么?!多管闲事啊?浪费精力又浪费时间。
当你不知道也懒得知道你要停止的声音的类别是什么的时候,可以直接选择填写星号来全选全部声音类别。可惜的是,这个版本在低版本行不通(1.12.2就没有这东西,还得老老实实找类别)。
现在我们已经基本上了解得差不多了,如果你认为可以了就前往下一章或去干其他事情吧,接下来我们将会讨论:如何找到那该死的。
对于java版,我们首先需要来到minecraft的根目录,也就是找到.minecraft文件夹。对于非官方启动器来说,一般它和启动器位于同一个目录下;对于官方启动器来说,不同系统的情况不一样:
windows:系统盘\\用户(user)\\你的用户名\\appdata(这是个隐藏文件夹)\\roaming\\.minecraft\\
mac os:系统盘\/用户(user)\/你的用户名\/资源库(library)\/application support\/minecraft\/
linux:系统盘\/你的用户名\/.minecraft\/
注:在mac os中,你默认是看不到资源库(library)这个文件夹的。这时候你就要确保此时访达正选择你的用户文件夹,然后点击左上方的前往→前往文件夹,然后在跳出的窗口中输入『资源库』或『library』三个字,就可以临时显示出这个文件夹了。
然后,我们需要来到如下的位置:
.minecraft\/assets\/indexes\/或minecraft\/assets\/indexes\/
在这里,你会发现一堆名称是.json的文件。这是什么东西呢?
你不用管他,也不需要管它是什么东西,用记事本或文本编辑打开你需要的版本即可。打开后,使用ctrl+f或mand?+f开启查找模式,然后输入,你就会找到一个唯一的结果:“minecraft\/“:{“hash“:“xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx“,“size“: xxxxxx}
是不是感觉这似乎在哪里见过?其实这就是json,和之前讲过的json文本的格式是一模一样的。
接下来,你需要将hash的值复制下来,然后来到如下文件夹:
.minecraft\/assets\/objects\/或minecraft\/assets\/objects\/
你会看到一大堆不明意义的文件夹,不用担心,直接使用搜素功能,搜索你刚刚复制的内容,稍等片刻,你就会找到一个文件名和你复制内容一模一样的文件。虽然它没有后缀名,但其实它就是我们要找的文件。右击使用记事本或文本编辑打开它,如果你找对的话,你就会看到开头写着:
““:{
“sounds“:[
“ambient\/cave\/cave1“,
“ambient\/cave\/cave2“,
…….
如果你的访达或文件管理器迟迟找不到文件,那也别担心,你只需要看看你复制内容的开头两个字符,然后找到相对应的文件夹。比如开头是『97』就找叫做97的文件夹,找到后,你再仔细翻一翻就可以找到了。
的json结构大致是这样的:
{“声音名称”:{“声音文件”:[声音文件列表],”声音字幕本地化键名”:”一个本地化键名”},……}
懂了吧?当然,只是在1.7.2版本后才被弄到如此离谱的地方。在1.7.2版本,很好找,它就在这里:
.minecraft\/ assets\/或.minecraft \/virtual\/legacy\/
而且文件名就叫
如果你同时安装了1.7.2和更新的版本,那么两类文件都将会同时存在。
(那对于比1.7.2更老的版本呢?)
(根本不用找,因为没有。这东西是在1.7.2才被添加进来的)
另外,对于java版的资源包来说,其也有文件,就在资源包的\/assets\/<命名空间>\/下,且就叫。
找到了,那么基岩版的sound_在哪呢?
很好找……….个屁!但至少没有那么多弯弯绕绕的。
对于windows10版本来说,你需要找到:
系统盘:\\program files\\windowsapps\\_应用版本号_x64__8wekyb3d8bbwe\\data\\resource_packs
打开resource_packs,你会发现里面有一大堆叫做vani_<游戏版本>的文件夹。不用管这些,你只需要找到没有后缀的『vani』文件夹,点进去,再找到sounds文件夹,再向下滑,就是sound_文件了。整个目录下来是这样的:
c:\\program files\\windowsapps\\_应用版本号_x64__8wekyb3d8bbwe\\data\\resource_packs\\vani\\sounds\\sound_
对于android版本来说,最简单的办法是安装一个mt管理器,然后将你手机上的minecraft打包成安装程序apk文件,然后再使用mt管理器通过zip视图打开,再打开split_install_,来到assets\/resource_packs\/vani\/sounds,就可以找到sound_了。
对于ios和其他版本来说…….抱歉,我不清楚。
现在我们两个文件都找到了,本章也就到此结束。
历史
java
1.6.1——加入了\/ysound
1.7.2——加入了
1.9——\/ysound支持tab自动补全了,并开始要求使用source参数。更改了许多声音名称。
1.9.3——加入了\/stopsound
携带版
1.0.4——加入了sound_
1.0.5——加入了\/stopsound和\/ysound