技术大神将《毁灭战士》移植到 Typescript 类型系统

| 分类: 游戏情报 | 热度: 1 ℃

《毁灭战士》(Doom)作为游戏史上的经典之作,已经被移植到了几乎你能想到的所有平台上——从烤面包机到智能手表,甚至是 DNA 分子。然而,最近一个令人瞠目结舌的新壮举出现了:软件工程师 Dmitri Mitropoulos 成功将《毁灭战士》移植到了 Typescript 的类型系统中。这个项目不仅展示了技术的极限,也揭示了人类在追求“不可能”时所展现的创造力和毅力。

Typescript 类型系统的“荒谬”挑战

Typescript 是一种构建在 JavaScript 之上的编程语言,它通过静态类型检查为开发者提供了更强的安全性和代码质量保障。然而,Typescript 的类型系统本质上是一个编译时工具,用于验证代码的正确性,而不是运行程序的环境。因此,在类型系统内部运行像《毁灭战士》这样复杂的游戏,听起来就像是试图用纸和笔模拟一台超级计算机一样不可思议。

Mitropoulos 的这一壮举打破了这种“不可能”。他花了整整一年时间,编写了一个规模惊人的项目,最终让《毁灭战士》在 Typescript 的类型系统中运行起来。以下是该项目的一些关键数据:

  • 代码规模:3.5 万亿行类型代码。
  • 存储需求:总大小达 177TB,优化前甚至可能需要 1.25PB 数据。
  • 内存消耗:运行时占用超过 90GB 的 RAM。
  • 编译时间:第一帧需要 12 天才能完成编译,帧率为 0.0000009645 fps。
  • 性能瓶颈:每秒需要实例化 2000 万个类型才能生成输出。

如何实现?虚拟机、WebAssembly 和 ASCII 图形

为了在 Typescript 类型系统中运行《毁灭战士》,Mitropoulos 不得不从头开始构建一个完整的虚拟机。以下是他的主要技术突破:

1. 在类型系统中实现虚拟机

Mitropoulos 开发了一套完全由 Typescript 类型组成的逻辑系统,这些类型实现了 WebAssembly 的 116 条指令集。这相当于在类型系统中创建了一台虚拟计算机,包括 CPU、RAM 和磁盘空间等元素。

2. 使用 WebAssembly 运行时

项目的核心是通过自定义的 WebAssembly(WASM)运行时来执行《毁灭战士》的代码。然后,这些代码被转换为 Typescript 类型,并通过编辑器中的类型跟踪器逐步处理,以显示每一帧的输出。

3. ASCII 图形输出

由于 Typescript 类型系统无法直接渲染像素,Mitropoulos 将每个类型的值映射为一行像素,总共 128,000 行像素,形成了 320x200 的“分辨率”,并以 ASCII 字符形式显示画面。

开发过程:一场艰苦卓绝的旅程

Mitropoulos 的项目不仅是技术上的挑战,也是心理和体力上的考验。以下是他在开发过程中面临的主要困难和解决方案:

1. 编写自己的工具

由于现有的工具无法处理如此庞大的类型系统,Mitropoulos 不得不从零开始开发自己的工具链,包括:

  • 12,364 个手写测试用例。
  • 自定义的类型跟踪器扩展,以突破 Typescript 编译器的限制。

2. 学习多种语言

为了完成这个项目,Mitropoulos 深入学习了 C、C++、WebAssembly 和其他相关技术。他还不得不研究底层硬件原理,例如 L1 CPU 缓存的实现。

3. 反向二进制算法

由于 Typescript 类型系统只能从左到右迭代字符串,Mitropoulos 必须将所有二进制算法反向输入,这增加了项目的复杂性。

4. AI 无能为力

Mitropoulos 坦言:“AI 根本帮不上忙。” 因为这项工作过于底层且独特,即使是最先进的 AI 工具也无法提供任何帮助。

为什么这么做?探索技术边界的意义

当被问及为什么要接受这样一个看似“毫无意义”的挑战时,Mitropoulos 解释说,他最初只是想了解为什么《毁灭战士》不能在 Typescript 类型系统中运行。然而,随着项目的推进,他逐渐发现这是一个探索技术边界的绝佳机会。

“我确实开发了我认为是有史以来最大的 Typescript 代码库,” Mitropoulos 说道。“尽管我自己都觉得这很荒谬,但我还是找到了方法让它运行起来。”

未来的计划

目前,Mitropoulos 正在准备两个视频:

  1. 项目背景:详细解释他为何决定接受这一挑战。
  2. 技术分解:深入探讨项目的实现细节和技术难点。

虽然这个项目可能永远不会成为主流应用,但它无疑证明了人类在技术领域的无限潜力。正如 Mitropoulos 所说:“有时候,你只需要问‘为什么不能’,然后去找到答案。”

声明: 猎游人 每天为你带来最新的游戏和硬件打折情报,帮你精心挑选值得玩的游戏,让您的钱花的更值!本站信息大部分来自于网友爆料,如果您发现了优质的游戏或好的价格,不妨爆料给我们吧(谢绝任何商业爆料)!

0条评论

Hi,您需要填写昵称和邮箱!
姓名 (必填)
邮箱 (必填)
网站

暂时木有评论