--- # ๐Ÿ’ก 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` ---