狂肝 10 个月手搓 GPU,他们在《我的世界》里玩起《我的世界》,网友:梦想成真!


自从有人在《我的世界》里用红石电路造出 CPU,就流传着一个梗:

总有一天,这帮红石佬能在我的世界里玩上我的世界。

这一天,真的来了!

先来看这台“在无 MOD 纯原版我的世界里搭建的电脑”(简称“我的电脑”)。

作者之一 sammyuri 把最终成果浓缩成一条 3 分钟的视频,已经收获近百万播放量和 10 万多赞。

一条高赞评论将其誉为“整个电子游戏史上最伟大的壮举”,只有足够复杂的游戏和足够精通的玩家才能达成。

也有人表示“我失望于自己无法完全理解和欣赏这个作品,到底难度有多高,以及需要的工作量有多少。”

要理解这一切,还要从 17 个月前 sammyuri 造出的那块 CPU 说起。

CPU 显卡都自制

狂肝 7 个月,sammyuri 在《我的世界》中生造出一块 CPU,初衷是为探索红石电路的极限。

最终成果是一台 8 位处理器,采用三个寄存器操作数的 RISC 架构,可以 1Hz 频率运行,拥有 256 字节 RAM。

取名 CHUNGUS 2,意为“计算用超巨大非传统数字与图形处理器”。

与此同时,他还开发了专用汇编器,可以把程序代码转换成可以一键粘贴到《我的世界》里的砖块结构。

sammyuri 认为,CHUNGUS 2 性能基本达到雅达利经典游戏机 Atari 2600 水平,运行个贪吃蛇、俄罗斯方块都不在话下。

手搓 CPU 的视频,一发到网上就爆火,播放量过百万。

但他并不满足于此,甚至(在读者的鼓动下)萌生了无限套娃的想法 —— 在《我的世界》中玩上《我的世界》。

不过,这听起来实在是天方夜谭……

毕竟在现实中,《我的世界》游戏最低配置要求也是 3Ghz CPU+4GB 内存,他这只有 1Hz CPU+256 字节内存的配置,怎么带得动?

这时候就需要借助群体的智慧了(手动狗头)。

Sammyuri 找到 Uwerta 和 StackDoubleFlow,三个人一起基于这个 CPU,给计算机来了一次升级,其中 2 个人负责在游戏中搭硬件,1 个人负责写代码。

这一升级就是 10 个月,最后竟然真的在《我的世界》中,用一块 96×64 像素的屏幕,玩起了一个 3D 版、复刻 16 种方块 + 32 种物品、还原数十种游戏机制(挖掘、制作、烧制、搭建、箱子、随机刻等)的《我的世界》!

没错,这还是个 3D 的《我的世界》,因此计算机中还配备了显卡(GPU),专门用来处理图像。

这只 GPU 名叫“AMOGUS”(Absurdly Massive Operator on Graphics by Uwerta and Sammyuri,超巨大的图形运算器,Uwerta 和 Sammyuri 制造)。

AMOGUS

首先,给这个 GPU 输入物体在 3D 空间中的坐标、以及纹理位置等信息;随后根据相机位置,切割出需要显示的画面(例如相机位于一棵草中间,它就只显示相机前面的草,将相机后面看不见的草切掉);

接下来,将屏幕上的 3D 坐标映射成 2D 坐标,并将四边形分割成 3 个梯形、进一步分割成像素行、再分割成单个像素,并进行线性插值来计算每个像素对应的纹理位置(即纹理映射),以及它与相机的距离;

(图源 Surfaced Studio)纹理映射原理,在 AMOGUS 中做了简化

纹理映射是实现 GPU 处理 3D 图像的一个关键。用 GPU 处理 3D 图像时,需要将屏幕上的 1 个像素与 3D 物体表面纹理上的某个位置对应起来,也就是纹理映射。

由于目标与相机的距离一直在变化,因此纹理映射占用屏幕的像素范围也不一样。

最后,从纹理缓存中获取像素颜色,并将深度与屏幕当前像素深度(存储在 6kb 的像素深度缓冲区)进行比较,如果更相近就进行覆盖。

用于存储世界地图的 RAM 由 512×4 位地址组成,一共 256 字节,基于坐标(x,y,z)寻址。如果检测到玩家超出边界,就会返回 0 或 255。

世界地图就存在这里

输入控制器,则由一系列《我的世界》中的压力板组成,踩到后就会将当前状态发送到队列中,CPU 就能读取并处理。

而生造的 GPU,又能成功运行,把捏出来的计算机里的《我的世界》方块,全部进行 3D 渲染

再者,红石线路本就具备数字电路的基本要求,只不过堆叠运行限制很大。

移植版《我的世界》玩儿起来,再次证实了《我的世界》的图灵完备

具备图灵完备,意味着在不考虑实时运算的前提下,“在《我的世界》里玩《我的世界》”,可以一直套娃。

狂肝 10 多个月可以套娃一次,要是狂肝 20 多个月,岂不是就能实现“在《我的世界》搭电脑玩《我的世界》,并在后者中再搭一个《我的世界》来玩”???

套娃人狂喜!

不过,考虑到《我的世界》边界距离理论上是有限的,所以每一次模拟出的《我的世界》都会更小

因此真・无限套娃,用这个办法恐怕还是不行。

他不会是认真的吧?不会吧?

GitHub 地址:

https://github.com/sammyuri/minecraft

《3D 版我的世界套娃》压缩包:

https://www.mediafire.com/file/fbkuwo2aqg8gigj/3D+Minecraft+in+Minecraft.zip/file

参考

  • [1]https://www.youtube.com/watch?v=-BP7DhHTU-I

  • [2]https://github.com/MCHPR/MCHPRS/blob/master/docs/Redpiler.md

  • [3]https://news.ycombinator.com/item?id=32901461

  • [4]https://www.youtube.com/watch?v=eiDrRa6JvQ0

注:本文全部图文转载自新浪微博,本站不提供图文存储空间,图片源文件与内容均在新浪微博,本站转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除相关内容不再收录。

也许你喜欢❤



评论0