[κ²Œμž„ ν”„λ‘œκ·Έλž˜λ° νŒ¨ν„΄] κ²Œμž„ κ°œλ°œμ—μ„œ μ‚¬μš©λ˜λŠ” λ””μžμΈ νŒ¨ν„΄

2023. 5. 13. 22:49Β·πŸ“ Computer Science/✏ Design Pattern

κ²Œμž„ κ°œλ°œμ—μ„œ μ‚¬μš©λ˜λŠ” λ””μžμΈ νŒ¨ν„΄

κ²Œμž„ 개발의 κ΄€μ μ—μ„œ 각 λ””μžμΈ νŒ¨ν„΄μ— λŒ€ν•΄μ„œ λ‹€λ£° 것이닀. κ·ΈλŸ¬λ‚˜ λͺ¨λ“  μ•±μ΄λ‚˜ κ²Œμž„ κ°œλ°œμ—μ„œλ„ μ μš©λœλ‹€.

 

1. Singleton Design Pattern

ν”„λ‘œκ·Έλž¨μ΄ μ‹œμž‘λ  λ•Œ ν΄λž˜μŠ€κ°€ 졜초 ν•œ 번만 λ©”λͺ¨λ¦¬λ₯Ό ν• λ‹Ήν•˜κ³  κ·Έ λ©”λͺ¨λ¦¬μ— μΈμŠ€ν„΄μŠ€λ₯Ό λ§Œλ“€μ–΄ μ‚¬μš©
2020.05.16 - [πŸ“/✏ Design Pattern] - 싱글톀 νŒ¨ν„΄(Singleton Pattern)

 

κ²Œμž„μ—μ„œλŠ” μ˜ν™”μ²˜λŸΌ ν•œ λͺ…μ˜ λ””λ ‰ν„°κ°€ μ‘΄μž¬ν•œλ‹€. λ””λ ‰ν„°λŠ” κ²Œμž„μ—μ„œ μΌμ–΄λ‚˜λŠ” λͺ¨λ“  것을 μˆ˜ν–‰ν•˜λŠ” ν΄λž˜μŠ€μ΄λ‹€. 였브젝트λ₯Ό λžœλ”λ§ ν•˜κ³  μœ„μΉ˜λ₯Ό μ—…λ°μ΄νŠΈν•˜κ³  ν”Œλ ˆμ΄μ–΄μ˜ μž…λ ₯을 μ •ν™•ν•œ 캐릭터에 전달해 μ£ΌλŠ” λ“±μ˜ 역할을 μˆ˜ν–‰ν•œλ‹€. Singleton νŒ¨ν„΄μ„ 톡해 λ””λ ‰ν„°κ°€ ν•˜λ‚˜ 이상 μƒμ„±λ˜λŠ” 것을 λ°©μ§€ν•œλ‹€.

 

2. Strategy Design Pattern

객체듀이 ν•  수 μžˆλŠ” ν–‰μœ„ 각각에 μ „λž΅ 클래슀λ₯Ό μƒμ„±ν•˜κ³  μœ μ‚¬ν•œ ν–‰μœ„λ“€μ„ μΊ‘μŠν™”ν•˜λŠ” μΈν„°νŽ˜μ΄μŠ€ μ •μ˜

2023.05.19 - [πŸ“/✏ Design Pattern] - μŠ€νŠΈλž˜ν‹°μ§€ νŒ¨ν„΄(Strategy Pattern)

 

 

κ²Œμž„μ—μ„œλŠ” μž…λ ₯ μ»¨νŠΈλ‘€λŸ¬μ™€ κ²Œμž„ 둜직의 μƒν˜Έμž‘μš©μ„ λΆ„λ¦¬μ‹œμΌœμ•Ό ν•œλ‹€. 즉, κ²Œμž„ λ‘œμ§μ€ λ²„νŠΌ, 제슀처, μ‘°μ΄μŠ€ν‹± λ“± μ—¬λŸ¬ μž…λ ₯ 컨트둀러의 ν˜•μ‹μ— 상관없이 λ™μΌν•œ μ’…λ₯˜μ˜ μž…λ ₯을 λ°›μ•„μ•Ό ν•œλ‹€. 각 μ»¨νŠΈλ‘€λŸ¬λŠ” μ‚¬μš©μžλ“€μ΄ λ‹€λ₯΄κ²Œ λ‹€λ£¨μ§€λ§Œ κ²Œμž„μ—λŠ” λ™μΌν•œ λ…Όλ¦¬λ‘œ λ°›μ•„λ“€μ—¬μ Έμ•Ό ν•œλ‹€. 그리고 컨트둀러λ₯Ό μΆ”κ°€ν•˜κ±°λ‚˜ μ œκ±°ν•΄λ„ κ²Œμž„μ΄ κ³ μž₯ λ‚˜λ©΄ μ•ˆ λœλ‹€. μ΄λ ‡κ²Œ λΆ„λ¦¬λœ 행동과 μœ μ—°μ„±μ€ Strategy νŒ¨ν„΄μœΌλ‘œ μ‹€ν˜„ν•œλ‹€. κ²Œμž„μ˜ 논리λ₯Ό λ³€κ²½ν•  ν•„μš” 없이 컨트둀러만 κ΅μ²΄ν•΄μ„œ μœ μ—°μ„±μ„ 높일 수 μžˆλ‹€.

 

