
如果回到20年前,我們很難想象,內存容量可能會以G為單位,存儲容量會以T為單位。即使是現在,我們也無法斷定,計算機不會用到以P為單位的內存容量。
依稀能夠記得,在DOS下編輯系統配置文件時,常常為內存的加載和分配頭疼;進行程序設計時,同樣會為幾K的內存占用而絞盡腦汁。從DOS時代走過來的人,才會理解內存何以如此珍貴。
640K,曾經是基本內存不可逾越的鴻溝。當內存的成本逐漸降低到我們在使用和設計時可以忽略它時,內存的使用機制已經不再受限。然而,曾經的珍貴卻讓眾多程序員形成了節約內存的習慣,在算法上精益求精,以期用最低的內存占用、最小的文件實現最優的效果。3D64K程序就是他們展現給我們的智慧結晶。
時至今日,對于用戶而言,已經無需考慮內存分配,而程序員們卻為此多出了一項智力和才華競爭的內容。將華麗得不可思議的程序,做得極其微小而簡潔,用體積非常小的程序來實現大型程序才有的視覺效果,成為很多程序員的夢想。
比如,64K的3D程序,就是這些夢想的完美展示。
相信很多人都熟悉那個不可思議的3D大片《彗星撞地球》,出色的音效、細膩的3D建筑、炫目的光影效果,讓人很難相信它其實只有64K,但卻包含了1.6G之多的數據量。
需要說明的是,3D64K動畫雖然文件非常小,并不表明它們對內存的占用也是這么小,相反,因為程序算法的精妙,很少的指令要完成復雜的工作,就要依賴于CPU的運算能力以及內存容量的支持。
另外,一些3D64K程序采用了壓縮率極高的算法,將十幾G的動畫容量壓縮到了64K。借助DirectX或OpenGL技術,在幾分鐘甚至幾十分鐘內不重復地演示3D效果和音效。
每年世界各地著名的Warez組織都會推出一個64K的小動畫片來比較和炫耀其編程實力。例如,德國的farbrausch組織,先后推出了fr-01至fr-045等幾十部3D演示作品(Demo Scene)。
Demo Scene通過匯編語言調用DirectX引擎的核心代碼庫來建立對象架構、三維空間位置、運動軌跡及材質信息。程序在運行時由CPU讀出這些信息給DirectX渲染引擎生成三維立體的對象及動畫,同時運用程序紋理技術即時貼圖。這些技術現在也被運用在3D游戲開發中。
fr-08:the product是2000年的經典力作,屢獲殊榮。這個濃縮了11分鐘3D動畫的程序只有64K,并開創了Demo制作的新紀元,打破了以往Demo只注重美學不注重數據優化的格局,向人們展示了挖掘CPU潛能和大規模數據轉存的可能性。
Demo往往要進入一個特殊的X繪圖模式,針對顯卡進行實時編程,這樣才能極大地節省代碼體積。國外作者的一個3D64K美女演示動畫,在結尾字幕中說明了動畫所包含的內容,包括178M多媒體紋理、159M的Wave文件、12條音軌、8.5億波樣等。
theprodukkt小組還發布過一個96K的第一人稱3D射擊游戲kkrieger,更是讓人瞠目結舌。
3D64K程序的實現,不僅是一項技術工作,也是一項藝術創作。算法架構、代碼優化、數據壓縮、3D建模、貼圖描繪、音樂創作……這其中的每一項,都需要高水平的人來完成,不僅需要程序員,還需要藝術家,不僅追求技術的精湛,也追求藝術的完美。而最終作品,用極小的文件體積,展示了長時間夢幻般的聲光影效果,華麗的3D動畫,身臨其境的運動,聲色俱佳,效果震撼。
藝術無止境,技術亦無止境。3D64K,讓我們向這些程序員智慧的奇跡致敬吧!