在随机生成的数据中寻找雅达利游戏
Hacker News 摘要原标题:Finding Atari Games in Randomly Generated Data
这个网页的内容关于一个名为“有限的雅达利机器”的项目,该项目探索在随机生成的数据中寻找雅达利游戏。项目的核心思想是生成大量随机的4KB数据文件,然后通过一些启发式规则来筛选,其中包括使用雅达利2600模拟器对这些随机文件进行测试,看是否能找到真正的雅达利游戏。
项目概述:
项目使用大约300亿个4KB文件的随机数据,这些数据通过一些从完整的雅达利ROM文件集合中得到的启发式规则被减少到大约一万条。最后,一个分类器系统用雅达利2600模拟器对它们进行扫描,以找出哪些随机文件实际上是雅达利游戏。项目的出发点在于一个看似无用的好奇心:如果使用GPU生成大量随机数据,会有什么结果。
方法论:
项目生成ROM的过程是:
1. 从设备生成4KB随机数据。
2. 在模拟器中运行该文件。
3. 捕获几个屏幕截图。
4. 使用AI进行过滤或评分。
5. 保存最佳结果进行进一步调查。
为了减少无效的数据,需要构建一些启发式检查规则,比如:检查有效的操作码、有效的重置向量、读取TIA(电视接口适配器)和RIOT(内存I/O计时器)的访问,以及检查循环和跳转指令等。
结果:
项目的初步检查结果显示,在生成的30亿个ROM中,最终筛选出了大约10000个通行的ROM文件,并且通过模拟器运行后,只有456个文件显示出有趣的视觉输出,其中16个文件有静态视频输出,11个文件则展示了动态视频。
在这些结果中,有一个名为51014的ROM展现了“游戏”的特征,它能响应用户的输入,并反馈相应的视觉输出。尽管它的编程逻辑简单,但能够由随机数据生成具有“游戏性”的表现十分令人惊讶。
未来工作方向:
作者提到,虽然Atari 2600是一个理想的目标,因为它的简单性使得随机数据容易产生有效的输出,但他也探讨了尝试其他平台的可能性,比如NES或Game Boy,但由于这些平台的复杂性,会使得生成有效ROM的过程变得更为困难。
作者对未来的计划还包括可能的分布计算项目,比如类似于SETI@Home的项目,每台计算机都在搜索随机数据中可能的游戏。
结论:
作者认为,尽管看起来这是一个荒谬的想法,但通过不断地生成和测试随机数据,寻找任意有用的输出是一个具有技术必然性的过程。通过这么多实验,他证明了即使是从随机数据中也有可能提取出某种形式的游戏,打破了对传统游戏开发过程的理解和期待。所有的代码可以在“有限的雅达利机器”项目的GitHub仓库中找到。