# 🏗️ 시스템 설계 원칙: [프로젝트명] 프로젝트 아키텍처 가이드라인

## 🎯 목표: 관심사의 분리 (Separation of Concerns - SoC)의 극대화
시스템을 구성하는 각 부분이 독립적으로 작동하며, 서로에게 최소한의 영향만 주도록 구조를 설계해야 합니다.

### 🧩 핵심 레이어 정의
1.  **Domain Engine Layer (핵심 규칙):**
    *   **역할:** 게임/시뮬레이션의 모든 물리적 규칙(충돌, 중력, 점수 계산 등)을 담당합니다. **외부 환경에 의존해서는 안 됩니다.**
    *   **구현 원칙:** 반드시 Web Worker와 같은 별도의 스레드에서 구동하여 메인 UI 스레드의 부하를 분리해야 합니다.
2.  **State Management Layer (진실의 출처):**
    *   **역할:** 시스템이 현재 어떤 상태인지(State)에 대한 단 하나의 공식 기록을 유지합니다. 모든 데이터 변경은 오직 이 레이어를 통해서만 이루어져야 합니다.
    *   **원칙:** **단일 진실 공급원 (Single Source of Truth, SSOT)** 원칙 준수.
3.  **Presentation Layer (렌더링):**
    *   **역할:** State Manager가 제공하는 데이터만 받아와서 사용자에게 보여줍니다. 비즈니스 로직은 절대 포함해서는 안 됩니다.

## 🔁 핵심 설계 패턴 적용 지침
*   **명령어/이벤트 기반 통신:** 컴포넌트 간의 직접적인 호출(Direct Call) 대신, 메시지/이벤트를 통해 느슨하게 결합해야 합니다. (Decoupling).