1 ポイント 投稿者 GN⁺ 2024-05-14 | 1件のコメント | WhatsAppで共有
  • Static Chessは、チェスのすべての画面をHTMLとCSSだけで作り、各手をリンクのクリックで進める静的Webチェスの実験
  • あるプレイヤーが手を指したあと、生成されたリンクを友人に送ると、相手が再びリンクを送り返しながらゲームを続ける
  • アニメーションや滑らかな操作感をそぎ落としたブルータリスト・インターフェースで、チェス盤と手の選択そのものに集中する
  • まだ機能はかなり限定的で、壊れている部分がある可能性があり、実際のプレイには制約が残っている
  • 今後は実際のゲームプレイ対応、長期戦向けのシンプルなインターフェース、静的AIの相手などへの拡張可能性を残している

リンクで進行する静的チェス

  • Static Chess は、「plain, brutalist, no bloat chess」を目標にしたチェスWebサイト
  • 画面はHTMLとCSSだけで構成され、チェスの手はリンクのクリックで実行される
  • ゲームはリンクをやり取りする方式で進む
    • あるプレイヤーが自分の手を指したあと、リンクを友人に送る
    • 友人がそのリンク先で手を指したあと、再びリンクを送って次のターンへ進む
  • アニメーションや滑らかなインタラクションは意図的に排除されている
  • Googleがこのサイトをインデックスした場合、あり得るすべてのチェスの手を計算することになるのか、という問いも投げかけている

現在の制約と拡張アイデア

  • 機能はまだ限定的で、壊れている部分がある可能性がある
  • バグを見つけたら知らせてほしいと呼びかけている
  • あり得るすべての三目並べのゲーム状態を持つサイトに関するHNでの議論から着想を得ている
  • 今後は実際のゲームプレイをサポートするよう拡張する計画
  • 友人と長く続けるゲームのためのシンプルなインターフェースへ発展できる
  • 静的AIを相手に指す機能を追加しても面白いと考えている
  • 欲しい機能があれば、PRで変更を提案できる

