これを64 KBに収めるにはどうすればよいですか?


45

だから、私は2011年のアセンブリでここにいて、このデモが再生されました:http : //www.youtube.com/watch?v= 69Xjc7eklxE& feature=player_embedded

これは単一のファイルのみであり、ルールに記載されています。繰り返しますが、どのようにしてこれを非常に小さなファイルに収めましたか?


このデモをダウンロードできますか?ローカルで実行したときの動作を確認したいと思います。
デビッド

1
はい、あなたはここでそのデモを見つけることができます:ftp.untergrund.net/users/atzAdmin/fltatz_uncovering_static.zip
Samuli Lehtonen

もちろん、これがないと単一のポリゴンを描画できないシステムライブラリ数メガバイトあります
...-hobbs

2
64kBのイントロを積極的に作成する人として、次の記事を執筆しました:ctrl-alt-test.fr/?p=494(デモシーンの制作はどのように小さいのですか?)TL; DR:手続き生成、圧縮、および多くの追加作業。
ローラン

1
@TeamUpvoteいいえ、すべてC ++です。12kB未満にするには、標準ライブラリを削除する必要があります。Visual C ++を使用している場合、github.com / laurentlb / Ctrl-Alt-Test / tree / master / Fおよびiquilezles.org/code/framework64k/framework64k.htmに例を見つけることができます。
ローラン

回答:


39

それはだ、手続きに基づきます。コンテンツはexeには含まれず、描画方法のルールのみが含まれます。起動すると、プログラムは実行時に必要なものを描画しますが、どの形式でも事前にレンダリングまたは保存されていません。

これは、エリートがスターシステムなどの広大な宇宙を作成するために使用するのと同じ方法です。

手続き型生成を使用して今日可能であることは非常に驚くべきことであり、ゲームは今後この機能をさらに多く搭載するでしょう。


テクスチャがかなり正確だと思った。それで、彼らはそれをコードで描画し、テクスチャファイルなしで描画しますか?
サムリレートネン

1
はい、そうです。
ゲイリーウィロビー

1
これらの種類のデモでは、サウンドもコードから生成されます(サンプルはありません)。すべてがその場で合成された...そして、もちろん、いくつかのクレジットやフェードシーンが:)重い事前計算を許可している
カロリー・ホーバス

2
元の3Dアーティストとして、私は長い間、主流の3Dアートプログラムに標準ツールセットとしてプロシージャル生成テクスチャを含めたいと考えていました。おそらく最も近いのは、組み込みのスクリプト言語を使用することです
。...-ダークナイト

Project FrontierProcedural Worldのようなものに興味があるかもしれません。これらは手続き型生成による同じ問題への2つのアプローチです。
-Kyte

10

@Gary Willoughbyが言うように、それは広範囲にわたる手続きです。

また、asm選択システムのウィンドウ/プラットフォームの数が内部で機能することに関する広範な知識とともに、重要なハンドコーディングが含まれます。

コンパクトなコードのさらに極端な例をご覧になりたい場合は、4Kデモカテゴリもあります。

DemoSceneグループの中には、デモをオンラインでリリースするものがあり、必要に応じてダウンロードして再生できます。

陰謀
ファルブラウシュ

DemoSceneの歴史については、Wikipediaも参照してください。

注-デモの多くは、アンチウイルスを驚かせます。基本的に、ほとんどすべてのデモがパックされた.exeファイルを使用しているようで、デモグループのほとんどは独自のパッカーを展開しています。残念ながら、多くのAV企業は不自由なので、パックされたバイナリ実行可能ファイルは何らかのウイルスであると一般に主張しています。


1
でも、おそらく非ラメ...であるとして、あなたが考えているものをAV会社私は思ったままにしています
ジェリーの棺

+1素晴らしいもの。Nvidea APIを使用していますか、それともグラフィックカードに直接描画しますか?

1
彼らは通常、最小限のOpenGLフレームワークをセットアップし、残りの作業を行うためにいくつかのシェーダーを開始します
ジャスパーベッカーズ

3
本当に印象的なものです。私が15歳ほど若かったら、これが私の暇な時間に費やすだろうと思います。

ここではいくつかのアセンブリ2011のデモは、以下のとおりです。archive.assembly.org/2011
サムリ・Lehtonenの

4

誰もが手続き型生成コードに広く依存していると言っているように、特にこのデモにはさらに多くのことがあります。一時停止して詳細を見ると、たとえばそれらの壁を見てみましょうレンガ見て、光がどのように反射するかを見てください。彼らは自然に見える。

生成されたコンテンツに命を吹き込むために、多くの頂点シェーダーとフラグメントシェーダーを使用しているためです。

それらがどのようにしてそのようなものを作るのかを理解しようといくつかの時間を費やし、それらのデモから取得したすべてのコードに驚きを感じました。

ところで、これらのデモを行うとき、圧縮ツールを使用してさらに圧縮することもできます。このコンパイルプロセスを確認します。

all:
nasm -f bin -o intro main.asm
nasm -f bin -o stub stub.asm
gzip -n --best intro
advdef -z -4 intro.gz
cat stub intro.gz > intro
chmod +x intro
rm intro.gz
rm stub

3

あるPowerPointプレゼンテーションレンダリングは、この特定のデモで行われたかのは。これだけでは、すべてが64キロバイトに収まる方法を説明していませんが、このような小さなスペースでジオメトリを作成する方法の鍵となります。

彼のブログには、彼の他のデモシーン制作についての興味深い記事もたくさんあります。


1

他の人がすでに述べたように、これの多くは手続き的に生成された資産に依存しています。

別の要素があります。それは圧縮です。4kおよび64kデモでは、高度に専門化された実行可能コンプレッサーを使用します。これらの中で最も有名なのは、farbrauschによるクルンチー(64ksの場合)およびTBC&Looniesによるクリンクラー(4ksの場合)です。さらに、最新のデモではシェーダーを多用しています。シェーダーはプレーンテキストであるため、圧縮後に劇的に小さくなります。

さて、ビデオゲームへの統合に関する限り、主な問題はこれにはすべて時間がかかることです。手続き型コンテンツの生成には時間がかかり、実行可能ファイルの抽出には膨大な時間がかかります。そして、一般的に人々はゲームの読み込みを待つ時間よりもハードドライブに多くのスペースを持っているので、すぐに広く利用可能なゲームでこの多くが見られるとは思いません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.