我已經看過一些節目,它們展示了帶有音軌的令人驚歎的高度詳細的3D場景,但是令我震驚的是它們都小於64kB!這些程序如何工作?64kB的演示,它們是如何工作的?
回答
他們在程序上生成的內容。即它們不添加3D模型,位圖,基於樣本的音頻文件......但是從代碼或一些低細節表示中生成。
通過組合簡單構建基塊和公式,使用自相似性(fractales)和構建複雜數據通常是緊湊表示的關鍵。
音頻可以存儲在不同音符存儲的格式中。
一個簡單的例子,紋理生成結合過濾器,fractales,...谷歌「佩林噪聲」。 Shows how to create very different textures from perlin noise
三維模型可能有一些使用公式的幾何描述,並添加了類似於程序紋理的技術的細節。
而且大多數使用一些運行時解包器。即您的正常可執行文件大於限制,並通過exe打包程序進行壓縮。演示程序通常不使用UPX,而是專門的打包程序,它具有非常小的加載/解包程序,甚至可能會泄漏內存(如果可以保護幾個字節,誰會關心內存泄漏)。
「可能不是」是什麼? – bjb568 2014-12-26 01:39:22
@ bjb568不要問我2011年的時候是怎麼想的。 – CodesInChaos 2014-12-26 10:19:31
我認爲這是打開這個世界的窗口的好鏈接:http://llg.cubic.org/docs/farbrauschDemos/和pouet.net一起 – 2015-01-16 02:25:43
當天他們用匯編語言寫成COMs。甚至有16kb的演示。 我非常喜歡這些演示,這就是爲什麼Assembly是我學到的第一門編程語言。我從來沒有設法創建一個真正的演示,但我能夠創建一個病毒,清除我的硬盤。我沒有源代碼;)
他們是:沒有無用的(原文如此
- 代碼)外部庫(你真的應該知道你需要使它)是什麼,
- 着色器編譯器!壓縮機等
- 功能的3d圖形和2D紋理製造商(但確定性和恆定,但與許多參數有關),
- 程序音頻製造商(每次相同)。
例子(!代碼示例)可以在這裏找到:
http://www.displayhack.org/2012/the-great-demoscene-sourcecode-giveaway/
唐`是愚蠢的傢伙 - 只要使用谷歌!
- 1. 窗鉤 - 它們是如何工作的?
- 2. 什麼是複製的指針,它們是如何工作的?
- 3. 。它是如何工作的?
- 4. 什麼是Windows套件,它們是如何工作的?
- 5. 如何讓vaadin-context-menu演示工作?
- 6. 類的私人Load()方法,它們是如何工作的
- 7. Flowtown和Rapportive之類的網站:它們是如何工作的?
- 8. 谷歌圖片搜索鼠標,它們是如何工作的?
- 9. Backbone嵌套模型...它們是如何工作的?
- 10. Rails 3 + Transactions:它們是如何工作的?
- 11. UrlMappings和Forms - 它們是如何工作的?
- 12. Python異步解析 - 它們是如何工作的?
- 13. C++/CLI預編譯頭文件:它們是如何工作的?
- 14. 混合移動應用程序 - 它們是如何工作的?
- 15. 瞭解cocos2d場景,它們是如何工作的?
- 16. Catmull-Rom樣條線 - 它們是如何工作的?
- 17. Rails - 格式和渲染 - 它們是如何工作的?
- 18. 價格比較網站 - 它們是如何工作的?
- 19. 圖標字體:它們是如何工作的?
- 20. 粘性廣播接收器 - 它們是如何工作的?
- 21. jqGrid的複雜的演示工作不
- 22. 模板如何工作,它們是否總是內聯?
- 23. JRuby&Win32OLE - 它們如何一起工作?
- 24. solaris 10鍵如何讓它們工作
- 25. 啓動演示不工作
- 26. 輪演示不工作
- 27. 工作2.3.3 NFC演示
- 28. Jenkins的種子工作是什麼?它是如何工作的?
- 29. NSString的setter,它是如何工作的?
- 30. CSS - 它是如何工作
演示中包含的其餘文件要大得多。它們包括所有必要的資源。 – 2011-05-21 11:22:29
@Cody Gray沒有其他文件。這全都在一個可執行文件中。查看CodeInChaos的答案。 – 2011-05-21 11:28:49
@Cody我不這麼認爲。通常對於大小有限的演示,可執行文件的大小和所有資源都需要低於限制。您可以使用哪些運行時庫有一些差異,但通常這些已經是操作系統的一部分。 – CodesInChaos 2011-05-21 11:29:26