# 基础概念
可能你现在无法完全理解这些概念, 没有关系, 你先浏览一遍, 在之后阅读过程中碰到这些概念, 再回来查阅.
# 什么是"红石"?
"红石(Redstone)"是"红石粉(Redstone Dust)"的简称, 但是在日常交流中, "红石"通常用于代称"红石电路系统".
"红石系统"最主要的用处是制造自动化装置, 比如自动开门装置、自动收割小麦装置, 甚至是制作一台计算机!
"红石粉"是红石系统最基础的物质, 不光用于传输红石信号, 还会用于合成其他红石元件.
红石信号有 2 个属性:
- 数字信号: 只有 2 种 -- "有"和"无" ("充能"和"未充能")
- 模拟信号: 即信号强度, 有 0 ~ 15 共十六种
对应的, 红石电路可以分为 2 种:
- 数字电路: 和现实生活的数字电路有些类似
- 模拟电路: 和现实世界的模拟电路完全不同
# "供能元件" "传输元件" "调节元件" "输出元件" "监测元件"
以生活中常见的"声控灯"为例:
- 发电厂属于"供能元件"
- 电线属于"传输元件"
- 监测声音以打开"声控灯"的是"监测元件"
- 变压器属于"调节元件"
- 灯泡属于"输出元件"
在 Minecraft 的红石电路中:
- "供能元件"包括:
- "监测元件"包括:
- "传输元件"包括:
- "调节元件"包括:
- "输出元件"包括:
在游戏中, "红石元件"分布于"背包"的"红石"标签页和"交通运输"标签页
# 红石矿
在"创造模式(Creative Mode)"中, 红石粉的供应都是无限的, 但是在"生存模式(Survival Mode)"中, 需要我们自己去采集和炼制.
在"生存模式(Survival Mode)"中, 我们可以通过挖掘"红石矿石(Redstone Ore)"获得"红石粉", 1 个红石矿石可以掉落 4~5 个红石粉.
注意, 红石矿石只能用铁镐或者金镐、钻石镐采集才会掉落红石粉, 使用手工或者木镐石镐都不会掉落东西.
# 如何采集红石粉?
红石系统最基础的原料就是"红石粉(Redstone)", 它不仅仅用来组成必要的红石电线, 还被用来合成其他红石装置.
在"创造模式(Creative Mode)"中, 红石粉的供应都是无限的, 但是在"生存模式(Survival Mode)"中, 需要我们自己去采集.
在"生存模式(Survival Mode)"中, 我们可以通过挖掘"红石矿石(Redstone Ore)", 然后放入"熔炉(Furnace)"中冶炼, 从而获得"红石粉(Redstone)".
就像现实世界一样, 矿藏的分布是有规律的. Minecrafrt 世界中的"红石矿石( Redstone Ore)"的矿脉分布也是有规律的, 都在游戏世界的 16 层以下. 也就是说, y 轴坐标 1~16 之间, 我们可以通过按键 F3 获得这个 y 轴坐标信息. (切记: 出于安全考虑, 永远不要在脚底下往下挖矿)
如下图所示, 就是红石矿脉:
每采集一个红石矿石, 会得到 4~5 个红石粉.
如果你使用"幸运附魔(Forture)"的镐子采集,1 个红石矿石最多能够掉落 8 个红石粉
注意, 红石矿石只能用铁镐、金镐或者钻石镐采集才会掉落红石粉, 使用手工或者木镐石镐都不会掉落东西.
- "石镐"可以挖石头和铁矿
- "铁镐"可以挖石头、铁矿、金矿、钻石矿、红石矿石
- "金镐"和"钻石镐"可以挖所有矿石, 但是只有"钻石镐"可以挖黑曜石
# "红石能量" 和 "红石信号"
一般而言, "红石能量"和"红石信号"指的是相同的东西. 不过, 在特定的上下文中, 其强调的侧重点有所不同:
- 红石有强度属性, 比如"红石火把"产生的红石能量是 15 单位强度, 用红石线传输时, 最长只能传输 15 格的距离. 所以, 我们在设计红石线路时, 需要计算能量强度. 从这个角度看, 用"红石能量"来表述更准确.
- 同时, 和现实生活不同, 红石设备没有"额定电压 (Rated Voltage)"的要求. 只要有红石能量, 无论是 1 个强度还是 15 个, 都可以激活红石设备. 或者, 我们可以理解成 -- 所有红石设备的"工作电压(Working Voltage)"都是 1 ~ 15 个强度; 只要有 1 个强度红石强度, 就能驱动红石设备. 从这个角度看, 我们可以淡化"红石能量"的概念, 理解成 -- 只要有"红石信号"就可以激活任意红石设备.
其实我们也可以理解成红石信号有 2 个属性:
- 数字信号: 只有 2 种 -- "有"或者"无" ("充能"或者"未充能")
- 模拟信号: 即信号强度, 有 0 ~ 15 (一共 16 个等级)
在我刚研究红石系统时, 因为把"红石"类比做现实生活中的"电", 所以用"红石能量"来表述. 到了后期, 对红石系统有了更深入的认识, 我更喜欢用"红石信号"来表述. 如果某些情境下需要强调其强度属性, 才会用"红石信号强度"来指称
# "红石信号强度"
红石信号会随着距离衰减, 每走一格衰减 1 单位强度.
供能元件(比如红石火把和拉杆)可以为红石线提供 15 单位的"红石信号强度", 所以最大的传输距离是 15 格, 超出 15 格后, 红石线失去信号(信号强度衰减为 0 ).
你也可以把"红石信号强度"理解成还可以传输多少格距离. 比如说, 如果有个红石粉的红石信号强度是 7 个单位, 也就意味着它能够传输 7 格距离.
下图中, 数字表示"红石信号强度":
![红石能量衰减](./media/energy-decay-of-redstone.png)
# 红石线的连接类型
我们约定将红石的连接形状命名为:
- 点状
- 线性连接
- 拐角连接
- 丁字连接
- 十字连接
# "充能" 和 "激活"
- "充能": 表示积蓄了红石能量, 能够往外提供红石信号, 用于"激活"红石元件
- "激活": 表示驱动红石元件激发反应, 比如"红石灯"点亮, 比如"活塞"推动
# "脉冲电流"
"脉冲信号"听起来很高大上, 其实就是指像"脉搏"一样间歇起伏 -- 在一个周期内, 大部分时间没有信号, 只有短暂时间有信号, 是间歇性的, 而不是连续的.
"脉冲"这个词就是取自"像脉搏一样波动"之意. 下图就是心电图中脉搏跳动的波形:
在 Minecraft 中, 需要注意区分"脉冲电路"[1]和"时钟电路"[2]:
- "脉冲电路 (Pulse Circuit)"不强调多次触发, 而是着重于调节红石信号的长度, 让红石装置以确定的时间长度维持激活状态. 比如说, 我们希望自动门被激活后, 打开 5 秒后再自动关闭, 这时候就需要"脉冲电路"
- 强调多次循环触发的, 被称为"时钟电路 (Clock Circuit)". 同时, "时钟电路"也能产生脉冲, 不过是持续的脉冲
# "透明方块" 和 "非透明方块"
在 Minecraft 中, "透明方块"的特性包括:
- 不会"压线"[3]
- 不会被充能
- 可以穿透"信标(Beacon)"的光束
而"非透明方块"的特性则与之相反 -- 会"压线"[3:1], 会被充能, 信标光束无法穿透.
那么, 哪些方块属于"透明方块", 哪些方块属于"非透明方块"呢?
为了讲解明白, 我们需要先要引入两个概念 -- "物理透明性"和"光学透明性".
- "物理透明性"是指物品外观是否透明
- "光学透明性"是指能否透过这个方块看到其他方块
举例来说:
- "圆石"是物理不透明, 光学不透明的方块
- "玻璃"是物理透明, 光学透明的方块
- "萤石"和"红石块"是物理透明, 而光学不透明的方块.
而 Minecraft 的"透明方块"和"非透明方块"是依据"物理透明性"来划分的, 而无关"光学透明性". 所以, "玻璃"、"萤石"和"红石块"都属于"透明方块".
danger 例外: "粘液块(Slime Block)"属于"透明方块", 可以穿透"信标"光束, 但是会"压线", 也会被充能. "粘液块"兼具了"透明方块"和"非透明方块"的特性.
# "全体积方块" 和 "非全体积方块"
完全占满 1 x 1 空间的方块就是 "全体积方块", 其余的(没有占满 1 x 1 空间)就是"非全体积方块".
下面的就是"全体积方块":
下面这些就是"非全体积方块":
# "压线"
"压线"是指普通方块交错放置时, 会阻断红石信号的现象.
在 Minecraft 中, 普通方块会"压线", 只有 3 种特殊方块不会"压线":
"非全体积方块"除了"半砖(Slab)"这种特征明显的非全体积方块, 还包括"漏斗(Hopper)"、"楼梯(Stair)"、"活塞(Piston)"和"粘性活塞(Sticky Piston)":
# "四周" 和 "相邻"
我们约定, 将方块平面上的四个方向的位置叫做"四周", 将方块的六个方向的位置叫做"相邻".
# "附着" 和 "生根"
大部分红石元件需要放置在某个方块上面, 称为"附着"在某个方块上(在工程设计行业中, 称为"生根", 非常的形象. 但是在这里, 我们会遵从 Minecraft 社区的习惯, 称其为"附着").
如果击碎红石元件附着的方块, 红石元件便会以物品的形式掉落. 如果直接击碎红石元件, 则不会以物品形式掉落! 所以, 如果我们打算重复利用资源, 应该击碎红石元件所附着的方块, 而不是直接击碎红石元件.
# "掉落" 和 "发射"
在 Minecraft 中, 物品有两种状态, "掉落状态"和"发射状态". 从字面上就能理解:
- "掉落"表示物品自然掉下来, 比如瓜熟蒂落
- "发射"表示人为将其弹射出去, 比如射箭
在 Minecraft 中:
- "掉落"出的物品不会伤害别人, 而且可以被重新拾取. 比如说"工作台"被击碎, 呈"掉落状态", 我们可以重新将其拾取放入背包!
- "发射"出去的物品, 则可以伤害到目标. 同时, 也可以被拾取.
比如, "发射器(Dispenser)"[5]可以"发射"箭矢, 而"投掷器(Dropper)"[6]则会丢出箭矢, 让其呈现"掉落状态":
# "潜行"
在早期的 Minecraft 游戏中, 游戏角色经常会因为从高处边缘掉落而意外死亡, 所以之后开发人员引入了"潜行"功能 -- 当我们按住 Shift 键, 再移动角色, 就不会从任何的边缘失足掉落.
# "刻" "游戏刻" "红石刻"
"刻"的本质是 Minecraft 设定的时间单位, 就像现实生活中使用的"秒、分、小时"一样.
为什么 Minecraft 不直接使用"秒"作为时间单位, 而要引入"刻"这个概念?
- 在游戏开发中, 几乎所有的程序都是由一个大的循环程序运行. Minecraft 的开发人员将循环程序的一个周期称为"刻(tick)". 在这个时间内, 游戏进行更新(比如太阳移动, 饥饿值改变...)
- 由于程序每次循环的时间非常短 -- Minecraft 内部的循环程序是以每秒 20 个周期的速度在运行, 也就是说每个循环用时 0.05 秒. 为了方便游戏开发, 所以将这个 0.05 秒定义为 "1 个游戏刻"
- Minecraft 的开发人员将"红石系统"每次循环检测的时间设定为 0.1 秒. 同样的, 为了方便游戏开发, 将这个 0.1 秒定义为 "1 个红石刻"
所以:
- 1 游戏刻 = 0.05 秒
- 1 红石刻 = 0.1 秒
- 1 红石刻 = 2 游戏刻
在 Minecraft 中的一天是 24000 游戏刻, 对应的是现实生活中的 20 分钟. 所以你要把游戏世界的时间改成中午, 需要输入命令
/time set 6000
"游戏刻"和现实世界时间的对应关系并不是完全固定的. 如果电脑的性能非常差, 以至于无法达到游戏程序执行所需的速度, 那么完成一个循环程序需要的耗时将增加, 这也就是"游戏卡顿"的来源之一. 不过, 通常我们不需要考虑这个因素, 因为现在的计算机普遍都性能过剩, 而不是性能不足. 你只需要了解这个现象即可, 不需要为此担心
注意"简称": 你所看到的"刻"有可能是指"游戏刻"也可能是指"红石刻", 需要注意文章前后文的背景. 如果是讲"红石系统"的文章, 那么"刻"一般是指"红石刻", 如果是其他情况, "刻"一般是指"游戏刻"
红石元件所需的"红石刻":
- "红石火把"在收到的信号后, 进行反转时会产生 1 红石刻延迟
- "红石中继器"默认延迟 1 个红石刻, 我们可以用右键点击它, 可以将延迟调整为 2、3、4 红石刻
- "活塞"和"粘性活塞"推出去需要 1.5 红石刻 (如果激活活塞的脉冲电流短于 1.5 红石刻, "活塞"和"粘性活塞"会将其推出去的方块留在推出的位置, 且活塞臂会瞬间缩回. 这样, "粘性活塞"无法拉回自己推出的方块)
- "漏斗"传输或者抽取一个物品都需要 4 红石刻(如果是吸取掉落物则没有延迟)
- "红石比较器"对收到的信号做出反应需要 1 红石刻
- 激活"木质按钮"需要 1 红石刻, 产生的红石信号将持续 15 刻(不包括被箭射中的情况), 而激活"石质按钮"也需要 1 红石刻, 但是红石信号只持续 10 红石刻
- 激活"压力板"需要 1 红石刻, 产生的红石信号将持续 4 红石刻