1P by GN⁺ | ★ favorite | 댓글 1개
  • Static Chess는 체스의 모든 화면을 HTML과 CSS만으로 만들고, 각 수를 링크 클릭으로 두는 정적 웹 체스 실험임
  • 한 플레이어가 수를 둔 뒤 생성된 링크를 친구에게 보내면, 상대가 다시 링크를 보내며 게임을 이어감
  • 애니메이션과 매끄러운 상호작용을 덜어낸 브루탈리스트 인터페이스로, 체스판과 수 선택 자체에 집중함
  • 아직 기능이 상당히 제한적이고 깨진 부분이 있을 수 있어, 실제 플레이에는 제약이 남아 있음
  • 앞으로 실제 게임플레이 지원, 장기전용 단순 인터페이스, 정적 AI 상대 같은 확장 가능성을 열어둠

링크로 진행되는 정적 체스

  • Static Chess는 “plain, brutalist, no bloat chess”를 목표로 한 체스 웹사이트임
  • 화면은 HTML과 CSS만으로 구성되고, 체스 수는 링크 클릭으로 실행됨
  • 게임은 링크를 주고받는 방식으로 이어짐
    • 한 플레이어가 자신의 수를 둔 뒤 링크를 친구에게 보냄
    • 친구가 그 링크에서 수를 둔 뒤 다시 링크를 보내며 다음 턴으로 넘어감
  • 애니메이션이나 매끄러운 인터랙션은 의도적으로 배제됨
  • Google이 사이트를 색인하면 가능한 모든 체스 수를 계산하게 될지에 대한 질문도 남김

현재 한계와 확장 아이디어

  • 기능은 아직 제한적이며, 깨진 부분이 있을 수 있음
  • 버그를 발견하면 알려 달라고 요청함
  • 가능한 모든 틱택토 게임 상태를 가진 사이트에 대한 HN 논의에서 영감을 받음
  • 앞으로 실제 게임플레이를 지원하도록 확장할 계획임
  • 친구와 오래 진행하는 게임을 위한 단순한 인터페이스로 발전할 수 있음
  • 정적 AI를 상대로 두는 기능도 추가하면 재미있을 수 있다고 봄
  • 원하는 기능이 있으면 PR로 변경을 제안할 수 있음

댓글과 토론

Hacker News 의견들
  • URL에 FEN을 붙이면 Chess960(Fischer Random Chess)이나 다른 “사용자 지정 시작 위치” 변형도 둘 수 있음. 공백은 밑줄로 바꾸면 됨
    예: https://chess.maxmcd.com/bbnqrknr/pppppppp/8/8/8/8/PPPPPPPP/...

    • Chess960은 일반 체스와 캐슬링 규칙도 다른데, 사이트가 FEN만 보고 그 규칙을 써야 한다는 걸 알 수는 없을 듯함
  • “순수하고 투박하며 군더더기 없는 체스”라는 첫 문단이 이런 구현의 장점인지 단점인지 잘 모르겠음
    가능성을 탐구하려고 특이한 방식으로 구현했다고 홍보하는 것과, 적절한 기술로 만든 소프트웨어를 비대함, 우스운 애니메이션, 플레이를 방해하는 매끄러운 상호작용이라고 묘사하는 건 다름
    두 번째 문단에서 기능이 제한적이고 깨졌을 수 있다고 하니 이런 구현의 한계가 더 드러남. 물론 전부 풍자였고 내가 낚인 것일 수도 있음. 잘 만든 영리한 구현이긴 함

    • 유머러스한 설명일 가능성이 커 보이고, 어떤 장점을 비논리적인 극단까지 밀어붙인 느낌임
      기능 제한은 그래도 비대함이라고 부른 것들 말고 다른 기능을 가리키는 듯함
    • “이게 가능하다는 생각이 들어서” 만든 것에 가까워 보이고, 약간 특이한 걸 만드는 이유로는 항상 괜찮다고 봄
      상태 없는 링크 전달로 플레이한다는 아이디어는 꽤 마음에 들고, 애니메이션과 상호작용의 “예쁨”이 적어도 내게는 순이익처럼 느껴지지 않음
      “올바른 기술”은 만들려는 사용자 경험에 크게 좌우됨. 이 목표에는 HTML과 CSS가 맞는 기술이었고, 기능이 더 많은 사이트의 UX 목표에는 다른 기술 묶음이 맞는 것과 같음
    • 게임에서 애니메이션을 원하지 않는다는 생각은 꽤 웃김. 농담이거나, 웹에는 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를 쓰는 단일 페이지 앱이면 문자 그대로 파일 하나일 수도 있음
  • 합법 수를 감지하는 건 좋은데, 체크메이트는 모르는 듯함?
    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...