3. Observer Design Pattern

객체의 μƒνƒœ λ³€ν™”λ₯Ό κ΄€μ°°ν•˜λŠ” κ΄€μ°°μž νŒ¨ν„΄
2021.11.06 - [πŸ“/✏ Design Pattern] - μ˜΅μ €λ²„ νŒ¨ν„΄(Observer Pattern)

 

 

κ²Œμž„ κ°œλ°œμ—μ„œλŠ” λͺ¨λ“  ν΄λž˜μŠ€κ°€ μ•½ν•˜κ²Œ μ—°κ΄€λ˜μ–΄ μžˆμ–΄μ•Ό ν•œλ‹€. 즉, 각 ν΄λž˜μŠ€λŠ” μ†Œν†΅ν•  수 μžˆμ–΄μ•Ό ν•˜λ©΄μ„œλ„ μ„œλ‘œ 잘 λͺ°λΌμ•Ό ν•œλ‹€λŠ” 것이닀. μ˜λ„λ˜μ§€ μ•Šμ€ 버그 없이 μƒˆλ‘œμš΄ νŠΉμ§•λ“€μ„ μΆ”κ°€ν•˜κΈ° μœ„ν•΄μ„œλŠ” 각 클래슀λ₯Ό λͺ¨λ“ˆν™” ν•˜κ³  μœ μ—°ν•˜κ²Œ λ§Œλ“€μ–΄μ•Ό ν•œλ‹€. 보톡 ν•œ μ˜€λΈŒμ νŠΈκ°€ λ‹€λ₯Έ μ˜€λΈŒμ νŠΈμ—κ²Œ λ©”μ‹œμ§€λ₯Ό λ³΄λ‚΄κ²Œ λœλ‹€. 각 μ˜€λΈŒμ νŠΈλŠ” 톡신을 ν•  뿐 각 κΈ°λŠ₯ λ™μž‘μ— λŒ€ν•΄ μ•Œ ν•„μš”λŠ” μ—†λŠ” 것이닀.

 

4. Composite Design Pattern

μ—¬λŸ¬ 개의 κ°μ²΄λ“€λ‘œ κ΅¬μ„±λœ 볡합 객체와 단일 객체λ₯Ό ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ ꡬ별 없이 λ‹€λ£¨κ²Œ ν•΄μ£ΌλŠ” νŒ¨ν„΄

2023.05.29 - [πŸ“/✏ Design Pattern] - μ»΄ν¬μ§€νŠΈ νŒ¨ν„΄(Composite Pattern)

 

 

캐릭터가 λ Œλ”λ§ λ˜λŠ” 메인 뷰와 캐릭터 μœ„μΉ˜λ‚˜ 남은 μ‹œκ°„μ„ λ³΄μ—¬μ£ΌλŠ” μ„œλΈŒ λ·° λ“± κ²Œμž„μ€ 일반적으둜 λ§Žμ€ λ·°κ°€ μžˆλ‹€. λͺ¨λ°”일이라면 μ—¬λŸ¬ λ²„νŠΌμ΄ λ·°κ°€ λœλ‹€. κ²Œμž„ κ°œλ°œμ—μ„œλŠ” μœ μ§€ λ³΄μˆ˜κ°€ μ€‘μš”ν•˜λ‹€. λ§Œμ•½ 각 뷰에 λ‹€λ₯Έ ν•¨μˆ˜ 이름과 λ‹€λ₯Έ 호좜 방식이 μžˆλ‹€λ©΄ μœ μ§€ λ³΄μˆ˜κ°€ μ–΄λ €μ›Œμ§€κΈ° λ•Œλ¬Έμ— κ·Έλž˜μ„œ λͺ¨λ“  뷰에 λŒ€ν•œ ν†΅ν•©λœ 호좜 방식을 μ œκ³΅ν•˜κ²Œ λœλ‹€. 즉, λ™μΌν•œ ν•¨μˆ˜ 호좜둜 메인 뷰와 μ„œλΈŒ 뷰에 접근이 κ°€λŠ₯ν•΄μ•Ό ν•œλ‹€. μ΄λ•Œ μ‚¬μš©λ˜λŠ” 것이 Composite νŒ¨ν„΄μ΄λ‹€. 이 νŒ¨ν„΄μ€ 각 λ·°λ₯Ό 트리 ꡬ쑰둜 λ°°μΉ˜ν•˜μ—¬ λͺ¨λ“  뷰에 λŒ€ν•œ 호좜 방식을 μ œκ³΅ν•œλ‹€.

 

5. Model-View-Controller Design Pattern

μ‹€μ œμ μΈ 일을 ν•˜λŠ” λΆ€λΆ„, μ–΄λ–»κ²Œ 처리λ₯Ό ν• μ§€λ₯Ό μ•Œλ €μ£ΌλŠ” λΆ€λΆ„, κ΅¬λ™λ˜λŠ” 무언가λ₯Ό λ³΄μ—¬μ£ΌλŠ” λΆ€λΆ„μœΌλ‘œ ꡬ성
2020.05.16 - [πŸ“/✏ Design Pattern] - MVC νŒ¨ν„΄

 

 

