6

怎么可能在一个64kb编译的 exe 中,这些程序可以生成如此疯狂的视觉效果,并配有匹配的音乐?

一个例子:Ars Nova By Phantom Lord运行演示的 YouTube 视频

这个程序只有64kb大小!他们是怎么做到的?

他们是否在 DirectX 或类似的东西中使用某种预先存在的对象、着色器等?

他们甚至使用什么语言?这东西有什么指南吗?

4

4 回答 4

5

64K 演示(例如您链接的演示)通过程序生成纹理和模型来节省空间。模块文件通常用于音乐,大多数乐器都是在代码中合成的。

这是重点。只要有可能,他们就会使用代码生成东西,而不是显式地存储数据。(当他们明确存储东西时,它会被严重压缩)。

然后使用可执行压缩器和其他技巧来最小化编译代码本身的大小。

不幸的是,演示很少与源代码一起发布。我确实在 scene.org 上找到了一些演示资源的集合,但我自己没有检查过其中的任何一个。

我所知道的综合指南也不多,但存在分散在网络上的各种主题的指南。Hugi 杂志是此类文章的一个很好的来源,特别是我建议查看特别版 #1,因为它包含许多演示编码文章。

于 2011-06-07T08:05:17.067 回答
3

主代码本身生成纹理、声音和演示中的所有对象。分形、变形、已生成对象的广泛使用(在演示时间轴中)和一些其他技术用于对象的紧凑算法编码。然后使用 exe 压缩器压缩代码。还使用了一些非常重要的技术来最小化代码大小。

另请参阅围绕此的亚文化。

于 2011-06-07T07:27:44.003 回答
3

这是一个很酷的演示,我很高兴人们仍在做这种事情……但我不会说有什么“魔法”在起作用。

就物体的“DNA”而言,这里没有什么太详细的了。立方体、赛车、棋子、球形弹珠、躯干。他们几乎可以自由选择他们想要压缩好的模型......或者丢弃任何不能很好压缩的细节。在这里,缺乏期望或满足某种规范对他们有利。他们甚至可以按大小对 3D 库中的对象进行排序,然后说“哦,那个很小但看起来很酷,让我们使用吧。” :)

如果您要变得棘手,有很多方法可以弄乱代码的大小。我发现这是一个有趣的阅读:

http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html

但我怀疑他们对此是否有兴趣。他们可能只是在相当低的水平上避免不必要的依赖和编码。常识和可执行压缩可以将大小降低很多:

http://en.wikipedia.org/wiki/UPX

像这样的音乐通常是用“跟踪器”完成的,这些文件比 MP3 文件更接近 MIDI 文件的大小。播放程序相当小......这个名为“MiniFMod”的程序可以播放 XM 文件,并声称只增加 5K 到您的 EXE 大小:

http://www.fmod.org/index.php/download#FMODMini

与音乐同步与其说是技术问题,不如说是艺术选择。演示可能会被节流以以一致的速度运行......并且每次播放音乐需要相同的时间。

于 2011-06-07T07:51:56.510 回答
1

从计算开始就有组装竞赛。像任何比赛一样,你创造了技巧,这些技巧找到了该比赛的参考。

一般使用的语言是汇编语言(二进制之后最接近机器的语言……)为什么叫二进制之后最接近机器。因为它涉及复杂的内存管理、到达设备的复杂指令集等......

于 2013-09-12T20:29:32.767 回答