1件のコメント

 
GN⁺ 2024-05-14
Hacker News のコメント
  • URL に FEN を付ければ、Chess960(フィッシャーランダム・チェス)やその他の「カスタム開始局面」バリアントもプレイできる。空白はアンダースコアに置き換えればよい
    例: https://chess.maxmcd.com/bbnqrknr/pppppppp/8/8/8/8/PPPPPPPP/...

    • Chess960 は通常のチェスと キャスリングのルール も異なるが、このサイトが FEN だけを見てそのルールを使うべきだと判断できるとは思えない
  • 「純粋で無骨で無駄のないチェス」という最初の段落が、この実装の利点なのか欠点なのかよく分からない
    可能性を探るために風変わりな方法で実装したと売り込むことと、適切な技術で作られたソフトウェアを 肥大化, ばかげたアニメーション, プレイを妨げる滑らかなインタラクションと表現することは別だ
    第2段落では機能が制限されていて壊れているかもしれないと書かれており、この実装の限界がさらに目立つ。もちろん全部風刺で、私が引っかかっただけかもしれない。よくできた賢い実装ではある

    • ユーモラスな説明である可能性が高く、何らかの利点を 非論理的な極端 まで押し進めた感じがする
      機能制限は、それでも肥大化と呼んでいたもの以外の機能を指しているようだ
    • 「できると思ったから」作ったものに近く、少し変わったものを作る理由としては常に十分だと思う
      ステートレスなリンク共有でプレイするというアイデアはかなり気に入っているし、アニメーションやインタラクションの「美しさ」は少なくとも私にはプラスに感じられない
      「正しい技術」は作ろうとしているユーザー体験に大きく左右される。この目標には HTML と CSS が適切な技術であり、より多機能なサイトの UX 目標には別の技術スタックが適しているのと同じだ
    • ゲームで アニメーション を望まないという発想はかなり面白い。冗談なのか、あるいは Web には JavaScript があるべきでないという方向に深く入り込みすぎたのだろう
  • これは厳密には 静的サイト ではないのでは? リクエストのたびにバックエンドが動的にレンダリングしているのだろう
    サーバーのどこかに 999999919291293923 個の事前レンダリング済みページがあるわけではなさそうだ

    • 技術的には、すべての合法チェス局面をカバーするには約 4.8 * 10^44 ページ が必要になる [1]
      しかも、このような完全に不正な局面まで問題なく配信している: https://chess.maxmcd.com/rnbqkbnr/qqqqqqqq/8/8/8/8/QQQQQQQQ/...
      [1] https://github.com/tromp/ChessPositionRanking
    • 静的というのは XmlHttpRequest がないという意味に見える
    • 事前レンダリングされたページは確かにある。ただ、アプリケーション固有の圧縮方式で圧縮されているだけだ
    • バックエンドがレンダリングする必要すらあまりない。pushState を使うシングルページアプリなら、文字通りファイル1つかもしれない
  • 合法手を検出するのは良いが、チェックメイト は分かっていないようだ?
    https://chess.maxmcd.com/r1b1kRnr/p1ppB2p/n2P2p1/8/7P/1p6/PP...
    チェックメイトと表示すべきでは?

    • 駒がもう動かせないのを見ると、チェックメイト自体は検出しているが 表示だけ正しくない ようだ
    • チェックメイトのページに実際に checkmate と書かれていれば、Google ボットがサイト全体をインデックスしたあとでチェックメイトを見つけ出せる
      理想的には、各ページにその状態へ至るすべての過去の盤面状態を要約した文字列が含まれているべきだ。そうすれば現在の盤面状態と checkmate white を一緒に検索して、特定の局面から勝てるあらゆる手順を見つけられる
      Google を究極のチェス予言者にするために残る作業は、見つけた手を相手にそのまま受け入れさせることだけだ
    • アンパッサン も許可していない
  • 駒をまったく動かせないチェスの変種かと期待した

    • 私もそう思った。これまでは似ているがもっと静的なゲームとして Go をやればよい。検索では中国語名の Weiqi や韓国語名の Baduk のほうが見つけやすい
    • リンクをクリックしなければ、実際そうなる
  • 素晴らしい仕事だ。Cloudflare のような CDN の後ろに置いて、キャッシュヒット率がどうなるか見てみたい

    • Lichess のオープニングエクスプローラーが キャッシュヒット率 の推移をかなり正確に示す指標になりそうだ
      https://lichess.org/analysis#explorer
      Masters データベースとはかなり異なり、Lichess データベースのほうに近いだろう。たとえば Masters では e4 に c5 で応じる割合が 46% だが、Lichess では c5 は 19% にとどまる
  • https://chess.maxmcd.com/rnbqk3/pppp2pB/2P1p3/1P1P2Bp/3n4/b2...
    とてもクールで、最後まで進めて チェックメイト まで作ってみた

    • URL が盤面状態ではなく 指し手の連鎖 だけを保持するといいかもしれない。そうすれば指し手の連鎖を URL に貼り付けるだけで盤面状態を再現できる
  • 以前、私も静的チェスページを作ったことがあり、友人と対戦できるように WebRTC で P2P 接続を付けた

    • Try it
    • Fork it
    • ときどき、ゲームがプレイヤーの代わりに自動で指してしまう奇妙なバグを見る。特に片方のクイーンが駒を取り、相手のクイーンがそのクイーンを取れる状況だと、ゲームが自動的に クイーンがクイーンを取る手 を指してしまうようだ
    • 効果音が本当に良い。特に チェック の音が良い
  • ポーンの昇格が クイーン に固定されている。他の昇格もサポートしてほしい: https://www.chess.com/forum/view/game-showcase/checkmate-by-...

  • とても良い。FEN に加えて 指し手の記録 もあるといいし、おそらくフラグメントに入れられるだろう
    例: https://chess.maxmcd.com/rnbqkbnr/ppp1pppp/8/3p4/3P1B2/8/PPP...