게임 규칙 코어
장르에 구애받지 않는, 모든 게임에 필요한 규칙입니다. 장르 특화 규칙은 이 규칙 위에 추가되어야 하며, 절대 대체해서는 안 됩니다.
워크플로우
- 차원(2D/3D), 장르, 카메라, 입력 방식을 식별합니다.
- 코드 작성 전에 규칙 집합을 정의합니다: 엔티티, 상태, 규칙, 승패, 경계 조건.
- 아래 패턴을 사용하여 구현합니다.
- 충돌/물리 관련 세부 사항은
references/collision.md를 참조합니다. - 프로젝트에
RULES.md를 출력하여 모든 게임별 규칙을 나열하고 추후 테스트할 수 있도록 합니다.
보편적 구조
- 게임 루프: 입력 -> 업데이트(고정 dt) -> 충돌 -> 상태 해결 -> 렌더링. 물리에는 고정 타임스텝을 사용하고, 렌더링에는 가변 타임스텝을 사용합니다.
- 게임 상태:
부팅 -> 메뉴 -> 플레이 <-> 일시정지 -> 게임오버/승리 -> 메뉴. 모든 전이는 명시적이어야 하며, 조용한 상태 변경은 허용되지 않습니다. - 엔티티: 각 엔티티는 위치, 크기/충돌체, 속도, 상태, 그리고 자신의 규칙을 소유합니다.
- 규칙 테이블: 모든 규칙에 대해
트리거 -> 조건 -> 효과 -> 경계 조건을 작성합니다.
모든 게임이 정의해야 할 규칙
- 승리 조건, 패배 조건, 재시작 시 동작(초기화되는 것, 유지되는 것).
- 점수/진행: 증가 방식, 상한선, 저장 방식.
- 플레이어 체력/목숨: 피해 원인, 무적 시간, 사망 처리.
- 생성/제거: 위치, 시점, 한계, 정리(누수 없음).
- 난이도 곡선: 무엇이 어떻게 얼마나 빠르게 변화하는지.
- 입력: 동시 입력, 버퍼링, 키 재설정, 일시정지 동작.
장르 추가 사항 (해당되는 것 선택)
- 플랫포머: 중력, 점프 높이/가변 점프, 코요테 타임(~100ms), 점프 버퍼(~100ms), 단방향 플랫폼, 이동 플랫폼 캐리, 낙사 판정선.
- 러너/무한: 속도 증가, 절대 통과 가능한 절차적 생성 간격, 재현성을 위한 시드.
- 슈터: 발사 속도, 발사체 수명, 명중 판정, 탄약/재장전.
- 퍼즐: 결정론적 상태, 실행 취소, 풀이 가능성 검사.
- 레이싱/3D: 체크포인트, 랩 검증, 지름길 방지 규칙, 카메라 충돌.
확고한 규칙
- 게임플레이 로직을 프레임 속도에 절대 연결하지 마십시오.
- 엔티티가 정의된 결과 없이 플레이 가능 영역을 벗어나지 못하게 하십시오.
- 모든 규칙은 숫자로 표시되어야 합니다 ("빠름" 대신 단위/초 사용).
- 무작위성은 시드 설정이 가능해야 합니다.