MVC νŒ¨ν„΄μ€ μ„Έ λ””μžμΈ νŒ¨ν„΄μœΌλ‘œ κ΅¬μ„±λ˜μ–΄ μžˆλ‹€.

  • Strategy νŒ¨ν„΄μ΄ 컨트둀러λ₯Ό λ‚˜νƒ€λ‚΄λ©° κ²Œμž„μ˜ 논리(λͺ¨λΈ) 및 μΈν„°νŽ˜μ΄μŠ€(λ·°)μ—μ„œ μ‚¬μš©μž μž…λ ₯을 λΆ„λ¦¬ν•œλ‹€.
  • Composite νŒ¨ν„΄μ€ λ·°λ₯Ό λ‚˜νƒ€λ‚Έλ‹€.
  • Observer νŒ¨ν„΄μ€ λͺ¨λΈμ˜ λ‘œμ§μ„ λ‚˜νƒ€λ‚΄λ©° λ‘œμ§μ€ λ·°λ‚˜ μ»¨νŠΈλ‘€λŸ¬μ— λŒ€ν•΄ μ•Œμ§€ λͺ»ν•œ 채 이듀과 μƒν˜Έ μž‘μš©ν•  수 μžˆλ‹€.

 

μ°Έκ³ 

https://next-brain.tistory.com/97

 

κ²Œμž„μ—”μ§„μ— μ‚¬μš©λ˜λŠ” λ””μžμΈ νŒ¨ν„΄(Harold Serano)

원문: Design Patterns in Game Engine Development 이제 막 ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λ“€μ˜ ꡬ문/문법을 μ•Œκ²Œ 된 것이 ν”„λ‘œκ·Έλž˜λ¨Έκ°€ λ˜μ—ˆλ‹€λŠ” 말은 μ•„λ‹ˆλ‹€. μ•„λ‹ˆλΌκ³  ν•˜κ³  μ‹Άμ§€λ§Œ νŠΈλ£¨λ‹€. μ§„μ§œ ν”„λ‘œκ·Έλž˜λ¨Έκ°€λ˜λ €λ©΄ 데

next-brain.tistory.com

https://www.haroldserrano.com/blog/design-patterns-in-game-engine-development

 

Design Patterns in Game Engine Development — Harold Serrano - Game Engine Developer

Learn the most popular Design Patterns used in games and apps development. Learn about the Model-View-Controller, Strategy, Observer, Composite and Singleton design pattern.

www.haroldserrano.com

μ €μž‘μžν‘œμ‹œ (μƒˆμ°½μ—΄λ¦Ό)
'πŸ“ Computer Science/✏ Design Pattern' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • μ»΄ν¬μ§€νŠΈ νŒ¨ν„΄(Composite Pattern)
  • μŠ€νŠΈλž˜ν‹°μ§€ νŒ¨ν„΄(Strategy Pattern)
  • [κ²Œμž„ ν”„λ‘œκ·Έλž˜λ° νŒ¨ν„΄] 더티 ν”Œλž˜κ·Έ νŒ¨ν„΄(Dirty Flag Pattern)
  • [κ²Œμž„ ν”„λ‘œκ·Έλž˜λ° νŒ¨ν„΄] κ²Œμž„ 루프 νŒ¨ν„΄(Game Loop Pattern)
Blxxming
Blxxming
CS 지식과 κ³΅λΆ€ν•˜λ‹€ 배운 것, κ²½ν—˜ν•œ 것 등을 κΈ°λ‘ν•˜λŠ” λΈ”λ‘œκ·Έμž…λ‹ˆλ‹€.
  • Blxxming
    πŸ’‘λ²ˆλœ©πŸ’‘
    Blxxming
  • 전체
    였늘
    μ–΄μ œ
  • 곡지사항

    • Tech Interview
    • πŸ“š Tech (246)
      • πŸ“ Computer Science (96)
        • ✏ OS (12)
        • ✏ Network & Web (10)
        • ✏ Database (11)
        • ✏ Data Structure (6)
        • ✏ Algorithm (40)
        • ✏ Design Pattern (9)
        • ✏ Cloud Computing (3)
        • ✏ (5)
      • πŸ“ Language (73)
        • ✏ Language (6)
        • ✏ C & C++ (11)
        • ✏ C# (19)
        • ✏ JAVA (37)
      • πŸ“ Game (43)
        • ✏ Computer Graphics (2)
        • ✏ Unity (14)
        • ✏ Unreal (26)
        • ✏ (1)
      • πŸ“ Book (34)
        • ✏ Effective (3)
        • ✏ Game Server (16)
        • ✏ Clean Code (14)
        • ✏ (1)
  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.0
Blxxming
[κ²Œμž„ ν”„λ‘œκ·Έλž˜λ° νŒ¨ν„΄] κ²Œμž„ κ°œλ°œμ—μ„œ μ‚¬μš©λ˜λŠ” λ””μžμΈ νŒ¨ν„΄
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”