HN紹介: Pong Wars
(pong-wars.koenvangilst.nl)- Pong Warsは、昼と夜、善と悪の対決をPongのように視覚化したウェブデモ
- 画面には
day 288 | night 288のように day/night の値 が表示され、現在の状態をすぐに確認できる - 実装は JavaScript と一部の HTML/CSS で構成され、1つの
index.htmlに収められている - コードは再利用可能で、ユーザーが自分だけのバージョンを作れると案内している
- ページには Koen van Gilst による制作表記と GitHub ソース へのリンクがある
Pongで表現した昼と夜の対決
- Pong Warsは、「day」と「night」の対決を視覚的に見せるウェブページ
- 現在の状態は
day 288 | night 288形式で表示される
単一ファイル実装と再利用
- 実装は JavaScript と HTML/CSS を使用し、1つの
index.htmlファイルに含まれている - コードは再利用でき、ユーザーが自分だけのバージョンを作れる
- ページには Koen van Gilst による制作表記と GitHub ソースへのリンクがある
1件のコメント
Hacker News のコメント
コードでは、このツイートをアイデアの出典としてリンクしている: https://twitter.com/nicolasdnl/status/1749715070928433161 [nitter: https://nitter.net/nicolasdnl/status/1749715070928433161]
引用文の内容は「終わりなき戦い #genuary23 #genuary #genuary2024。元々のアイデアではなく、以前見たことがあるが、どこで見たのか見つけられない」というもの
ここでは戦いが終わらないと言っているが、これを数学的に証明する方法があるのか気になる
もともとは https://twitter.com/CasualEffects/status/1390290306206216196 を見ていて、作者は pico8 のオリジナルから来たものだと言っていた。それ以前のバージョンには Pong のパドルもあったが、私が BASIC デメイクを作るとき、bbcmicrobot に実行させるためのコードをツイート内に収められなかったので、パドルを削除した
私のバージョンはやや遅くて粗かったが、@rheolism だったと思う人が点を打つ代わりにユーザー定義文字を使って、ずっと速く滑らかなバージョンを投稿し、その後 Processing でデメイクを作り直したものも見た。こういうものは独自の生命力を持つようになる
Twitter アカウントはずいぶん前に削除したが、アーカイブから見つけ出した
だから、片方のボールが極端に閉じ込められた状況は、それほど長く続きにくい
x1 = y1 = y3 = squareSize, x2 = canvas.width - squareSize
squares = Array.from({ length: numSquaresX }, (, i) =>
Array.from({ length: numSquaresY }, (, j) =>
i === 0 && j === 0 ? TEAM1 : TEAM2))
所有する領域が減るほど、併合速度が上がるためだ
こういう類いのものに強く惹かれるのだが、分類して分析するためのジャンル用語があるのかも分からず、「こういう類い」と呼ぶしかない
ゲームアルゴリズムに着想を得ているがゲームではなく、Conway の “Game of Life” も名前の付け方としては誤りと言える。動きはするが、一般的なアニメーションのようにスクリプトされたものでもない
現実世界では David C. Roy のような人が自分の作品をキネティック・スカルプチャーと呼んでいる
アルゴリズム動画?ゲームシミュレーター?自律オートマトン?
短い Wikipedia 記事もある: https://en.wikipedia.org/wiki/Zero-player_game
追記: コードを少し見ると、跳ね返りのダイナミクスに少しランダム性が入っている。なので、疑似乱数生成器のシードを初期条件の一部と見なさない限り、「完全に決定論的」とは言いにくい
時間やルールなどがあり、重要な要素は結果を事前に知ることができないことだ
その最後の要素が、こうしたプログラムを書いて実行することを面白くしている
12歳の息子が Scratch で今作った:
https://scratch.mit.edu/projects/957461584/
本当に素晴らしい
現在は、ボールが所有する領域が小さくなるほど同じ速度で衝突が増えるが、速度を所有しているマスの数やその平方根に比例させると面白そうだ
どちらも最終的には勝てないだろうと思う
いくつものレベルで本当に美しい
美的にはただ座って眺めているだけで楽しく、哲学的には続いていく闘争のデジタルな比喩として興味深い
最後に、そして最も興味深いことに、とても単純で古いアイデアを2つ組み合わせて新しいものを作っている。これをうまくやるのは極めてまれだ
称賛を送る。本当に大きな称賛を
3色だと面白くなりそうだ
残りの2つが1つを隅に追い込むと、狭い空間のためにブロックを素早く奪い返し、敗北寸前からすぐに復活できる
我慢強くない人向けに速度スライダーも入れておいた
https://explorers.toxicode.fr/?remoteWorkspace=pong-war
元作者の Mastodon 投稿もある: https://hachyderm.io/@vnglst/111828811496422610
学習用に C++ と Qt Scene Graph で実装してみた
興味のある人がいるかもしれないので共有する: https://invent.kde.org/carlschwan/warpong/-/blob/master/src/...
似た例: https://contranoid.com/
別の Pong の変種もある。ただしデスクトップ専用: https://www.obfusco.com/pn0gjs/index.html