[メガデモ]VisualStudio2013で4kbのexeを作る

SS1

先日2月21日(土)、2月22日(日)に、日本で唯一のデモパーティーであるTokyo Demo Fest 2015が開催されました。

大学の卒業制作展などが重なってしまって行けなかったのですが、次こそは参加したい…!という事で、とりあえず4kb introの作り方を調べてみました。

Tokyo Demo Fest 2015 – 日本で唯一のデモパーティ

 

4kb introというのは、4kb(たった英字4096文字分の大きさ!)で音楽も含めた映像作品です。

沢山の謎技術、ハードウェアに関する知識が使われているイメージがありますが、やり方さえ分かればそこまで難しくないと思います。

 

▼ Tokyo Demo Fest 2015にて公開されたyosshin様の4kb intro「Optical Circuit」

 

仕組み

既定のライブラリをリンクせず、「Crinkler」というリンカーを使ってビルドします。

「Crinkler」は、突っ込むだけで信じられないほど容量を削減してくれる魔法のツールです。

後はloopをgotoに置き換えたり、関数をinlineやマクロに置き換えたりといった地味な最適化をしていきます。

基本的にコードの読みやすさとexeのサイズはトレードオフなので、適度なラインを見極めてコードを書いていきましょう。

 

 設定方法(Visual Studio 2013)

まず、いつも通りWindowsアプリケーション、空のプロジェクトで、プロジェクトの新規作成を行います。

SS1

 

次に、プロパティを開き、以下の設定を行います。

[すべての構成]

”構成プロパティ > 全般 > 文字セット” を 「マルチバイト文字セットを使用する」に変更
”構成プロパティ > VC++ディレクトリ >  実行可能ファイルディレクトリ” に 「$(SolutionDir)」を追加
”構成プロパティ > C/C++>全般 > 追加のインクルードディレクトリ” に「$(ProjectDir)」を追加
”構成プロパティ > リンカー > 入力 > すべての既定のライブラリの無視” を「はい (/NODEFAULTLIB)」に変更
”構成プロパティ > リンカー > 入力 > 追加の依存ファイル” に「opengl32.lib」を追加

[Debug]

“構成プロパティ>C/C++>コード生成>基本ランタイムチェック” を「既定」に変更

[Release]

”リンカー>コマンドライン>追加のオプション” に「/CRINKLER」を追加
”構成プロパティ>全般>プログラム全体の最適化” を「プログラム全体の最適化なし」に変更

 

次に、Crinklerをダウンロード、「crinkler.exe」を「link.exe」にリネームしてソリューションディレクトリに保存します。
The Crinkler executable file compressor

また、glext.hをダウンロード、ソリューションディレクトリ内にglフォルダを作り、そこに突っ込みます。
glext.h

SS1
あとは適当にコードを書いて出来上がり。
前回の記事で制作したシェーダーを元ネタにしています。
GLSL Sandboxで遊ぼう | Puzzle & Programing

実行結果

SS1

ビルドして実行してみると、無事画面が表示されました。

 

サイズを確認してみると、1,352バイトでした!まだまだ詰め込んでいけそうです。

SS1


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

(Required)

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Proudly powered by WordPress   Premium Style Theme by www.gopiplus.com