非常に詳細な 3D シーンをサウンドトラックで表示するプログラムをいくつか見たことがありますが、私が驚いたのは、それらがすべて 64kB よりも小さいことです。これらのプログラムはどのように機能しますか?
3 に答える
彼らは手続き的にコンテンツを生成します。つまり、3D モデル、ビットマップ、サンプル ベースのオーディオ ファイルを追加するのではなく、コードまたは低詳細表現から生成します。
自己類似性 (フラクタル) を使用し、単純なビルディング ブロックと数式を組み合わせて複雑なデータを構築することは、通常、コンパクトな表現の鍵となります。
オーディオは、さまざまなノートが保存される midi のような形式で保存できます。
テクスチャは、フィルタ、フラクタルなどを組み合わせて生成されます...単純な例として、「パーリン ノイズ」をグーグルで検索します。パーリン ノイズから非常に異なるテクスチャを作成する方法を示します。
3D モデルには、数式を使用した幾何学的記述が含まれている可能性があり、手続き型テクスチャと同様の手法で詳細が追加されます。
また、ほとんどの場合、ランタイム アンパッカーを使用します。つまり、通常の実行可能ファイルは制限よりも大きく、exe パッカーで圧縮されます。デモは通常 UPX を使用しませんが、非常に小さなローダー/アンパッカーを持ち、メモリ リークさえする可能性がある特殊なパッカーを使用します (数バイトを保護できる場合、メモリ リークを気にする人はいます)。
昔はアセンブリ言語で COM として書かれていました。16kb のデモもありました。私はこれらのデモがとても気に入ったので、Assembly は私が最初に学んだプログラミング言語でした。実際のデモを作成することはできませんでしたが、ハードディスクをクリアするウイルスを作成することはできました。ソースコードがありません;)
彼らです:
- 役に立たない(原文のまま!)外部ライブラリのないコード(それを作成するために何が必要かを本当に知っておく必要があります)、
- シェーダー コンパイラー、コンプレッサーなど
- 機能的な 3D グラフィックスと 2D テクスチャ メーカー (ただし、決定論的で一定ですが、多くのパラメーターに関連しています)、
- 手続き型オーディオ メーカー (毎回同じ)。
例 (コード例!) は次の場所にあります。
http://www.displayhack.org/2012/the-great-demoscene-sourcecode-giveaway/
愚か者であるな - ただグーグルを使ってください!!!