永遠の闘争で世界が真っ黒に!?謎のバグが話題に
引用元:https://news.ycombinator.com/item?id=45086020
オリジナルサイトのGitHubリポジトリだよ: https://github.com/yoavg/yoavg.github.io/tree/main/eternal
みんなが欲しがってたから、Hacker Newsでカルマ稼ぎのために速攻でスピードコントロールスライダーをvibeフォークしたよ!
デモ: https://francisduvivier.github.io/eternal-struggle-with-spee…
コード: https://github.com/francisduvivier/eternal-struggle-with-spe…
みんなを驚かせたくないけど、これを実行したら、結局黒いボールが闇落ちして、画面全体が真っ黒になったよ。I’m sureこれがより大きな宇宙にとって何かを意味するわけじゃないけどね。
このvibeコーディングされた実装はバグってるよ。64.00倍にすると、もうスピードを戻せないんだ。
Well、それはV2で修正されたよ、もっとvibeコーディングされてるんだ!
https://francisduvivier.github.io/eternal-struggle-with-spee…
オリジナルサイトでもこれ起こったよ。I think白いボールと黒いボールがボーダーのまったく同じ場所で衝突したときに起こるんじゃないかな。
A little matter-antimatter asymmetryなんて誰も傷つけないよ
> スピードコントロールスライダーをvibeフォークした
Very on brandだね、ちゃんと動かないよ。スピードは上げられるけど、戻せないんだ。
I think壁を構成する点が十分にごちゃ混ぜになったときに起こるtunneling bugだと思うよ。僕が追加したV2[1]では、ほとんど起こらなくなったね。このバージョンだと、これらの点も見えるんだ。
[1] https://francisduvivier.github.io/eternal-struggle-with-spee…
At fast speed、円のtrailが見えるんだけど、What gives?
ほら見て、このネットのおもちゃが非対称性がどうやって発生したかを示してるんだよ。すぐに物理学の論文が出そうだな。
白色が曲線の下の領域として、正規分布曲線に収束するように見えるね。
次のレベルはカスタムシェイプ、カスタム開始エリア、もっと色、物理法則の変更(重力追加とか?)、それにユーザーが干渉できる機能(困ってるボールを助けるとかね)だと思うな。
誰かこれを超AIスーパーデュパー思考マックスエディションに入れて、MCPを振りかけて何が起きるか見てみろよ(笑)。
ここで言う白黒は善悪を意味しないよ。ただの対立とか、物事の異なる側面ってこと。Wikipediaがすごくうまく説明してると思うな: https://en.wikipedia.org/wiki/Yin_and_yang
うん、そうだね:D。なんかこれ、gpt-5 miniのせいだ!って言いたくなっちゃう。ひどいコーディングの悪いところの一つだけど、すぐに所有感と責任感が薄れるんだよね。自分が作ったって感じじゃなくて、ただ管理しただけ、みたいな。
正直言うと、このバグは気づいてたんだけど、v2がもう作業中で、そっちではこの問題がすでに修正されてたから、とにかくリリースしちゃったんだ。
>このVibe-codedな実装はバグだらけだ。
それがVibe-codedコードの主な特徴じゃないの?
”俺は…鉄雄だ。”
俺も同じ経験をして、全く予想外の深い実存的な不安に襲われたよ。今から土を触りに行くわ。
闇の中からマックスウェルの悪魔がのぞいてるぞ。
アメリカ政治のメタファーだな。
https://en.wiktionary.org/wiki/%E9%99%B0#Traditional_Chinese (陰) にはたくさんの意味があるんだね。雲行きが怪しい、隠れてる、電気のマイナス、月、影、山の北側とか川の南側とか。裏側とか、冥界とか幽霊とか、陰陽の“陰”の概念、凹版印刷、悪賢い、ごまかす、罠にはめる、開音節、前髪、性器、名字とかね。名字が“陰”の人を知ってるんだけど、中国の人に会うとよくびっくりされるんだって。英語で“Death”って名字みたいな感じかな。だから、この文脈の「真っ黒」は、やっぱり世間一般では「悪い」って意味に捉えられがちだよね。道教や仏教は、生と死、創造と破壊は善悪じゃなくて、ただ大きな全体の一部だと考えるけど、ほとんどの人は暗闇、死、破壊、曇り、憂鬱、影、幽霊、裏切り、罠なんかを避けたいって思うもんだよ。道教は、その試みが愚かだって教えてるんだね。もちろん、すべての意味が不人気なわけじゃないよ。多くの人は性器や月、凹版印刷は好きだし、暑い日は川の陰側の方が気持ちいいこともあるからね。
100倍速で見てみたら超クールだよ。境界線がグニャグニャ動くのを見れるんだ(この速さだとボールを描く必要すらないかもね)。
逆の現象、つまり全体が真っ白になることもあるよ。
コンウェイのゲーム・オブ・ライフに急速に近づいてるね。
すごいね。まだバグがあるみたい。ボールサイズと速度を上げたら、全体が10秒で真っ黒か真っ白になっちゃったよ。
トンネリング。
うん、32倍速にしちゃうと1倍速には戻せないんだよね。(16倍速以下なら戻せるけど)。
これ、すごくバグだらけだよね。vibe codingの面白いデータポイントにはなるけど、簡単な問題じゃないのにエージェントを投入するのは心配になるな!
逆のパターンはないの?
「スコアボード」機能追加のリクエストなんだけどさ、衝突ごとに円の白と黒の割合を表示してほしいな。これあったら絶対面白いよ!
もっとコメントを表示(1)
ありがとう!時間が経つとどんな形になるか知りたかったんだ。100回試してみたらさ、白い部分が黒に挟み撃ちされちゃって、最終的に全部黒になっちゃったよ。これってどう解釈すればいいんだろ(笑)。
これの面白い点は、自己均衡型ってことだよ。もしランダムでどっちかの領域が大きくなっちゃっても、広い方のボールは跳ねるスペースが増えるから、ぶつかる頻度が減って成長が遅くなるんだ。逆に狭い方のボールは頻繁に跳ねて、元の状態に戻そうとするんだよ。
50対50じゃなくても、安定している(っぽい)平衡状態があるんだって。例えば、ある色が別の色をドーナツみたいに囲んでる形とかがそうだよ。
そうそう、実際にバランスを取ってるのは面積じゃなくてさ、黒と白の境界線にぶつかるまでの平均時間なんだよね。
ボールの動きに対して、衝突の影響がかなり大きい場合は、それって安定した平衡状態じゃないんだよね。内側の円が内円の両側に乱れを起こすんだけど、外側のボールはそれを打ち消すために、もっと長い距離を移動しなきゃいけないからさ。
さて、50対50で安定している(っぽい)平衡状態ってあるのかな?半円に分かれるのが平衡に見えるけど、ちょっとしたランダムな運で「蹄鉄」パターンになっちゃうから、違う気がするんだ。(もちろん、シミュレーションがランダム化されてるって前提だけど、リンク先のやつはそうじゃないっぽいね。)
これって物理学と似てる部分があるみたいだね。圧力が同じ二つの部屋が膜で仕切られてる感じ。でも変なのは、それぞれの部屋に分子がたった一つしかないってことかな。
すべてのモデルは間違ってるんだよね…。
…でも、中には役に立つものもあるよね。
バックグラウンドタブで1時間動かしてるけど、ずっと陰陽の見た目を保ってて、これだけ安定してるのはすごいね。
タブがフォーカスされてないと、あのボールは止まっちゃうと思うよ。
うん、絶対にフォアグラウンドで動かしてみて。俺のは3時間くらいで完全に真っ黒になったよ。
俺もだよ。黒はいつも勝つんかな?もしそうなら、なんでだろう?
黒い円のトンネリングプロジェクトを応援してたんだけど、両方とも高速スパイラルに巻き込まれて、黒い方が向こう側にグリッチで抜けたよ。
https://imgur.com/a/dhCSNmi
君が応援してた’トンネリング’の種類を、多分それ誤解してると思うよ。
闇が世界を覆った!
まったく同じバグに遭遇したよ!そんなに珍しくないと思うな。
1時間見てたら、ある時点で黒い球が黒い側に境界を越えて、最終的に円全体が黒くなったよ。
闇落ちしちゃったね。
サタンの到来が予言されたぞ!
ソースコードはここだよ: https://github.com/yoavg/yoavg.github.io/tree/main/eternal
そのリンクは記事の冒頭にも載せておくよ。ありがとう!
素晴らしいアート作品だね!少なくとも僕にとっては、陰陽の意味を本当によく捉えてるよ。
50倍速で60秒間動かしたら、こんな蹄鉄型になったよ: https://imgur.com/a/b6b2IDx
うん、同じだね。もし片方が一箇所を突き破ると、その穴が跳ね返りの角度を決めて自己を強化し、もう片方がその穴の周りを埋めていくんだ。
ソースコードをざっと見た感じだと、マウスを動かしたときに始まるはずだね。
でもスマホだと背景を変えないと何も起こらないみたいで、何も動かないシンボルを1分間もじっと見つめてたよ(笑)
陰陽をタップするとゲームが始まるよ。
うーん、iOS Safariでは動かないみたい。
’p’キーを押すと曲線のポイントを表示できるよ。function keyPressed() {<br> if (key === ’p’) SHOW_POINTS = !SHOW_POINTS;<br>}
ってコードが動くんだ。
これを見て、ある時点で終わるこのゲームを思い出したよ。https://ask5.github.io/gold-wars/
もっとコメントを表示(2)
昔、この原理でゲームを作ったことがあるんだ。2人プレイで左右に曲がったり、推進したり、発射したりするんだ。自分のスペースしか存在できなくて、壁を撃つと自分の色の穴が掘れる。マップには家に帰ろうとする生物がいて、相手の邪魔をしながら道を作ってあげるゲームだったよ。
すごくシンプルなのに奥深い!「永遠」って名前の通り、この形が無限に陰陽曲線に固執する数学的な証明って誰かしてくれないかな?常にこうなるのか、それともカオスになって陰陽曲線が崩れる初期の跳ね方もあるのかな?俺にはそこまで明白じゃないんだよね。
みんな陰陽の形を維持しないって言ってるけど、俺は64倍速でしばらく見てたけど、陰陽の形に繰り返し戻ってるよ。俺は双曲トポロジーの学位を持つバカじゃないけど、直感的に何が起こってるか分かるんだ。片方のボールが大きな凹みを作ると、その凹みが円形の端からの跳ね返りを集中させて、さらに凹みを強化する。これが一方のボールが馬蹄形の中を、もう一方がトンネルの中を跳ね回る半安定な形になるんだ。でも、もし馬蹄形の一方が十分に狭くなるとボールが入りにくくなって、その部分が消滅して陰陽になるんだ。もっと簡単に言うと、丸い縁がトンネリングを促して、その非対称性が陰陽っぽく見せるみたいだね。
いや、そうはならないよ。普通に開いておくと、数分でランダムな曲線になっちゃう。片方の半分が小さくなるとボールが速く跳ねるから、だいたい半分白、半分黒は維持されるけど、形と向きはランダムに変わるんだ。
うわ、陰陽図ですらエントロピーとか宇宙の熱的死からは逃れられないのか。
パッと思いつくのは、張力の仕組みがないってことかな。だから時間とともに白黒が均等なランダムな曲線に近づいていくんだと思う。あと、ポイント再割り当て関数が一種のローパスフィルターとして機能して、正弦波みたいな形になるのかな?
これってただの偶然だと思うな。シミュレーションはしてないけど、YYカーブはシンプルな50-50の分割と安定性は変わらない気がする。長い時間で見ると、エントロピーのせいでYYカーブは真っ直ぐになるんじゃないかな。
そうはならないよ。ボールが一つ突き破るまでは、ラバランプみたいに見えるね。スピードを編集するコンソールコマンドがあるって、他のコメントで言ってたよ。
それぞれの円は、相手を押し出すんじゃなくて、自分の色を引き込むべきじゃない?今だと反対の色を広げてるみたいに見えるけど、普通は自分を応援すると思うんだけどな。
ボールが当たってないのに、時々’境目’がちょっと動くのを見るよ。境目の点の数が固定されてて、点をなくすために再計算してるのかな?
いいね!でも、もっと物理演算を良くしたらメリットがあるだろうな。特に高速で動く時に、時間的に位置をスーパーサンプリングするとか。例えば、それぞれのボールが完全に端まで押せないんだ。
長時間実行したらどうなるかすごく気になるけど、スマホでずっと開いとくのは無理だわw。でも clever なアイデアだね!
5分後のサンプルはここだよ。
https://d6f9e5179057.s3.us-west-2.amazonaws.com/Screenshot%2…
数分間 240 FPS で実行した結果がこれだよ。
https://i.imgur.com/cf1wOwL.png
ありがとう、面白いね!
S3 エンドポイントを公開で使うのが気になるな。誰かに URL を連続で叩かれて、クレジットがなくなっちゃう心配はないの?
devtools のコンソールでこれを実行できるよ。
data.whiteBall.v.x = 5;
data.whiteBall.v.y = 5;
data.blackBall.v.y = 5;
data.blackBall.v.x = 5;
すごい!イカロス、速すぎるとワイルドになっちゃってサイトがフリーズし始めたよw。
data.whiteBall.v.x = data.whiteBall.v.y = data.blackBall.v.y = data.blackBall.v.x = 10;
frameRate() を 120 以上にすると少し速くなるよ。でも、どうやら限界があるみたい。p5 は詳しくないんだけどね。