간단한 체스 변형 수정을 위한 YAML 스타일 설정
레벨 1: Configure (설정)
레벨 1은 체스 변형을 만드는 가장 간단한 방법입니다. YAML 스타일 구문을 사용하여 프로그래밍 지식 없이도 표준 체스 규칙을 수정할 수 있습니다.
개요
레벨 1은 다음에 적합합니다:
- 새로운 승리 또는 무승부 조건 추가
- 보드 설정 수정
- 보드에 존(zone) 정의
- 기존 규칙 조정
기본 구조
모든 ChessLang 파일은 게임 정의로 시작합니다:
game: "My Chess Variant"
extends: "Standard Chess"| 속성 | 필수 | 설명 |
|---|---|---|
game | 예 | 변형의 이름 |
extends | 아니오 | 상속할 기본 게임 (기본값: "Standard Chess") |
보드 설정
보드 크기
board:
size: 8x8더 크거나 작은 보드를 만들 수 있습니다:
board:
size: 10x8 # 10개 파일, 8개 랭크존 (Zones)
존은 보드에서 이름이 지정된 영역을 정의합니다:
board:
zones:
hill: [d4, d5, e4, e5]
promotion_zone: [a8, b8, c8, d8, e8, f8, g8, h8]
danger_zone: [d4-e5] # 범위 표기법존은 zone.zoneName을 사용하여 조건에서 참조할 수 있습니다.
기물 배치
표준 배치
기본적으로 "Standard Chess"를 확장하면 표준 기물 배치를 얻습니다. 이를 재정의할 수 있습니다:
setup:
White:
King: [e1]
Queen: [d1]
Rook: [a1, h1]
Bishop: [c1, f1]
Knight: [b1, g1]
Pawn: [a2, b2, c2, d2, e2, f2, g2, h2]
Black:
King: [e8]
Queen: [d8]
Rook: [a8, h8]
Bishop: [c8, f8]
Knight: [b8, g8]
Pawn: [a7, b7, c7, d7, e7, f7, g7, h7]수정된 배치
다른 시작 위치로 변형을 만들 수 있습니다:
# Chess960 스타일 배치
setup:
White:
King: [d1]
Queen: [e1]
Rook: [a1, h1]
Bishop: [b1, g1]
Knight: [c1, f1]
Pawn: [a2, b2, c2, d2, e2, f2, g2, h2]추가 기물 배치
setup:
add:
White:
Amazon: [d3] # 커스텀 기물 (정의되어 있어야 함)
Black:
Amazon: [d6]승리 조건
조건 결합 규칙 (중요!)
⚠️ 핵심 개념: 여러 승리 조건은 OR로 결합됩니다.
즉, 추가된 조건 중 하나라도 만족하면 게임이 종료됩니다.
victory:
add:
hill: King in zone.hill # checkmate OR hill 중 하나 만족시 승리
three_checks: checks >= 3 # checkmate OR hill OR three_checks위 예제에서 기본 체크메이트 조건과 새로 추가된 hill, three_checks 조건 중 어느 하나라도 만족하면 승리합니다.
복합 조건 (AND 로직)
여러 조건을 모두 만족해야 하는 경우, 단일 조건 내에서 and를 사용합니다:
victory:
add:
# 킹이 중앙에 있고 AND 상대 기물이 5개 이하일 때 승리
domination: King in zone.hill and opponent.pieces <= 5승리 조건 추가 (add)
기존 체크메이트를 유지하면서 새로운 승리 방법을 OR로 추가합니다:
victory:
add:
hill: King in zone.hill # 기존 조건 OR 이 조건
racing: King on rank 8 # 기존 조건 OR 이 조건승리 조건 교체 (replace)
특정 이름의 기존 조건을 새 조건으로 교체합니다 (OR 결합 유지):
victory:
replace:
checkmate: King captured # 기존 checkmate 조건을 king_captured로 교체승리 조건 제거 (remove)
특정 조건을 완전히 제거합니다:
victory:
remove:
- checkmate # 체크메이트 조건 제거
- stalemate # 스테일메이트 조건 제거조건 처리 순서
remove- 기존 조건 제거replace- 기존 조건 교체add- 새 조건 추가 (OR 결합)
승리 조건 구문
| 조건 | 설명 | 예시 |
|---|---|---|
King in zone.X | 킹이 존 X에 도달 | King in zone.hill |
King on rank N | 킹이 랭크 N에 도달 | King on rank 8 |
King on file X | 킹이 파일 X에 도달 | King on file e |
King captured | 킹이 잡힘 | King captured |
checks >= N | N회 이상 체크 | checks >= 3 |
pieces <= N | 상대 기물 N개 이하 | opponent.pieces <= 5 |
A and B | A와 B 모두 만족 | King in zone.hill and checks >= 2 |
A or B | A 또는 B 만족 | King captured or pieces == 0 |
무승부 조건
조건 결합 규칙
⚠️ 핵심 개념: 승리 조건과 마찬가지로, 여러 무승부 조건은 OR로 결합됩니다.
추가된 조건 중 하나라도 만족하면 무승부로 종료됩니다.
무승부 조건 추가 (add)
기존 조건을 유지하면서 새 조건을 OR로 추가합니다:
draw:
add:
bare_king: pieces == 1 and opponent.pieces == 1 # 양측 킹만 남으면 무승부무승부 조건 교체 (replace)
특정 이름의 기존 조건을 교체합니다:
draw:
replace:
repetition: position_count >= 5 # 3회 대신 5회 반복으로 변경무승부 조건 제거 (remove)
특정 조건을 제거합니다:
draw:
remove:
- stalemate # 스테일메이트를 무승부가 아닌 패배로 처리할 때
- fifty_moves # 50수 규칙 제거내장 무승부 조건
| 조건 | 설명 |
|---|---|
stalemate | 합법적인 수가 없고, 체크 상태가 아님 |
repetition | 포지션이 3회 반복됨 |
fifty_moves | 잡기나 폰 이동 없이 50수 |
insufficient | 불충분한 기물 |
규칙 설정
캐슬링
rules:
castling: true # 활성화 (기본값)
castling: false # 비활성화앙파상
rules:
en_passant: true # 활성화 (기본값)
en_passant: false # 비활성화프로모션
rules:
promotion:
pieces: [Queen, Rook, Bishop, Knight] # 가능한 프로모션
rank: 8 # 프로모션 랭크체크 규칙
rules:
check:
must_escape: true # 체크에서 벗어나야 함 (기본값)
can_ignore: false # 체크를 무시할 수 있음완전한 예제
King of the Hill
킹을 중앙으로 이동시켜 승리하는 변형입니다.
game: "King of the Hill"
extends: "Standard Chess"
board:
zones:
hill: [d4, d5, e4, e5]
# 승리 조건: checkmate OR hill (OR 결합)
victory:
add:
hill: King in zone.hill승리 조건 해석: 기본 체크메이트 조건이 유지되고, hill 조건이 OR로 추가됩니다.
즉, 체크메이트 또는 킹이 중앙에 도달하면 승리합니다.
Three-Check
3번 체크를 주면 승리하는 변형입니다.
game: "Three-Check"
extends: "Standard Chess"
# 승리 조건: checkmate OR three_checks (OR 결합)
victory:
add:
three_checks: checks >= 3승리 조건 해석: 체크메이트 또는 3회 이상 체크를 주면 승리합니다.
Racing Kings
킹을 먼저 8랭크에 도달시키면 승리하는 변형입니다.
game: "Racing Kings"
extends: "Standard Chess"
board:
size: 8x8
setup:
White:
King: [a1]
Queen: [a2]
Rook: [b1, b2]
Bishop: [c1, c2]
Knight: [d1, d2]
Black:
King: [h1]
Queen: [h2]
Rook: [g1, g2]
Bishop: [f1, f2]
Knight: [e1, e2]
# 승리 조건: checkmate를 racing으로 교체
# 결과: racing 조건만 적용 (체크메이트 제거됨)
victory:
replace:
checkmate: King on rank 8
rules:
check:
can_ignore: false
cannot_give: true # 체크를 줄 수 없음승리 조건 해석: replace를 사용하여 기본 체크메이트 조건을 "킹이 8랭크 도달" 조건으로 교체했습니다.
Horde Chess
백이 폰 군대로, 흑이 일반 기물로 싸우는 비대칭 변형입니다.
game: "Horde Chess"
extends: "Standard Chess"
setup:
White:
Pawn: [a1, b1, c1, d1, e1, f1, g1, h1,
a2, b2, c2, d2, e2, f2, g2, h2,
a3, b3, c3, d3, e3, f3, g3, h3,
a4, b4, c4, d4, e4, f4, g4, h4,
f5, g5]
Black:
King: [e8]
Queen: [d8]
Rook: [a8, h8]
Bishop: [c8, f8]
Knight: [b8, g8]
Pawn: [a7, b7, c7, d7, e7, f7, g7, h7]
# 완전히 다른 승리 조건으로 교체
victory:
remove:
- checkmate # 기본 체크메이트 제거
add:
white_wins: Black.King captured # 백: 흑의 킹을 잡으면 승리
black_wins: opponent.pieces == 0 # 흑: 모든 폰을 잡으면 승리승리 조건 해석: 기본 체크메이트를 제거하고, 양측에 각각 다른 승리 조건을 추가했습니다.
복합 조건 예제
여러 조건을 AND로 결합한 예제입니다.
game: "Domination Chess"
extends: "Standard Chess"
board:
zones:
center: [d4, d5, e4, e5]
# 복합 승리 조건: AND 로직 사용
victory:
add:
# 킹이 중앙에 있고 AND 상대 기물이 5개 이하
domination: King in zone.center and opponent.pieces <= 5승리 조건 해석: checkmate 또는 domination 조건 중 하나를 만족하면 승리합니다.
domination 조건 자체는 두 조건(킹이 중앙 AND 상대 기물 5개 이하)을 모두 만족해야 합니다.
다음 단계
- 커스텀 기물을 만들려면 레벨 2를 배우세요
- 더 많은 변형은 예제를 참고하세요
- 모든 키워드는 레퍼런스를 확인하세요
- 승리/무승부 조건 상세 설명은 승리 & 무승부 레퍼런스를 참고하세요