2011-05-21 58 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/

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