2

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

 1 year ago
source link: https://www.36kr.com/p/1923187323117314
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

量子位·2022-09-20 06:12
CPU显卡全部自制

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

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

这一天,真的来了!

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

v2_88903a6f4aac424f92c827b6f6b9209d_img_000

拥有1Hz频率的CPU、8KB内存、6KB显存的显卡、加速模块,96x96像素显示器,以及一只PS4手柄作为输入设备。

它运行起来是这样的:

v2_db8435400ec14e8baea740d61b0c2a17_img_000

电脑有了,还缺的就是能跑在上面的游戏代码。

大佬们先用一种叫URCL的中间语言手敲,再转换成自制CPU能运行的汇编码搞定。

v2_8580f10418364273b565a86145dd0a3a_img_000

就这样,3个人肝了10个多月,终于实现史诗级套娃。

v2_ec6a6ef1cec24f81b8dedcb33a89d901_img_000

这个移植版《我的世界》,不但拥有游戏的基本玩法如开放世界、方块摆放,采矿,甚至连物品合成都有。

v2_7d2bf04faecd4a36a0ac769f336f87d7_img_000

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

v2_d922fea0063c45c0a0d972c506cdd57b_img_000

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

v2_fbfbaa1386184c25bb1434361f0fe885_img_000

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

v2_5ff4490e8cfa44679e9d026d2e545310_img_000

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

CPU显卡都自制

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

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

v2_77fb4a1be8eb49e69d20d9bceb62a263_img_000

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

v2_0f609e9d281d484a89e139d516615b84_img_000

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

v2_054165e896524fdb87cf284cd7df8e8b_img_000

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

v2_22a5d586d1e6468fbbf9e04953eee867_img_000

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

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

v2_4a7858cde5e14778a45a5e1444340204_img_000

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

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

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

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

v2_9898e8b20ca549cc8d2b279bca361f47_img_000

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

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

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

v2_a4459a81c4e6431db8e3f6ccd415eae6_img_000

△AMOGUS

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

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

v2_d016800fe7c1421f8efa3d15c10c7c1e_img_000

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

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

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

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

v2_a68393a63a084970a569ed651234319d_img_000

除了用GPU处理图像以外,这台可以运行《我的世界》的计算机又是如何存储游戏数据、并与玩家进行交互的?

以充当工作台的ROM为例,它存储了各种锻造和烧练的配方,当输入一系列需要合成的物品(如一系列木头)时,就会输出一个结果(木块),否则就输出0。

v2_bec80692772a4f52b0e5bcd415c3b70b_img_000

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

v2_dd547011dbab48e19348a6e68095681c_img_000

△世界地图就存在这里

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

v2_87685255ef464eba967d605c1b870d99_img_000

△根据PS4手柄风格设计

当然,在《我的世界》中运行这台计算机,必须经过加速(否则可能几小时都计算不出一帧)。

于是他们便借助MCHPRS服务器,提升了一波红石运行的速度,达到了每秒0.1帧的极限水平(doge)。

v2_63406d4fd0b3476c8aeef4ece9a25b3d_img_000

即便如此,我们看到的这段2分钟视频,仍然花了大约9小时录制,有种“天上一天,地下一年”的感觉。

据Sammyuri表示,目前他们正在进一步优化GUI(图形用户界面),下一步有可能制作一个独立的、只运行红石系统的版本,甚至实现在《我的世界》中运行《DOOM》的梦想。

细节上有多硬核?

其实在这之前,不少红石佬们都想过用不同方法实现“在我的世界里玩我的世界”。

但多少走了点“捷径”,不算是用《我的世界》中的原生工具实现。

例如,通过虚拟机模组,在《我的世界》使用各种部件组装电脑,并当作虚拟机运行,比如这个VM Computers mod:

v2_32a7b4e8896b4961a16a7470d2ef9def_img_000

还有通过Web displays的,也就是在《我的世界》中搞一个浏览器,再运行网页版《我的世界》:

v2_48ee33b6770c4868ba67ef4341806258_img_000

尽管sammyuri三人组的方案尚存不足,但相比起来,不借助外部工具辅助又多叠了一层硬核buff。

“无限套娃”许愿成功!

当然,除了“工具全部现成”以外,这个0.2版本的《我的世界》,还有更多细节值得一看。

比如那个用1和0码出的CPU存储器——CHUNGUS 2,制程工艺达到了先进的1米(doge),频率达到了1Hz。

它有一个4级指令管线化,64字节的8路关联数据缓存,甚至分支预测,符合RISC标准

v2_65f4291bdbd24412a9b087c1e3313c64_img_000

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

v2_4ed26e1799574ced8a97337b24bf6981_img_000

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

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

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

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

套娃人狂喜!

v2_f3066b4837544151b40c538762ee75f4_img_000

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

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

v2_04123be4dd46496882bd8947fe633eb1_img_000

但,如果造出来的《我的世界》里有了红石电路,这并不妨碍新的一轮套娃又要开始了~

事实上,sammyuri在视频最后留了个彩蛋,“关注点赞我可能开始做我的世界中的我的世界中的我的世界”

v2_be7166b722ce4dd5974d87e2871a2633_img_000

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

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

本文来自微信公众号“量子位”(ID:QbitAI),作者:梦晨 衡宇 萧箫 ,36氪经授权发布。

该文观点仅代表作者本人,36氪平台仅提供信息存储空间服务。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK