わずか4000バイト(4000文字)で作られた3分35秒の映像プログラム

すごいとしか言い用がない。無性に紹介したくなった。
既に多くの方が知っている事は、なるべく紹介しないというのがスタンスなんだけども、今回ばかりはただただ紹介したい。
『プログラミング大会』というよりもMega Demo Partyだったらしいけど、そもそもメガデモを説明するのが面倒なのでプログラミング大会としておきましょう。
わずか4キロバイトのプログラムで作成された音と映像がYouTubeでアップされ、話題を読んでいる。動画が以下です。
音と映像全て合わせて4キロバイト
YouTube - Elevated by RGBA and TBC

いやすごい。
正直鳥肌たった。いや泣いた。
4キロバイトは、4000バイト。(1キロバイト1024と計算する場合もある)
単位が良くわかんないよって人もいるかもしれませんが、全角で『あ』とうてば2バイト。半角なら1バイト。
デジカメで小さめに写真撮ったら100,000バイト。
映像や音楽はもっと高くなるわけで、それをプログラムで上のような映像を作り上げ、より軽い物になるように色々コードを改良するわけです。
とりあえず筆者。大会自体詳しくわかってはいないのでアレですが、もしもこの集まりがメガデモパーティならば、半角英数字1文字が1バイトなので、たった、4000文字で、上の映像と音を作ったということになります。
コードをループさせたり進めたり、同じ部分でもいろんなところで使ったりするわけですが、まぁ、、、いいや。
ちなみに古くからメガデモは色々とありますが、2007年に登場した177キロバイトの映像が衝撃的だったのを覚えている。
興味のある人は以下。
YouTube - FR-041: Debris by Farbrausch

こういうメガデモを見るといつも思い出すのはテトリスとスーパーマリオ。
ファミコンで発売されたスーパーマリオが実はたった40キロバイトで出来ていたと始めて聞いたときには衝撃的だったし、2chでテトリスのコードを短くするための熱いスレで誕生した565バイトのテトリスコードも衝撃的だった。
これをメモ帳とかに貼り付ければテトリスが開始される。<body onKeyDown=K=event.keyCode><script>X=[Z=[B=A=12]];h=e=K=t=P=0;function Y() {C=[d=K-38];c=0;for(i=4;i--*K;K-13?c+=!Z[h+p+d]:c-=!Z[h+(C[i]=p*A-Math.round(p/ A)*145)])p=B[i];!t|c+4?c-4?0:h+=d:B=C;for(f=K=i=0;i<4;f+=Z[A+p])X[p=h+B[i++]]=1 if(e=!e){if(f|B){for(l=228;i--;)Z[h+B[i]]=k=1;for(B=[[-7,-20,6,17,-9,3,6][t=++t %7]-4,0,1,t-6?-A:-1];l--;h=5)if(l%A)l-=l%A*!Z[l];else for(P+=k++,j=l+=A;--j>A;) Z[j]=Z[j-A]}h+=A}for(i=S="";i<240;X[i]=Z[i]|=++i%A<2|i>228)i%A?0:S+="<br>",S+=X [i]?"■":"_";document.body.innerHTML=S+P;Z[5]||setTimeout(Y,99-P)}Y()</script>
当時のスレ
とりあえずあまりにも感動したので記事に。それだけです。
優勝作品以外にも4k部門では色々あったりする。
Sult by Loonies(mp4ビデオダウンロード可能)
Lightshaft by Elude(mp4ビデオダウンロード可能)
複合demo
YouTube - kkapture: ASD - Rupture (The Gathering 2009) [HD]
一番上で紹介した動画の実行ファイルはこちら。
elevated by Rgba & TBC
4kバイトだからといって、ダウンロードは軽いけど、実行するのが軽いわけではない。
そこに書かれているさまざまなコードがCPUをガンガン使いながら映像と音を作り上げていくため、起動には、それなりに時間はかかりますのでご注意ください。
それでは、また。
おまけ
どうしてプログラマに・・・プログラムが書けないのか?
古い話ですがプログラマへの第一歩として。
今回の動画のネタ元
ドイツのプログラミング大会の優勝作品