游民星空 > 资讯中心 > 正文

技术宅惊世之作 《我的世界(Minecraft)》如何打造计算机

2014-08-28 12:24:16 来源:人人网 作者:季文瀚 编辑:暗影猫 浏览:loading

视觉信号与显示器

  游戏本身没有显示屏这种东西,但是玩家可以通过各种方式实现视觉上的信息传递。

  第一种是红石灯。如下左,红石灯被充能时会亮,不充能时不亮,这两种状态即可组成图形,和计算机的bitmap一致。

  第二种是阴影成像。即游戏中白天光照条件下浅颜色的方块凹陷处的阴影会和周围的方块形成反差,也构成了两态信号的图像。如下右的七段显示器。

游民星空

  而实现方块凹陷的方式就是粘性活塞,如下图,活塞推拉分别对应填平和凹陷。

游民星空

向上传输和BUD

  向上传输是游戏提供的一种信号单向向上传输的方式,可以用两种方块实现。如下左,左边花纹方块是萤石,本身有自然发光的作用,同时可以用图中方式向上叠放。正常的方块这样叠放肯定会挡住信号,所以正常方块向上向下传输必须螺旋盘叠,这样会占据更大的空间,于是游戏提供了单向向上传输节约空间。但是可惜游戏没有提供单向向下传输(至少我使用的1.4.7版本没有提供),可以看到如图中左边的萤石信号通路输入端在上方,下方方块的红石导线没有亮,而右边的萤石通路输入端在下方,上方方块的红石导线亮了。另一种单向向上传输的方块是“半砖”,即只占一般空间的砖头,如下左图中右边灰色的砖块。因为只有一半高度,所以这样盘叠不会挡住各自导线的连接。半砖同样只实现单向向上传输。

  BUD是游戏中一类类似BUG的信号特性。但是又不能叫做BUG,因为这些特性也可以看做是信号系统的组成部分。由于游戏编程中对于方块更新的检测机制存在一定局限性,所以一些方块会被非正常激活。只举一个例子,如下右图不断升高的信号线路,绿色方块活塞推出是正常被充能的情况,红色方块活塞抽回未被激活也是正常的。但是中间紫色方块活塞没有邻接任何被充能方块,但是处于推出状态,这种情况是反常的,称之为BUD。出现这种情况很多时候会对设计造成困难,有一次我调试线路出现了很奇怪的错误,排查了半天才发现是BUD问题。有些时候也可以利用BUD的特性做成特定功能的线路。

游民星空

  实际上游戏中还是有BUG的,有一次我排查了一个多小时竟然发现某个错误的原因是这样的:两个相隔100多米毫无功能关联的继电器,当一个置于2档的时候,另一个会工作不正常。这属于游戏难免会有的BUG,但是有时候一个小BUG会导致整个计算机瘫痪。

逻辑门

  信号元件基本就全部介绍完毕了,然后正式介绍数字电路的部分。

  游戏提供的二态信号正好对应于二进制0和1,也对应于数字电路里用高低电平表示的信号。所以二态信号系统无论其实现的载体和方式如何,规律必定都是一样的。所以可以用相同的组合和算法构造更复杂的结构。

  有了四种信号元件如何进一步做成逻辑门呢?非门前面已经给出了,即利用红石火把被充能方块熄灭的特性。

  或门更简单,“或”在逻辑上就是只要任意一个输入端(不仅仅是一共2个输入端的情况)输入信号,输出端就一定输出信号。如下左,两个橙色的方块为输入端,只要有一个放上火把,绿色的输出端就会输出信号。下右为简单的组合逻辑,4个输入端组成的或门加上输出端的非门组成的或非门。这种电路一般用于“0判断”,即输入端全为0,输出就有信号,只要有一个输入是1,输出端的红石火把就会灭。

  可以证明只用或门和非门就能实现一切逻辑,游戏的设计者也只设计了这两种能直接实现的逻辑门,这一点和现实的晶体管电路也很符合。通过在空间上对或门和非门的组合排布就能实现更加复杂的逻辑门。

游民星空

  与非门如下左,紫色为输入端,橙色为输出端,可以看出输入端连着两个红石火把是两个非门,火把中间通着导线是一个或门,真值表我就不写了,简单计算即可知这是一个与非门。常见的与非门应用也就是RS触发器了,比如下右这个基本RS触发器,低电平有效,紫色输入,橙色输出,RSQQ非就随便怎么分配了,此时图中输入端均有效,输出端无效,当输入端从01或10置为00(高电平)时会锁存。而当输入端同时从00变为11时游戏的方块刷新机制会默认选择其中一个输出端输出1,另一个输出端输出0,当然本身就不用考虑会使用这种情况。所以用与非门构造的RS触发器和现实中基本一致。

游民星空

更多相关资讯请关注:我的世界专区

上一页 1 2 3 4 5 6 7 8 9 10 11 下一页
友情提示:支持键盘左右键“← →”翻页
人喜欢
游民星空APP
随时掌握游戏情报
code
休闲娱乐
综合热点资讯
单机游戏下载
好物推荐
游民星空联运游戏
技术宅惊世之作 《我的世界》如何打造计算机https://imgs.gamersky.com/upimg/2014/201408281220432943.jpg