2011-05-21 56 views
13

我已经看过一些节目,它们展示了带有音轨的令人惊叹的高度详细的3D场景,但是令我震惊的是它们都小于64kB!这些程序如何工作?64kB的演示,它们是如何工作的?

enter image description here

+1

演示中包含的其余文件要大得多。它们包括所有必要的资源。 – 2011-05-21 11:22:29

+7

@Cody Gray没有其他文件。这全都在一个可执行文件中。查看CodeInChaos的答案。 – 2011-05-21 11:28:49

+5

@Cody我不这么认为。通常对于大小有限的演示,可执行文件的大小和所有资源都需要低于限制。您可以使用哪些运行时库有一些差异,但通常这些已经是操作系统的一部分。 – CodesInChaos 2011-05-21 11:29:26

回答

17

他们在程序上生成的内容。即它们不添加3D模型,位图,基于样本的音频文件......但是从代码或一些低细节表示中生成。

通过组合简单构建基块和公式,使用自相似性(fractales)和构建复杂数据通常是紧凑表示的关键。

音频可以存储在不同音符存储的格式中。

一个简单的例子,纹理生成结合过滤器,fractales,...谷歌“佩林噪声”。 Shows how to create very different textures from perlin noise

三维模型可能有一些使用公式的几何描述,并添加了类似于程序纹理的技术的细节。


而且大多数使用一些运行时解包器。即您的正常可执行文件大于限制,并通过exe打包程序进行压缩。演示程序通常不使用UPX,而是专门的打包程序,它具有非常小的加载/解包程序,甚至可能会泄漏内存(如果可以保护几个字节,谁会关心内存泄漏)。

+2

“可能不是”是什么? – bjb568 2014-12-26 01:39:22

+0

@ bjb568不要问我2011年的时候是怎么想的。 – CodesInChaos 2014-12-26 10:19:31

+1

我认为这是打开这个世界的窗口的好链接:http://llg.cubic.org/docs/farbrauschDemos/和pouet.net一起 – 2015-01-16 02:25:43

4

当天他们用汇编语言写成COMs。甚至有16kb的演示。 我非常喜欢这些演示,这就是为什么Assembly是我学到的第一门编程语言。我从来没有设法创建一个真正的演示,但我能够创建一个病毒,清除我的硬盘。我没有源代码;)

2

他们是:没有无用的(原文如此

  • 代码)外部库(你真的应该知道你需要使它)是什么,
  • 着色器编译器!压缩机等
  • 功能的3d图形和2D纹理制造商(但确定性和恒定,但与许多参数有关),
  • 程序音频制造商(每次相同)。

例子(!代码示例)可以在这里找到:

http://www.displayhack.org/2012/the-great-demoscene-sourcecode-giveaway/

唐`是愚蠢的家伙 - 只要使用谷歌!