Title Text:The Credible Machine
Origin:https://xkcd.com/2916/
https://www.explainxkcd.com/wiki/index.php/2916:_Machine
机器
https://xkcd.in/comic?lg=cn&id=2916
这个互动游戏是Randall发布的第14个愚人节漫画。之前的愚人节漫画是2765:逃逸速度,发行于2023年4月19日,星期三。”机器”在发布后的几周内进行了多次更新,添加了以下功能:
奖杯和 shot glass 道具
猫,会拍打它面前的球
无生命的小猫和小包子装饰
一个链接系统,编码当前查看的单元格的XY坐标,以及时间(即在某个审核操作之后整个机器的状态)
一个按钮,可以跟随附近的球穿越机器,同时防止它消失
正如标题文本中提到的,这个游戏是1990年代和2000年代初PC益智游戏系列《不可思议的机器》的精神续集,这是Randall小时候玩的游戏。这两个游戏有几个共同的物品:
风扇
猫
斜坡
不同密度的球
漫画在一个主屏幕开始,用户可以在一个“单元”中创建一个鲁布·戈德堡机器,目标是将不断流动的彩色球从天花板或墙壁的输入引导至墙壁或地板上匹配颜色的输出。当漫画首次打开时,一扇窗口会出现在机器上,Cueball穿着实验室外套告诉你将球从输入引导至输出。一个按钮打开“工具面板”,在那里有大板和小板可以使用,还有一些花哨的东西,比如棱镜(可以偏转弹珠)和风扇(可以吹动弹珠),以及对球没有影响的装饰元素。
通常,输入和输出只接受单一颜色的球。然而,一些输出接受多种颜色,用双箭头表示,一些输入生成多种颜色。当玩家设计他们的“机器”时,这将涉及将多个完整的流合并为一个(由相邻提交的双出口提供)。然而,现在在整个网格中工作机器的源可能会发现其源现在包含未得到妥善处理的其他类型的多余球,但没有办法强制重新编辑机器以改变其行为以考虑这一点。
如果任何球在您的单元中停留超过30秒,它们将消失。第一次球消失时,另一条弹出窗口将通知您,由于安全原因,球被移除。每个出口旁边的指示器对于通过出口的每个正确颜色的球会增加,并在没有球通过或错误颜色的球通过时减少。当该出口未正确供给时,它显示红色叉,并在供应到达一个充分且清洁的球流时变为绿色勾。第一次您建立的机器成功引导了足够数量的正确颜色球到所有相关输出时,弹出窗口将提示您提交您的单元以便加入公共机器。(随后,提交按钮将悄然从“非活动”(淡色)变为可点击(深色)。如果任何球转移再次下降到所需阈值以下,因任何原因,比如进一步编辑或“意外”累积的球结束,该状态将再次改变。)
选择提交您的单元将给您一个文本框来给该单元命名。通过这一过程,您现在将在“网格”中看到您的单元和任何相关相邻单元的球的“实时”反馈(这可能比您设计的单元所用的反馈更加偶然,并包含其他类型的多余球)。如果任何供应邻居仍然标记为“建设中”,它们可能会将球提供过来,就好像完全从它们自己的(最终)源供应,但是最终会枯竭。如果您新提交的创作位于单元的最低一行,球将通过底部的出口被分发,但没有发射器将它们推向坑,球将消失。
在没有坐标和时间参数重新打开此漫画的链接后,您最近创建的机器在您构建它的空间中可能不会可见。Reddit用户xzaphenia在r/xkcd上声称这是因为有一个审核团队(他们是成员之一),而且主页只显示公共的、经过批准的机器。包括被列为该漫画共同创作者的人员在内的这组人根据他们的偏好选择机器(几乎没有任何正式标准,除了酷、创新、有效性和隐私问题)。考虑到“底层”单元中可能已准备好的数量(例如,12的网格宽度,或许在相邻行之间错开)以及随时可能的全球贡献者,可能被选中为永久的机会很低;并且在漫画早期存在时,参与的初期疯狂冲刺中,机会肯定更低。还声称在某个时候,审核将会停止,机器将被视为“完成”。
介绍弹出窗口
时间限制弹出窗口
提交弹出窗口
右下角的按钮允许您在编辑自己机器和一个页面之间切换,您可以拖动以查看所有已提交和接受的机器,每个机器的左上角都有一个标题。在此视图中,您可以看到所有的输出也是另一个单元的输入,除了顶部一行,输入来自屏幕之外,且最底行通过某种发射器输出至远下的四个颜色编码容器。任何空单元均通过黄色胶带标记,有“建设中”字样以及“DJIA 鈫?31415”,每个单元中各一次。”DJIA”代表道琼斯工业平均指数,“DJIA 鈫?31415”表示其上升至31415点,31415是π的前五位数字,没有小数点。这通常会在黄色“行情数据”上显示,看起来可能表面上与黄色隔离带相似。
在查看整个机器时,后来的左下角中添加了一个按钮,允许您在球从单元到单元传递时跟随最近的球的路径。这也会使您跟踪的球不死 – 不受30秒超时规则的限制。然而,它将在基本机器的底部停止跟踪——不会跟随到底部的保存容器中,也不会在下去后保持不死。后来的另一个添加是在左上角的按钮,它复制一个URL,可以直接带您到您当前查看的单元。然而,创建的链接将始终显示您在当时查看机器的版本,而没有任何后续添加。
每当球到达网格底部时,它们会被引导到四个容器中,每个颜色一个。大多数球被准确地发送到适当的容器,尽管有一些误发。这些容器位于坑上方,并每11.5秒倾倒其内容。坑中的球受到约97秒的淘汰规则的影响(包括在保存容器中花费的时间),与上面的单元中的球不同。如果没有球被引导到容器中,坑将是空的。如果至少有一条球流在运作,Cueball和Megan会坐在一艘名为USS Buoyancy的小船上,当足够的球被存放时,船开始浮起并移动。错过或溢出的球从框架底部掉下。
建设中的单元将在您不观看时,将适当颜色的球送入相邻的单元。一旦您滚动查看它们,球的供应会停止,后续链中的单元将不会接收到任何;再次向外滚动,供应将恢复。
网格宽12个单元,并在高度上增加。迄今观察到的最大尺寸为12×128,共1536个单元。机器的高度由最低单元决定;这可以是您提交的单元,或由其他用户创建的单元。
机器中的不完美(无论是偶然还是设计)以及在交叉流时无法完全避免碰撞不可避免地导致错误颜色球的重大损失和污染。实际上,使用跟随球功能表明,球在经历多个机器而不在某个地方卡住是相当罕见的。这应该意味着实际上没有球会到达下层。这意味着有些“创造性会计”正在进行,以确保网格下方的单元仍有球可处理——仅为少数相邻单元模拟流,而假设这些单元本身有纯净、稳定的输入。
在任何给定的竞技场中,放置的物品数有一个严格的限制,即100个项目(包括物理互动和纯装饰)。如果您已放置75个物品,您的组件栏中会出现一个计数“##/100”,如果您删除物品使其低于此计数,该计数将再次消失。计数文本在“100/100”时变为红色,此时不能再添加更多物品,只能移动现有物品(或移除,以再次降低计数)。
工具箱物品[编辑]
物品列表
描述
效果
图片
木板
静态障碍
锤子
静态障碍
剑
静态障碍
铰链铲†
围绕其铰链旋转,尽量保持水平,具有弹簧效应
铁砧
静态障碍
砖块
静态障碍
风扇
吹走面前的球。不同颜色受到的影响程度不同(黄色球最轻,可以漂浮在朝上的风扇上)。
枕头
如果球撞上它将不会反弹
弹簧
以显著更高的速度将球弹开
吸引器/黑洞*
将球拉向中心
排斥器/白洞*
将球排斥离中心
棱镜
“折射”和内部反射球,球的颜色可能会导致它们根据元素的相应颜色(尽可能多地)反应。
轮子‡
旋转,偏转球,足够的阻力(例如,球的堆积或其他元素)会导致卡住。
“干得好”奖杯
静态障碍
玻璃杯
静态障碍。容器, nominal 容量为四个球(部分或完全)。
猫
拍打自己面前的球(后期添加)
非物理物品
面朝右的马尾辫,双臂抬起
无形装饰
面朝右的马尾辫,站立
无形装饰
面朝左的Cueball,双臂抬起
无形装饰
面朝左的白帽,站立
无形装饰
面朝右的针织帽,以“动作”姿势
无形装饰
面朝右的针织帽,站立
无形装饰
戴着头盔的人,站立
无形装饰
松鼠
无形装饰
“可能是确定性”标志
无形装饰
包子
无形装饰
猫
无形装饰
* — 吸引器和排斥器是全方向的,但影响范围可以调整以扩展或限制其影响。您可以通过其边界框的角和中边“拖动节点”以及当前范围的圆形区域来实现,只有在元素被主动选择时才会显示。此调整大小不能大于使盒子/圆接触边缘,也不能小于固定图形,同时在两个轴中始终保持相同的比例。
† — 铰链铲在构建时严格水平。它们会根据与球或可能放置的其他非装饰物品的交互而旋转,远离(并回弹到)水平方向,有时会引发后续有趣的交互(可能是故意的,也可能有用)。该物品有两个可选的版本。(唯一另一个具有明确(实用)不对称性并且可以从侧边栏选择反向对称的物品类别是两个版本的三角形“弹簧”缓冲。
‡ — 轮子是一个主动旋转的元素,默认情况下逆时针旋转。当选择放置的轮子时,按左/右箭头键将调整轮子的旋转速度,使其更快/更慢地逆时针。将旋转调整到零旋转以上,将使其旋转至相反方向。
旋转可以远远超过发生车轮效应的点,可能使得难以判断超速轮子元素的旋转方向(因此,如果您忘记了,可能会使您忘记哪些箭头键将减慢或加速其旋转),虽然观察其对撞击的任何球的影响应使其当前的旋转方向显而易见。
“边界编辑框”通常看起来是旋转的,可能基于当前旋转图形的方向进行选择,但在编辑期间继续保持该角度(通常为非正交角度),即使轮子旋转(如果能旋转的话)。所有其它物品可以通过从边界框延伸的“环节点”手动重新调整角度。如果您无法看到所选项目的“角节点”,通常在任何新放置项目的顶部,但跟随之前可能已经应用的任何重新调整,则可能是因为您放置的项目太接近延伸的边缘。要旋转它,请将对象移离边缘以访问构造节点(之后,如果需要,您可以把物体拖回去 – 但见下文)。
旋转可能受到作为“选择框”的最小边界框的限制,这并不一定是图形中内建的碰撞图的更合理的凸包。如果边界框的一个角需要越过构建区的边缘,它将只会触碰边缘,直到有足够的角度拖动使其回到原角度;或者,当它有一个长直边与边界边缘平齐时,可能会整齐地弹到180度的旋转,此时相对的长直边与构建区域的边缘平齐。所有被拖动的物体也同样不能移动得更远,只能使它们当前的边界框触碰构建区域边缘。旋转轮子的边界框是一个显著的例外,并不由玩家直接控制相应的角度。相反,它似乎使用定义轮子边缘的内接圆作为边界。
除了铰链铲与任何元素(包括其他铰链铲)之间的一些交互外,用户放置期间对象之间没有预防性的“碰撞检测”,可以相互重叠/覆盖(最近生成的物体图形会覆盖任何早先的对象)。如果不受其他物理元素(包括不逆向旋转的相邻轮子的轮辋)限制,轮子物体仅会旋转,但仍然可以在构建区域的边界内拖拽和放置任何位置。
连续的球流尊重所有有形物体,这包括目前正在被拖动/旋转的任何物体,但如果被强迫放置在两个接触/重叠的物品之间可能会及早消失。通过小心地将有形对象的表面移动到它们上面(或将它们保持在内部,例如“杯子”)来间接推动球。这可能对救助暂时迷失的球(无论如何在超时之前)有用,解除因施工引起的球堆积或测试当前没有“自然”供给的球路径。这样做可以暂时满足所有出口门的要求(暂时),因为这也可能暂时破坏一些所需的路由,但一旦“机器”被提交,手动干预将不再可能。
非玩家物品[编辑] 机器底部的球容器
Cueball和Megan在USS Buoyancy上
USS Buoyancy下方的坑(不按比例)
颜色路由[编辑] 不同颜色的球具有不同的物理特性。红色球比其他球更有弹性,绿色球更重,而黄色球更轻且稍有弹性。以下值是从代码中提取的:
颜色
质量
密度
恢复(弹性)
线性阻尼(拖拽)
蓝色
0.08
1
0
0
红色
0.08
1
0.8
0
绿色
0.75
9.325
0
0
黄色
0.024
0.3
0.6
2
球也有旋转,但因为球没有可见的纹理,所以旋转是微妙且难以看到的。用绿色球(最重的)可以看到,努力观察。沿着斜坡(例如,两块板)滚落,绿色球会朝其滚动方向积累旋转。让它们掉落并碰到砖块,使其向上移动,但几乎没有横向运动。然后在它们的顶点刚过时,用一块砖“接住”这些球,当它们开始缓慢移动时。如果球落在水平砖上,可以看到球会突然向左或向右加速,基于其旋转。
对于某些进水和出水“闸门”的组合,有必要“交叉流”。例如,将右侧输入的球导向左侧出口,反之亦然。可以只构建字段,以让两组(或更多)球飞越一个共同的间隙,着陆在适合的接收区域,从而通向所选择的出口。但是,尽管这并不完全不被建议,但球的时机不能保证保持同步(或者说,反向同步)彼此,并且会发生碰撞,特别是在交付变体可能显著改变跨间隙的弹道路径的情况下。即使试验机器在与所有球以稳定流入场的情况下独立运作,一旦提交,必然会被更混乱的前期构建所喂养。
为了保持足够的正确到达出口,可能有必要添加一种过滤色调的方法。
这可能仅意味着在任何交叉点之后引入一个“错误色调陷阱”,将偶尔错误的球送回交叉点(或让它们在死胡同中超时,依赖于其余球少数的失败,加上一些在随后失去任何机会到达出口的碰撞球的失败)。或者,可以将两个(或多个)弹珠通过故意的“分拣机”送入,分拣机合理地将合并的组分开,以达到预期目标出口。
球的各种物理特性建议了一些方法,将单独的色调重定向到不同的行程。这可以通过将一种色调与其他所有色调隔离,然后再传递(如有必要)给一个从其余部分提取不同色调的设置来完成,也可能还有第三次提取。也许还可以合并“排序机制”的“布置”,有效地直接分配到三条甚至四条继续通往所需输出的轨道,但这将留给读者作为练习。
分离
蓝色
绿色
黄色
红色
红色
使用“反弹”
唯一的区别在于球从物体反弹的程度。管理良好并约束的反弹应允许分拣动作。
使用质量或“反弹”
绿色球不受风扇或黑洞影响,更容易与其他球分开。另一方面,也意味着精确加速绿色非常困难,因为能够加速绿色的组件仅有轰击和小猫。绿色球像蓝色球一样,对红色球的反弹方式有所不同。绿色球受黑洞的影响明显小于所有其他球。
见黄/蓝
不适用
黄色
所有方法
黄色球独自展现出高阻力以抵抗任何无强迫运动。在其他所有方面也独特;例如,可以漂浮得最高,与其他色调相比(尽管与绿色有着最显著的区别)。
见黄/蓝
不适用
见黄/蓝
绿色
使用质量
绿色球不受风扇影响。还有一个不是很边际的密度差异可以利用,例如通过使用黑洞,后者只对绿色有最小影响(或许显示出吸引质量和惯性质量的有效差异)。
不适用
见黄/蓝
见红/绿
蓝色
不适用
见绿/蓝
见黄/蓝
见红/蓝
即使对于自己的提交并非严格必要,一旦提交到完整的游戏网格中,玩家自己的贡献可能会发现自己在与不那么“纯净”的球流(来自不完美的分离供给)一同工作。可能这种更加互动的扰动会使新设置表现得不稳定或甚至完全不正确。
可能认为(但不是必要的)好做法是故意将任何或所有输入结合起来,进行一次完整的分拆,再次分开,以期可以处理这种交叉污染,并能够为他人的利益“清理”后续流。 当然,如果孤立的构建阶段没有提供所有四种色调以“测试”,则任何投机性添加的过滤都必须“盲目”添加(仅以防任何预期的错误球真正进入竞技场),而且没有任何合法的出口可以将此类拒绝球转移(因此可能会积累,直到任何对于任何球在作为组合网格的一部分时适用的“超时”)。
单输入/单输出设计在理论上可能并不特别需要任何分拣机制,虽然意外的系统污染,包含不同质量的球/etc,或许会引入由于添加的混乱而导致的功能失调。