--- id: wiki-2026-0508-polymorphism-in-engine-architect title: Polymorphism in Engine Architecture category: 10_Wiki/Topics status: needs_review canonical_id: self aliases: [P-Reinforce-AUTO-POLY-001] duplicate_of: none source_trust_level: A confidence_score: 0.97 tags: [auto-reinforced, software-engineering, game-engine, polymorphism, Architecture] raw_sources: [] last_reinforced: 2026-04-20 github_commit: pending inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08) tech_stack: language: unspecified framework: unspecified --- # [[Polymorphism-in-Engine-Architecture|Polymorphism-in-Engine-Architecture]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > "μ—”μ§„μ˜ λ³€ν™”λ¬΄μŒν•œ 근윑: μ„œλ‘œ λ‹€λ₯Έ 객체듀을 λ™μΌν•œ μΈν„°νŽ˜μ΄μŠ€λ‘œ μ‘°μ ˆν•˜κ²Œ ν•˜μ—¬, μ—”μ§„ μ†ŒμŠ€ μ½”λ“œμ˜ μˆ˜μ • 없이도 λ¬΄ν•œνžˆ λ‹€μ–‘ν•œ κ²Œμž„ 에셋과 κΈ°λŠ₯을 ν™•μž₯ν•  수 있게 λ§Œλ“œλŠ” 섀계 원칙." ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) μ—”μ§„ μ•„ν‚€ν…μ²˜μ—μ„œμ˜ λ‹€ν˜•μ„±(Polymorphism)은 κ°œλ³„ 객체가 μžμ‹ μ˜ μ‹€μ œ νƒ€μž…μ— 상관없이 μƒμœ„ νƒ€μž…μ˜ μΈν„°νŽ˜μ΄μŠ€λ₯Ό 톡해 λ™μΌν•˜κ²Œ λ‹€λ€„μ§ˆ 수 있게 ν•˜λŠ” 핡심 섀계 κΈ°λ²•μž…λ‹ˆλ‹€. 1. **μ£Όμš” κ΅¬ν˜„ 방식**: * **Virtual Functions (가상 ν•¨μˆ˜)**: λŸ°νƒ€μž„μ— μ‹€μ œ 객체의 ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λŠ” 동적 바인딩(Dynamic Binding). κ²Œμž„ μ—”μ§„μ˜ μ—”ν‹°ν‹° μ‹œμŠ€ν…œ(Update, Render λ“±)μ—μ„œ 기본적으둜 ν™œμš©. * **Interfaces / Abstract Classes**: '무엇을 ν•  것인가'만 μ •μ˜ν•˜κ³  'μ–΄λ–»κ²Œ ν•  것인가'λŠ” ν•˜μœ„ 클래슀(예: 적 AI, ν”Œλ ˆμ΄μ–΄, μž₯μ• λ¬Ό)에 μœ„μž„. * **Templates / Generics**: 컴파일 νƒ€μž„μ— λ‹€μ–‘ν•œ νƒ€μž…μ„ μ²˜λ¦¬ν•˜λŠ” 정적 λ‹€ν˜•μ„±. μ„±λŠ₯이 μ€‘μš”ν•œ λ Œλ”λ§ νŒŒμ΄ν”„λΌμΈμ΄λ‚˜ λ©”λͺ¨λ¦¬ ν• λ‹ΉκΈ°μ—μ„œ 주둜 μ‚¬μš©. 2. **μ—”μ§„μ—μ„œμ˜ ν™œμš©**: * **Rendering Provider**: DirectX용 ν΄λž˜μŠ€μ™€ [[Vulkan|Vulkan]]용 클래슀λ₯Ό 'RenderProvider' μΈν„°νŽ˜μ΄μŠ€λ‘œ λ¬Άμ–΄ μ—”μ§„ μ½”λ“œ μˆ˜μ • 없이 κ·Έλž˜ν”½ API ꡐ체. * **Component[[_system|system]] (ECS)**: λ‹€μ–‘ν•œ μ»΄ν¬λ„ŒνŠΈλ“€μ„ ν†΅μΌλœ λ°©μ‹μœΌλ‘œ μ²˜λ¦¬ν•˜μ—¬ 데이터 λ ˆμ΄μ•„μ›ƒμ„ μ΅œμ ν™”ν•˜κ³  ν™•μž₯μ„± 확보. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & Updates) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌**: κ³Όκ±°μ—λŠ” 가상 ν•¨μˆ˜ 호좜(vtable lookup)의 μ˜€λ²„ν—€λ“œ λ•Œλ¬Έμ— κ·Ήλ„μ˜ μ„±λŠ₯ μ§€μ μ—μ„œλŠ” λ‹€ν˜•μ„±μ„ κΈ°ν”Όν–ˆμœΌλ‚˜, ν˜„λŒ€ μ—”μ§„ μ•„ν‚€ν…μ²˜λŠ” 이λ₯Ό κ·Ήλ³΅ν•˜κΈ° μœ„ν•΄ '데이터 μ§€ν–₯ 섀계(DOD)'와 '인라인 정적 λ‹€ν˜•μ„±'을 κ²°ν•©ν•œ ν•˜μ΄λΈŒλ¦¬λ“œ 방식을 채택함. - **μ •μ±… λ³€ν™”(RL Update)**: μ—”μ§„μ˜ λͺ¨λ“ˆν™” μ •μ±…([[Modularity|Modularity]])이 강화됨에 따라, λͺ¨λ“  ν”ŒλŸ¬κ·ΈμΈκ³Ό μ™ΈλΆ€ ν™•μž₯을 'λ‹€ν˜•μ  μΈν„°νŽ˜μ΄μŠ€'λ₯Ό ν†΅ν•΄μ„œλ§Œ μ—°κ²°ν•˜λ„λ‘ κ°•μ œν•˜μ—¬ μ—”μ§„ μ½”μ–΄μ˜ μ•ˆμ •μ„±κ³Ό λ³΄μ•ˆμ„ μœ μ§€ν•˜λŠ” 섀계 원칙이 확립됨. ## πŸ”— 지식 μ—°κ²° (Graph) - [[Object-Oriented-Design-Patterns|Object-Oriented-Design-Patterns]], [[Software-Design-Principles|Software-Design-Principles]], Game Engine Architecture, C++ Performance [[Optimization|Optimization]] - **Modern Tech/Tools**: Unreal Engine UObject system, [[Unity|Unity]] ScriptableObjects, C++ vtable. --- ## πŸ€– LLM ν™œμš© 힌트 (How to Use This Knowledge) **μ–Έμ œ 이 지식을 μ“°λŠ”κ°€:** - *(TODO)* **μ–Έμ œ μ“°λ©΄ μ•ˆ λ˜λŠ”κ°€:** - *(TODO)* ## πŸ§ͺ 검증 μƒνƒœ (Validation) - **정보 μƒνƒœ:** needs_review - **좜처 신뒰도:** A - **κ²€ν†  이유:** *(P-Reinforce Phase 1 μžλ™ μ •κ·œν™”. λ³Έλ¬Έ 검증 ν•„μš”.)* ## 🧬 쀑볡 검사 (Duplicate Check) - **κΈ°μ‘΄ μœ μ‚¬ λ¬Έμ„œ:** *(TODO: μΈλ±μ„œ ν΄λŸ¬μŠ€ν„° 리포트 μ°Έμ‘°)* - **처리 방식:** UPDATE (μžλ™ μ •κ·œν™”) - **처리 이유:** Phase 1 μ •κ·œν™” β€” μ˜› ν…œν”Œλ¦Ώ/λˆ„λ½ ν•„λ“œ 보강. ## πŸ•“ λ³€κ²½ 이λ ₯ (Changelog) | λ‚ μ§œ | λ³€κ²½ λ‚΄μš© | 처리 방식 | 신뒰도 | |------|-----------|-----------|--------| | 2026-05-08 | P-Reinforce Phase 1 μ •κ·œν™” (frontmatter + 헀더 ν‘œμ€€ν™”) | UPDATE | A | ## πŸ’» μ½”λ“œ νŒ¨ν„΄ (Code Patterns) **νŒ¨ν„΄ 1:** *(TODO: 이 ν”„λ‘œμ νŠΈ μ»¨λ²€μ…˜ λ°˜μ˜ν•œ ꡬ쑰 μŠ€μΌˆλ ˆν†€)* ```text # TODO ``` ## πŸ€” μ˜μ‚¬κ²°μ • κΈ°μ€€ (Decision Criteria) **선택 Aλ₯Ό 써야 ν•  λ•Œ:** - *(TODO)* **선택 Bλ₯Ό 써야 ν•  λ•Œ:** - *(TODO)* **κΈ°λ³Έκ°’:** > *(TODO)* ## ❌ μ•ˆν‹°νŒ¨ν„΄ (Anti-Patterns) - **[μ•ˆν‹°νŒ¨ν„΄]:** *(TODO: 무엇을 ν•˜λ©΄ μ•ˆ λ˜λŠ”κ°€ + 이유 + λŒ€μ‹  무엇을)*