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

SS1
Pocket

先日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」を使ってビルドします。

後は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

Pocket

コメントを残す

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

(Required)

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