---
# 💡 Lesson Learned: 시스템 시뮬레이션의 핵심 원리 (Simulation Design)

## 🎯 문제 상황 (The Problem)
테트리스는 단순한 게임이 아니라, **물리 법칙(Physics)**과 **규칙 기반의 상태 변화**가 작동하는 작은 시뮬레이터였습니다. 이 경험을 통해 '시뮬레이션을 어떻게 설계해야 하는지'에 대한 깊은 이해를 얻었습니다.

## 🔬 근본 원인 (Root Cause)
단순히 UI로 그리는 것에만 집중하면, 시스템이 **규칙(Ruleset)**과 **물리 법칙(Physics Law)**을 따르는 '가상 세계'의 느낌을 놓치기 쉽습니다.

## ✅ 해결책 (The Solution)
게임 로직을 `gameWorker.js`에 완전히 분리하여, 모든 변화를 수학적 함수(`checkCollision`, `movePiece`)로 처리하고 그 결과를 상태(State)에 반영했습니다. 이는 곧 **"규칙이 물리 법칙처럼 작동하는 시스템"** 설계의 성공적인 예시입니다.

## 💡 교훈 (Lesson Learned)
> **"모든 시뮬레이션은 '물리적 규칙'을 수학적으로 정의하고, 그 규칙을 절대 우회할 수 없도록 강제해야 한다."**
> 이를 통해 우리는 단순한 게임을 넘어, 자율주행이나 물리 엔진에 적용 가능한 고수준의 시스템 모델링 능력을 갖추게 되었습니다.

## 🔗 관련 키워드
`Simulation Design`, `Physics Engine`, `Ruleset Enforcement`, `Systemic Modeling`
---