TECH 으로 돌아가기
TECH HACKER NEWS 오늘 7분 읽기 26 READS

체스판에 기린과 낙타가? 14세기 ‘티무르 체스’를 웹으로 되살린 프로젝트

체스판 위에 기린이 있다고요?

우리가 아는 체스는 8×8 판에 킹, 퀸, 룩, 비숍, 나이트, 폰이 전부죠. 그런데 역사를 거슬러 올라가면 체스는 지역과 시대마다 정말 다양한 모습이었어요. 이번에 소개할 건 14세기 중앙아시아를 호령한 정복자 티무르(타메를란)가 즐겼다고 전해지는 '티무르 체스(Tamerlane chess)'를 브라우저에서 플레이할 수 있게 만든 웹사이트예요. 600년 전 게임을 코드로 되살렸다는 점에서, 개발자 입장에서도 흥미로운 이야깃거리가 많아요.

티무르 체스는 어떤 게임이냐면

전해지는 규칙에 따르면(문헌마다 해석이 조금씩 달라요) 판은 11×10 크기이고, 양쪽에 '성채(citadel)'라는 특수 칸이 하나씩 튀어나와 있어요. 기물 종류도 훨씬 많아요.

제일 재밌는 건 폰이에요. 폰마다 '어떤 기물의 폰'인지가 정해져 있어서 끝까지 가면 원칙적으로 그 기물로 승격해요. '폰의 폰'이라는 특이한 폰은 승격 규칙이 몇 단계로 꼬여 있기도 하고요. 킹이 상대 성채에 들어가면 무승부가 된다는 독특한 규칙도 있어요.

개발자 눈으로 보면: 이걸 어떻게 구현할까

이런 변형 체스('페어리 체스'라고도 불러요)를 구현하는 건 생각보다 까다로워요. 몇 가지 포인트를 짚어볼게요.

1. 비트보드가 안 맞아요. 체스 엔진은 보통 비트보드라는 기법을 써요. 8×8=64칸이 64비트 정수 하나에 딱 맞으니까, 칸마다 비트 하나를 배정하고 비트 연산으로 기물 위치를 아주 빠르게 계산하는 거예요. 그런데 11×10에 성채 2칸이면 112칸이라 64비트에 안 들어가요. 128비트 자료형을 쓰거나, 판을 그냥 배열로 표현하는 메일박스(mailbox) 방식으로 가야 해요. 자바스크립트라면 BigInt를 쓸 수도 있지만 느려서, 판 바깥을 '벽' 칸으로 둘러싼 1차원 배열이 현실적인 선택이에요. 벽 덕분에 '판 밖으로 나갔나?' 검사를 간단히 할 수 있거든요.

2. 움직임을 데이터로 표현하기. 기물이 10종을 넘으면 if 문으로 하나하나 짜는 건 지옥이에요. 그래서 변형 체스 커뮤니티에는 베츠 표기법(Betza notation)이라는 게 있어요. 기물의 움직임을 짧은 문자열로 적는 일종의 미니 언어인데, 나이트는 N, 낙타는 C, 2칸 대각 점프는 A, 2칸 직선 점프는 D처럼 써요. 점프형(leaper)과 미끄러지는형(rider)을 조합 규칙으로 정의해두면 새 기물을 넣을 때 코드 대신 데이터만 바꾸면 돼요. 기린처럼 '꺾여서 가는' 기물은 이 조합으로 표현하기가 까다로워서 구현 난이도가 확 올라가요.

3. AI 상대 만들기. AI를 만들려면 미니맥스 탐색과 알파-베타 가지치기 같은 고전적인 게임 트리 탐색이 기본이에요. 그런데 기물이 많고 판이 넓으면 한 수에 고를 수 있는 선택지가 늘어나서 탐색 비용이 폭발해요. 이런 변형을 폭넓게 지원하는 오픈소스 엔진으로는 Stockfish를 개조한 Fairy-Stockfish가 유명해요. 설정 파일만으로 새 변형 규칙을 정의할 수 있어서 비슷한 프로젝트를 만들 때 참고하기 좋아요.

비슷한 시도들

변형 체스를 웹에서 즐기는 문화는 꽤 탄탄해요. lichess는 크레이지하우스, 아토믹 같은 변형을 지원하고, pychess.org는 장기, 쇼기, 샹치처럼 아시아의 체스 계열 게임까지 다뤄요. 티무르 체스 같은 역사적 변형은 규칙 자체가 확실하지 않은 부분이 많아서, 만드는 사람이 사료를 해석해 '어떤 버전을 정답으로 삼을지' 정해야 한다는 점이 독특해요. 일종의 '고고학적 소프트웨어 개발'이라고 할까요.

한국 개발자에게는

사실 우리 장기도 같은 체스 가족이에요. 인도의 차투랑가에서 출발해서 서쪽으로는 페르시아를 거쳐 서양 체스가 되고, 동쪽으로는 중국 샹치와 한국 장기가 됐다고 보는 견해가 일반적이거든요. 장기의 상(象)이 코끼리고 마(馬)가 나이트의 사촌이라는 걸 생각하면 티무르 체스가 갑자기 친근해지죠.

사이드 프로젝트 주제를 찾고 있다면 보드게임 구현은 정말 좋은 연습 문제예요. 상태 관리, 규칙 엔진 설계, 탐색 알고리즘, UI까지 한 번에 다룰 수 있고, 규칙이 명확해서 테스트 코드 쓰기도 좋아요. 장기를 웹으로 만들어보거나, 기존 체스 엔진에 변형 규칙을 붙여보는 것도 재밌는 도전이 될 거예요.

마무리

한 줄 정리: 600년 전 게임을 코드로 복원하는 건 규칙 엔진 설계와 탐색 알고리즘을 같이 연습할 수 있는 최고의 놀이터예요.

여러분이 직접 만들어보고 싶은 보드게임은 뭔가요? 장기나 바둑처럼 익숙한 게임을 구현해본 경험이 있다면 공유해 주세요.


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://timurschess.com
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기 →
처리 중...