본문으로 건너뛰기

[Chess] 체스 용어집

1. 문서 목적

이 문서는 JunkBox chess 앱을 개발하고 운영할 때 공통으로 사용할 체스 용어를 정의함.

대상 독자는 체스 규칙을 배우는 중인 개발자와 AI 코딩 에이전트임. 따라서 이 문서는 체스 고급 이론서가 아니라, chess-api, chess-ui, shared-ai, 프롬프트, 로그, DB 필드에서 같은 단어를 같은 의미로 쓰기 위한 기준 문서임.

2. 표기법

2.1 Square

square는 체스판의 한 칸을 뜻함.

체스판은 파일과 랭크로 좌표를 표현함.

  • file: 세로줄. 왼쪽부터 a부터 h까지 사용함.
  • rank: 가로줄. 흰색 기준 아래에서 위로 1부터 8까지 사용함.
  • e4: e file과 4 rank가 만나는 칸임.

프로젝트에서는 칸 좌표를 항상 소문자 algebraic square 문자열로 표현함.

예:

a1
e2
e4
h8

2.2 UCI

UCIUniversal Chess Interface의 약자임.

원래는 체스 엔진과 GUI가 대화하기 위한 표준 인터페이스 이름임. JunkBox에서는 보통 한 수를 기계가 읽기 쉬운 좌표 문자열로 표현하는 방식을 가리킴.

UCI move는 기본적으로 출발 칸 + 도착 칸 형식임.

예:

e2e4
g1f3
e7e8q

의미:

  • e2e4: e2에 있던 기물이 e4로 이동함.
  • g1f3: g1에 있던 기물이 f3으로 이동함.
  • e7e8q: e7 폰이 e8로 이동하며 queen으로 승진함.

UCI는 경로 전체를 표현하지 않음. 출발 칸과 도착 칸을 표현함. 나이트처럼 점프하는 기물도 g1f3처럼 출발과 도착만 씀.

프로젝트 기준:

  • DB의 uci 필드는 실제 착수와 엔진 최선수의 UCI 문자열을 저장함.
  • 실제 수와 엔진 최선수 비교, 보드 화살표, 주 변형 재생은 UCI 문자열을 기준으로 보드 상태를 복원함.

2.3 SAN

SANStandard Algebraic Notation의 약자임.

사람이 기보를 읽을 때 쓰는 표준 대수 표기법임. UCI가 기계 친화적이라면 SAN은 사람 친화적임.

예:

e4
Nf3
Qxf7#
O-O
O-O-O

의미:

  • e4: 폰이 e4로 이동함.
  • Nf3: 나이트가 f3으로 이동함.
  • Qxf7#: queen이 f7의 기물을 잡으며 체크메이트함.
  • O-O: 킹사이드 캐슬링임.
  • O-O-O: 퀸사이드 캐슬링임.

기물 문자는 아래처럼 씀.

  • K: King
  • Q: Queen
  • R: Rook
  • B: Bishop
  • N: Knight
  • 폰은 보통 기물 문자를 쓰지 않음.

SAN에서 자주 보이는 기호:

  • x: capture, 기물을 잡음
  • +: check
  • #: checkmate
  • =: promotion

프로젝트 기준:

  • UI에서 사람이 읽는 move 배지는 SAN을 우선 표시함.
  • DB의 san 필드는 SAN 문자열을 저장함.

2.4 FEN

FENForsyth-Edwards Notation의 약자임.

현재 체스판 상태 하나를 문자열로 표현하는 표기임. PGN이 대국 전체 기록이라면 FEN은 특정 순간의 스냅샷임.

FEN에는 보통 다음 정보가 들어감.

  • 각 칸의 기물 배치
  • 현재 차례
  • 캐슬링 가능 여부
  • 앙파상 가능 칸
  • halfmove clock
  • fullmove number

예:

rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1

프로젝트 기준:

  • fen_beforefen_after는 각 수의 착수 전후 보드 상태를 재현하기 위한 원본임.
  • Stockfish 분석과 실제 수·엔진 최선수 비교는 착수 전 FEN을 기준으로 수행함.

2.5 PGN

PGNPortable Game Notation의 약자임.

대국 전체 기보를 저장하고 교환하기 위한 표기임.

예:

1. e4 e5 2. Nf3 Nc6 3. Bb5 a6

