256バイトコード短編映画『Bitwise Liminal』
(killedbyapixel.github.io)- Bitwise Liminalは、256バイトのコードで作られたウェブベースの短編映画で、Lovebyte Party 2024で披露された作品
- 物語は、ガレージセールで見つけた古いVHSテープに「Bitwise Liminal」というラベルが貼られているという設定から始まる
- 再生したテープには静的ノイズしか映らないが、その後、語り手は不穏な夢とテープへの執着に悩まされる
- 調査の末、そのテープがデジタルバックアップであることが判明し、特殊なソフトウェアで復元したデータは256バイトのプログラムだった
- ウェブブラウザでそのプログラムを開くと夢に似た光景が現れ、語り手はもはや眠ることなく、それを見つめ続けるようになる
256バイトコードで作られた短編映画
- Bitwise Liminalは、「A Short Film in 256 Bytes of Code」という副題を持つ短いコードベース作品
- Lovebyte Party 2024で披露された出展作として記載されている
- 古いVHSテープを発見した後、その中に隠されたデータを復元してウェブブラウザで実行するという物語形式を取っている
VHSテープからブラウザへと続く物語
- 語り手はガレージセールで、「Bitwise Liminal」とシャーピーで書かれた古いVHSテープを見つける
- テープを再生すると、画面には静的ノイズしか映らない
- その後、生々しく不穏な夢を見るようになり、その奇妙なVHSテープのことが頭から離れなくなる
- 調査の結果、そのテープがデジタルバックアップであることを知り、特殊なソフトウェアでデータを復元する
- 復元されたデータは256バイトのプログラムで、語り手は震える手でそれをウェブブラウザで開く
- ブラウザで見た光景は語り手が見ていた夢を思い起こさせ、最後はもう眠る必要はなく、ただ見続けている状態で終わる
1件のコメント
Hacker News のコメント
これは印象的で、本物の映画のシーンのように見える。しかもこれが 256バイトに収まっていると考えると、私たちが毎日使っているものがどれほど肥大化しているか、そして今のブラウザがどれほど強力なのかを改めて見せつけられる。
それでも、最近 HN で共有された「the Sheep and the Flower」のような 8K デモ https://news.ycombinator.com/item?id=39121101 や、実際の YouTube 動画 https://www.youtube.com/watch?v=R1NagZN2kjY をリメイクした「One of those days」https://www.pouet.net/prod.php?which=75790 / YouTube 動画 https://youtu.be/8T_Um-cw0Wc のほうがさらに驚きだった。
256バイト映画よりはずっと大きいが、グラフィックと物語をはるかに多く伝えている。
私たちのような普通の人向けに、各部分を分解して説明した注釈付きバージョンはあるのだろうか?
https://github.com/callumlocke/bitwise-liminal-expanded
最近の関連記事: Cross My Heart – A Frogger Demake in 256 Bytes of HTML/JS - https://news.ycombinator.com/item?id=39336677 - 2024年2月、コメント44件
通常、後続投稿は重みを下げるが(https://hn.algolia.com/?dateRange=all&page=0&prefix=true&query=follow-up%20downweight&sort=byDate&type=comment)、今回は (a) 投稿者が作者本人であり、(b) 作品が素晴らしいため、https://news.ycombinator.com/showhn.html の基準に従って Show HN に変更し、そのままにした。
これが「短編映画」なら、私は今しがた自分の新作小説を読んだことになる。
t+=.1をt+=.01に、9986を9e3に変えれば、依然として 256バイト以内で約45秒のループを作れる。ただし画面下部の一部が切れるだろう。些細な点だが、
onloadイベントだけを使うために canvas の中に svg を埋め込むのは初めて見た。この文脈では canvas が bare id で参照されていて、奇妙でもあり格好よくもある。scriptタグを使うよりも、svg onload に入れるほうがほんの少し小さくなるらしい。canvas onclickイベントに入れれば、さらに少し容量を節約できるかもしれない。一般的な 1KB ゲームジャムのように zip、gzip、サフィックス処理までした結果を提出し、アセットは基準から除外する方式ではなく、本当に純粋な256バイトだという点があまりにもすごい。敬意を表する。
もっと小さいサイズには別の選択肢もあるが、256バイトのデモは通常、展開器を入れるには小さすぎる。ただ、アセットを基準から除外する点には同意する。
import gameassetsも許されるのか?ちなみに Python では
import GOTOが動く :)この人の作品にはいつも度肝を抜かれる。使っているツールの説明はこちら: https://frankforce.com/tools/
マイクロアニメーションブログ Dwitter での作品はこちら: https://www.dwitter.net/u/KilledByAPixel
YouTube での説明: https://www.youtube.com/watch?v=HV7Dmo277Rs
こういうものを見ると、生命全体が本当に DNAにエンコードされ得るのだと思えてくる。ヒトゲノムを gzip で圧縮すると約4MBほどだという文章を読んだことがあるが、直感的には人間を表現するには小さすぎるように見えた
しかし256バイトからこうした動きが生まれるなら、私の直感が間違っているのは明らかだ
2^(3.2 * 10^7)個の可能な状態を区別するには十分だ。その状態のうち、ごく一部のごく一部のごく一部のごく一部だけを機能する生命体として解釈できる 解凍器 があるとしよう地球には約1兆種が存在しhttps://www.nsf.gov/news/news_summ.jsp?cntn_id=138446、現在存在していない潜在的な種がその1兆倍あり、各種に1兆通りの変異があると仮定する。そこに余裕を見てさらに1兆を掛けても、Wolfram Alpha 基準https://www.wolframalpha.com/input?i2d=true&i=Divide%5BPower%5B2%2C3.2Power%5B10%2C7%5D%5D%2Ca+trillion+trillion+trillion+trillion%5D++a+percent+of+a+percent+of+a+percent+of+a+percentで、およそ10の1000万乗程度の誤差の余裕が残る
ここでいう「およそ」は、山脈が粗い紙やすりとおおよそ似ている、というような意味だが、あまりに丸められているので丸めずにはいられない、という意味でもある
https://www.nature.com/articles/d41586-024-00327-x
また Mandelbrot 集合をもう一度見れば、かなり単純なプロセスの中にも膨大な情報が含まれている
最後に、この256バイトの印象を少し下げてみるなら、それを支えるハードウェアとソフトウェアが必要だという点も考慮すべきだ。この256バイトが C64 上で同じ幻影を生み出すことはないだろう
これを見たら、私の 5560U のシステムファンが100%まで上がった :-)
この短編映画で何を見ているのか説明してもらえるだろうか?白黒アニメーションで箱が動き、ノイズ混じりの線が見えるのは分かるが、意味がよく分からない
驚くべき点は ファイルサイズ がどれほど小さいかだ。256バイトである
どれほどすごいか説明すると、映画全体が最初のフレームのスクリーンショットより約58倍小さい。1.44MBのフロッピーディスク1枚に、この映画全体を5,000回以上入れてもまだ空きが残る
通常の動画は、複数の画像と、画像のどの部分がどこへ移動するかを示す情報で構成される
しかしこの映画には画像データがない。時間に応じて明るさの異なる箱を描く、少しの数学が入っているだけだ