설명
EPD는 확장 포지션 설명을 뜻한다. EPD 한 줄은 기물 배치, 차례, , 을 설명하는 네 필드로 시작한다. 캐슬링 권리는 각 진영이 킹과 룩을 함께 움직이는 특수 수를 아직 둘 수 있는지 나타낸다. 그 뒤에 EPD 연산을 넣어 해당 포지션에 지시나 추가 정보를 연결할 수 있다.
각 연산은 의미를 식별하는 짧은 이름인 옵코드(opcode)와 그 뒤에 오는 0개 이상의 값인 피연산자(operand)로 구성된다. 항상 세미콜론으로 끝난다. id "test-001";에서 id는 옵코드이고 따옴표 안의 문자열은 피연산자다. 연산이 여러 개면 공백 하나로 구분한다.
표준화된 옵코드는 포지션 식별, 최선 수 제안, 피해야 할 수 표시, 예상 변형 수순 저장, 주석 추가 같은 작업을 다룬다. 소프트웨어가 옵코드를 인식하지 못하면 줄 전체를 거부하지 말고 해당 연산만 무시해야 한다. 이러한 확장성 덕분에 같은 기본 포지션 설명을 테스트 모음, 분석, 프로그램 간 통신에 사용할 수 있다.
용법과 맥락
EPD는 주로 포지션 모음, 포지션을 분석하는 프로그램인 테스트, 그리고 보드 상태 외에 각 포지션에 구조화된 데이터가 필요한 작업에 사용된다.
자주 혼동하는 개념
연산과 포지션 필드
처음 네 필드는 그 포지션에서 대국을 진행하는 데 필요한 상태를 설명한다. 뒤의 연산은 레이블, 정답 또는 지시를 추가한다.
옵코드와 피연산자
옵코드는 뒤에 어떤 종류의 데이터가 오는지 말하고, 피연산자는 그 데이터의 구체적인 값을 제공한다.
출처
- 1.Standard: Portable Game Notation Specification and Implementation Guide, Steven J. Edwards / ChessGML
- 2.Core, python-chess 1.11.2 documentation
