什么语言或方法允许图形和音乐演示适合64kb EXE?

时间:2011-06-07 07:09:47

标签: 3d compression procedural-generation demoscene

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

示例:Ars Nova By Phantom LordYouTube video of the demo running

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

他们是否在DirectX中使用某些预先存在的对象,着色器等等?

他们甚至使用哪种语言?是否有某种指导这个东西?

4 个答案:

答案 0 :(得分:5)

64K演示,例如您链接的演示,通过procedurally generating纹理和模型保存空间。 Module files通常用于音乐,大部分乐器都是用代码合成的。

这是重点。 尽可能使用代码生成内容而不是显式存储数据。 (当他们明确地存储东西时,它会被大量压缩)。

然后使用

Executable compressors和其他技巧来最小化编译代码本身的大小。

不幸的是,演示很少与源代码一起发布。我确实找到了some demo sources on scene.org的集合,但我自己没有检查过它们。

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

答案 1 :(得分:3)

这是一个很酷的演示,我很高兴人们仍在做这类事情......但我不会说工作中有任何“魔法”。

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

如果你会变得棘手,有很多方法可以搞乱代码的大小。我发现这是一个有趣的读物:

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

但我怀疑他们对此有所了解。它们可能只是在相当低的水平上避免不必要的依赖和编码。常识和可执行压缩可以大大减小尺寸:

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

这类事情的音乐通常使用"tracker"来完成,而且文件的大小与MIDI文件的大小相比,而不是MP3。播放例程相当小......这个名为“MiniFMod”的播放程序可以播放XM文件,声称只需要为你的EXE大小增加5K:

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

与音乐同步并不是一个技术问题,而是一个艺术选择。该演示可能被限制为以一致的速度运行......并且音乐每次播放都需要相同的时间。

答案 2 :(得分:2)

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

另请参阅subculture

答案 3 :(得分:0)

自计算开始以来,有一些大赛。像任何比赛一样,你制作技巧,这些技巧为比赛提供了参考。

通常使用的语言是汇编语言(二进制文件后最接近机器的语言......) 为什么在二进制之后它被称为最接近机器的。因为它涉及复杂的内存管理,复杂的指令集到达设备等......