프로젝트 기준:

  • 대국 원본 PGN은 게임 단위로 저장함.
  • 수동 업로드는 주석이 포함된 Lichess PGN을 기본 입력으로 사용하며, 주석은 원본 PGN에 보존함.
  • Stockfish 분석은 PGN을 기반으로 각 ply와 착수 전후 FEN을 복원함.

3. 수 순서와 로그 용어

3.1 Move

move는 넓게는 한 번의 착수를 뜻함.

다만 프로젝트에서는 move라는 단어만 쓰면 UCI인지 SAN인지 애매해질 수 있음. 따라서 가능한 한 uci, san, best_move_uci처럼 구체적인 이름을 씀.

프로젝트 기준:

  • 실제 착수는 ucisan을 함께 저장함.
  • 엔진 권장수는 best_move_uci로 저장함.
  • 표시용 move는 SAN이 있으면 SAN을 우선 사용함.

3.2 Ply

ply는 한쪽이 한 번 둔 반수를 뜻함.

예:

1. e4 e5 2. Nf3 Nc6

ply 기준:

  • ply 1: white e4
  • ply 2: black e5
  • ply 3: white Nf3
  • ply 4: black Nc6

프로젝트 기준:

  • ply는 대국의 반수 번호임.
  • 흰색 첫 수가 1, 검은색 첫 수가 2임.
  • 같은 대국 안에서 move log 정렬의 핵심 기준으로 사용함.

3.3 Full Move

full move는 흰색 한 수와 검은색 한 수를 묶은 단위임.

예:

1. e4 e5

여기서 1은 full move number다. 이 full move에는 white e4와 black e5가 들어 있음.

프로젝트 기준:

  • 체스 이론에서 말하는 일반적인 수 번호는 full move number에 가까움.
  • DB와 UI에서는 혼동을 줄이기 위해 ply를 우선 사용함.

3.4 Turn

turn은 일반적으로 "현재 누가 둘 차례인가"를 뜻함.

프로젝트에서는 기존 구현과 UI 관성 때문에 turn_number라는 필드가 있을 수 있음. 단, 체스 이론의 full move number와 반드시 같다고 가정하지 않음.

프로젝트 기준:

  • turn_number는 UI와 기존 로그 호환을 위한 표시용 순서 값임.
  • 정확한 반수 순서는 ply를 기준으로 판단함.
  • 체스 규칙 계산과 분석 기준은 ply를 우선 사용함.

4. 기물 용어

4.1 Piece

piece는 체스 기물을 뜻함.

프로젝트에서는 아래 영어 이름을 기본으로 사용함.

  • king: 킹
  • queen: 퀸
  • rook: 룩
  • bishop: 비숍
  • knight: 나이트
  • pawn: 폰

4.2 Material

material은 양쪽이 가진 기물 가치의 총합 또는 그 차이를 뜻함.

기본 기물 가치는 보통 아래처럼 잡음.

  • pawn: 100
  • knight: 320
  • bishop: 330
  • rook: 500
  • queen: 900
  • king: 점수 계산 대상에서 제외하거나 무한대로 취급

프로젝트 기준:

  • Stockfish의 전체 판세 평가는 단순 material 합산과 다른 값임.

4.3 Hanging Piece

hanging piece는 보호가 약하거나 공짜로 잡힐 수 있는 기물을 뜻함.

Stockfish 분석과 코칭 문맥에서는 기물 손실 위험을 설명하는 표현으로 사용할 수 있음.

5. 전술과 상태 용어

legal move는 현재 체스 규칙상 실제로 둘 수 있는 합법수임.

프로젝트 기준:

  • python-chess가 PGN을 해석하고 수순을 적용할 때 합법수 검증을 수행함.
  • 수동 업로드와 자동 수집은 이미 종료된 대국의 복기 데이터만 다루며, 앱이 Lichess에 수를 제출하지 않음.

5.2 Check

check는 상대 킹이 공격받는 상태임.

체크를 받은 쪽은 반드시 체크를 해소하는 수를 둬야 함.

프로젝트 기준:

  • fen_after에서 체크 여부를 계산해 보드 하단 상태로 표시할 수 있음.

5.3 Checkmate

checkmate는 체크 상태이고, 체크를 해소할 합법수가 없는 상태임.

프로젝트 기준:

  • Stockfish의 메이트 평가와 주 변형을 해석하는 기준임.

5.4 Stalemate

stalemate는 체크는 아니지만 둘 수 있는 합법수가 없는 상태임.

대부분의 체스 규칙에서는 무승부임.

프로젝트 기준:

  • 게임 종료 상태 판단에 포함함.

5.5 Mate-in-1

mate-in-1은 지금 한 수만 두면 바로 체크메이트가 되는 상황임.

프로젝트 기준:

  • Stockfish 분석 결과의 메이트 평가와 주 변형은 복기 화면의 엔진 정보로 표시함.

5.6 Opponent Mate-in-1 Threat

opponent mate-in-1 threat는 내가 어떤 수를 둔 뒤 상대가 다음 한 수로 나를 체크메이트할 수 있는 위험임.

프로젝트 기준:

  • Stockfish 분석 결과는 상대 메이트 위협을 포함한 수의 평가 손실과 코칭 근거로 사용함.

5.7 Blunder, Mistake, Inaccuracy

게임 후 분석에서 수의 나쁨 정도를 분류하는 용어임.

  • inaccuracy: 작은 부정확함
  • mistake: 의미 있는 실수
  • blunder: 큰 실수

프로젝트 기준:

  • 게임 후 Stockfish 분석에서 eval drop 기준으로 분류함.

6. 특수 규칙 용어

6.1 Castling

castling은 킹과 룩을 한 번에 움직이는 특수 수임.

SAN 표기:

  • O-O: 킹사이드 캐슬링
  • O-O-O: 퀸사이드 캐슬링

UCI 예:

  • white kingside castling: e1g1
  • white queenside castling: e1c1
  • black kingside castling: e8g8
  • black queenside castling: e8c8

프로젝트 기준:

  • SAN 표시에서는 O-O, O-O-O를 사용함.
  • FEN에는 캐슬링 가능 여부가 포함됨.

6.2 Promotion

promotion은 폰이 마지막 rank에 도달해서 queen, rook, bishop, knight 중 하나로 승진하는 규칙임.

UCI 예:

e7e8q
a2a1n

SAN 예:

e8=Q
a1=N

프로젝트 기준:

  • UCI promotion move는 마지막에 승진 기물 문자를 붙임.
  • 일반적으로 queen promotion이 가장 흔함.

6.3 En Passant

en passant는 폰과 관련된 특수 capture 규칙임.

상대 폰이 시작 위치에서 두 칸 전진해 내 폰 옆을 지나간 직후, 내 폰이 그 폰을 한 칸 전진한 것처럼 잡을 수 있음.

프로젝트 기준:

  • python-chess가 PGN 수순 적용과 FEN 복원에서 규칙을 처리함.
  • FEN에는 en passant 가능 칸 정보가 포함될 수 있음.

7. AI와 분석 용어

7.1 Engine Evaluation

engine evaluation은 Stockfish가 특정 보드 상태와 수순에 부여한 평가임.

프로젝트 기준:

  • 실제 수의 평가, 엔진 최선수, 주 변형, centipawn loss를 수별 분석 데이터로 저장함.
  • 메이트 평가는 일반 폰 단위 평가와 구분해 표시함.

7.2 Coaching Comment

coaching comment는 엔진 분석이 완료된 사용자 수에 대해 생성하는 짧은 한국어 해설과 생각해 볼 점임.

프로젝트 기준:

  • 관전 대국과 상대 수에는 코칭을 생성하지 않음.
  • 사용자 표시 문장은 하십시오체와 마침표 규칙을 따름.

8. 프로젝트 필드명 기준

8.1 권장 필드명

  • fen_before: 착수 전 보드 상태 FEN
  • fen_after: 착수 후 보드 상태 FEN
  • pgn: 게임 원본 PGN
  • uci: 실제 착수 UCI 문자열
  • san: 실제 착수 SAN 문자열
  • ply: 반수 번호
  • turn_number: 화면 표시용 수 번호
  • is_my_move: 연결 계정 관점의 사용자 수 여부
  • best_move_uci: Stockfish 엔진 최선수 UCI 문자열
  • principal_variation: Stockfish 주 변형 UCI 수순
  • centipawn_loss: 실제 수와 최선수의 평가 손실
  • severity: 엔진 평가 손실 기준의 수 판정
  • mistake_type: 실수 분류

8.2 네이밍 원칙

  • 보드 재현과 엔진 수순 적용에는 UCI를 사용함.
  • 사람 표시에는 SAN을 우선 사용함.
  • 분석과 재현에는 FEN과 PGN을 함께 저장함.
  • 수 순서 계산은 ply를 우선 사용함.
  • move만 단독으로 쓰는 신규 필드는 피하고, 가능한 한 uci, san, best_move_uci처럼 구체화함.