์ฑ ์์ ๋์จ ๊ฒ์ ๋์์ธ ํจํด๋ค ์ ๋ฆฌํ ๊ฒธ ๊ธ ์จ๋ด.
๊ฐ ํจํด ๋ด์ ์ฒซ๋ฒ์งธ ์ค์ ์ด๋ก ์ ์ธ ์ค๋ช , ๋๋ฒ์งธ ์ค์ ๋์ถฉ ์์
1. ์ฑ๊ธํด ํจํด(singleton pattern)
- ๋ฐํ์ ์ดํ ์ค์ง ํ๋์ ์ธ์คํด์ค๋ง ์กด์ฌํ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ํจํด.
- ๊ฒ์์ ์ด ๊ด์ฅํ๋ ๊ฒ์๋งค๋์ ๊ฐ์ ๊ฐ์ฒด์ ์ฌ์ฉ ๊ฐ๋ฅ.
2. ์ํ ํจํด(state pattern)
- ๊ฐ์ฒด๊ฐ ๋ด๋ถ ์ํ์ ๋ณํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ ์ ์๋๋ก ํ๋ ํจํด.
- ์บ๋ฆญํฐ์ ์ด๋์ ๋ฐฉํฅํค์ ๋ฐ๋ผ ๊ฐ๊ฐ ์ง์ง, ์ข์ฐ, ๋ค๋ก, ๋ฉ์ถค ์ํ๋ก ๋ณ๊ฒฝ ํ์ ๊ฐ ์ํ ๊ฐ์ฒด์์ ์ค์ ๋ฐ์ดํฐ ๋ก์ง ์ฒ๋ฆฌ๋ฅผ ํจ. ์ํ ๋ณ๊ฒฝ ์ ์ค๊ฐ ๋ค๋ฆฌ์ธ ์ปจํ ์คํธ๋ฅผ ์ด์ฉํ๋ฉด ๊ด๋ฆฌ๊ฐ ์ฉ์ด. ์ฆ, ๋ฐฉํฅํค ์ ๋ ฅ ์ ๋ฐ์๋๋ ์ด๋ฒคํธ์์๋ ์ค์ ๋ก์ง์ฒ๋ฆฌ๋ฅผ ํ์ง ์๊ณ ๋จ์ ์ํ ๋ณ์๋ง ๋ณ๊ฒฝํจ.
3. ์ด๋ฒคํธ ๋ฒ์ค(event bus pattern)
- ๋ฐํ์๋ก๋ถํฐ ์ ์ญ ์ด๋ฒคํธ๋ฅผ ์์ง ํ ํ ์ ์ ํ ๊ตฌ๋ ์์๊ฒ ์ ๋ฌํด์ฃผ๋ ํจํด.
- ๊ฒ์ ์ค์ ์ผ์์ ์ง ์ด๋ฒคํธ ๋ฐ์ ์, ๋ชจ๋ ์บ๋ฆญํฐ๋ค์ ์์ง์๊ณผ ์ฌ์ฉ์์ ์ ๋ ฅ์ ๋ฉ์ถ๊ธฐ ์ํด ์บ๋ฆญํฐ ์ปจํธ๋กค๋ฌ์ ์ ๋ ฅ ์ปจํธ๋กค๋ฌ์ ํด๋น ์ด๋ฒคํธ๋ฅผ ์ ๋ฌํด์ฃผ์ง๋ง UI์ปจํธ๋กค๋ฌ๋ ๊ณ์ ์๋ํด์ผ ํ๋ฏ๋ก ์ ๋ฌํด์ค ํ์๊ฐ ์์.(๋ง์ฝ UI ์์ ํ์ ์นด์ดํธ๊ฐ ์๋ค๋ฉด ์ด๊ฒ์ ๋ฉ์ถ๊ธฐ ์ํด ํ์ ์นด์ดํธ ์ปจํธ๋กค๋ฌ ํน์ UI ์ปจํธ๋กค๋ฌ์ ์ ๋ฌํด์ฃผ์ด์ผ ํจ)
4. ์ปค๋งจ๋ ํจํด(command pattern)
- ํธ์ถ์๊ฐ ์ปค๋งจ๋๋ฅผ ์ ๋ ฅ ๋ฐ์ ์์ ์๋ฅผ ์ปจํธ๋กค ํ ์ ์๋ ํจํด. ์ฆ, ์ฌ์ฉ์์ ์ ๋ ฅ๊ณผ ์ปจํธ๋กค ๊ฐ์ฒด๋ฅผ ๋ถ๋ฆฌํด์ฃผ๋ ํจํด.
- ๋์ ๊ฒฉํฌ ๊ฒ์์์ ์ฌ์ฉ์๊ฐ "์๋จ ์ฃผ๋จน ๊ณต๊ฒฉ" -> "ํ๋จ ๋ฐ ๊ณต๊ฒฉ" -> "์ก๊ธฐ" -> "๋ง๊ธฐ" ์์ผ๋ก ์ปค๋งจ๋๋ฅผ ๋ฐ์์์ผฐ๋ค๋ฉด, ์ด๋ฌํ ์ปค๋งจ๋๋ค์ ๊ฐ์ฒด๋ก ๊ตฌํ ๋ฐ ์๋ฃ๊ตฌ์กฐ์ ์์๋๋ก ์ ์ฅํ์ฌ ๋ฆฌํ๋ ์ด ๋ ์ฌ์ด์ฉ๊ฐ๋ฅ. ๊ฐ ์ปค๋งจ๋๋ค์ ์ค์ ์บ๋ฆญํฐ ๊ฐ์ฒด๋ฅผ ๊ฐ์ง๊ณ ํน์ ์ปค๋งจ๋์ ํด๋นํ๋ ์ด๋ฒคํธ๋ง ์ํํจ.
5. ์ค๋ธ์ ํธ ํ ํจํด(object pool pattern)
- ๊ฐ์ฒด ๋ชฉ๋ก์ ์ฌ์ ์ ๋ฉ๋ชจ๋ฆฌ์ ์ด๊ธฐํ์์ผ ๋๊ณ ํ์ ๋ด์ ๋ค์ ๋ฐํ์ ๋์ ๋ฉ๋ชจ๋ฆฌํด์ ์์ด ํ์์ ๊ณ์ ๊บผ๋ด ์ธ ์ ์๋ ํจํด. ์ด ๊ฐ์ฒด๋ ๋ค์ ํ์ ๋ฐํํด์ผ ํจ.
- ์ํ ๊ฒ์์์ ๋งค๋ฒ ๋ฏธ์ฌ์ผ ์์ฑ์ ์ฐ์ฐ๋น์ฉ์ด ๋ง์ด ๋ ๋ค๋ฉด, ๋ฐํ์ ์ด๊ธฐํ ๋ ๋ฏธ๋ฆฌ ํ๋ฉด์ ๋ฟ๋ ค์ง ์ต๋ ๊ฐ์์ ๋ฏธ์ฌ์ผ์ ์์ฑํด ๋๊ณ , ํ์ํ ๋ ๋ง๋ค ๋ฏธ์ฌ์ผ์ ๊บผ๋ด ์ฐ๊ณ , ๋ฏธ์ฌ์ผ์ด ํ๋ฉด ๋ฐ์ผ๋ก ๋๊ฐ๋ฉด ๋ค์ ๋ฏธ์ฌ์ผ ํ์ ๋ฐํํ๋ ์์ผ๋ก ์ด์ฉ ๊ฐ๋ฅ.
6. ์ต์ ๋ฒ ํจํด(observer pattern)
- ๋์์ด ๋๋ ๊ฐ์ฒด๋ฅผ ๋ค์์ ๊ด์ฐฐ์๋ค์ด ๊ด์ฐฐํ๋ ์ผ๋๋ค ๊ด๊ณ๋ฅผ ์ค์ ํ๋ ํจํด.
- ํ๋ ์ด์ด ์บ๋ฆญํฐ์ HP๊ฐ 10%๋ฐ์ ์๋จ์์ ๊ฒฝ์ฐ, ํ๋ ์ด์ด ์บ๋ฆญํฐ ๊ฐ์ฒด๋ฅผ ๊ด์ฐฐํ๋ ๋ค์ํ ๊ด์ฐฐ์ ๊ฐ์ฒด๋ค์๊ฒ ์ด๋ฅผ ์๋ฆผ. ์๋ฅผ ๋ค์ด HUD UI ์ปจํธ๋กค๋ฌ์ ์๋ ค์ HP๋ฐ์ ์๊น์ ๋ฐ๊พธ๊ณ , ์บ๋ฆญํฐ ๋๋๋ฌ์๊ฒ ์๋ ค์ ์บ๋ฆญํฐ์ ๋ชธ์์ ํผ๊ฐ๋์ค๊ฒ ํ๋ ์ ๋๋ฉ์ด์ ์ ๋์์ํค๊ณ , ํ๋ ์ด์ด๋ฅผ ๊ด์ฐฐํ๊ณ ์๋ ์ฃผ๋ณ ๋ชน๋ค์๊ฒ ์๋ ค์ ๋ฌ๋ ค๋ค๊ฒ ๋ง๋ค ์ ์์. ์ฌ๊ธฐ์ ๋ชน๋ค์ด ์ฃฝ๊ฑฐ๋ ์์ผ์์ ์ด์์ง๋ค๋ฉด ํ๋ ์ด์ด๋ฅผ ๊ด์ฐฐํ๋ ๊ด์ฐฐ์๋ค ๋ชฉ๋ก์์ ์ ๊ฑฐํจ.
7. ๋ฐฉ๋ฌธ์ ํจํด(visitor pattern)
- ๋ฐฉ๋ฌธ์์ ๋ง์ด(?)์(visitable)๋ฅผ ๊ตฌํํ์ฌ ๋ฐฉ๋ฌธ์๊ฐ ์ด๋ค๊ฐ์ฒด(visitable)๋ฅผ ๋ฐฉ๋ฌธํ์ฌ ๊ทธ ๊ฐ์ฒด์ ํน์ ์์๋ฅผ ์์ ํ ์ ์์.
- ํ์์ ์์ดํ ์ ๋จน์ผ๋ฉด ๊ทธ ์์ดํ (๊ฐ์ฒด)์ด ์บ๋ฆญํฐ๊ฐ์ฒด ๋ด๋ถ์ "์ด๋", "์ฒด๋ ฅ", "๊ณต๊ฒฉ๋ ฅ" ๋ฑ์ ๊ฐ์ฒด๋ฅผ ๋ฐฉ๋ฌธํ๋ฉด์ ๊ฐ๊ฐ ํจ๊ณผ๋ฅผ ์ค
8. ์ ๋ต ํจํด(strategy pattern)
- ๋ฐํ์์ ํน์ ๋์์ ๊ฐ์ฒด์ ํ ๋น.
- ๋ชฌ์คํฐ์ ์ด๋ ํจํด์ ๋ค์ํ๊ฒ ๋์ ๊ฐ๋ฅ. ๋ชฌ์คํฐ ๊ฐ์ฒด ์์ ์์๋ ๊ด๋ จ ๋ด์ฉ(์ด๋ค ์ด๋ ํจํด์ธ์ง)์ ์ ํ์๊ฐ ์์.
9. ๋ฐ์ปค๋ ์ดํฐ(decorator pattern)
- ๊ธฐ์กด ๊ฐ์ฒด๋ฅผ ๋ฐ๊พธ์ง ์๊ณ ๋ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐ ๋ฐ ์ค์ฒฉํ ์ ์๋ ํจํด.
- ๋ฌด๊ธฐ์ ๊ฐ์ข ๋ถ์ฐฉ๋ฌผ์ด๋ ์ต์ ์ ๋ถ์ฌ ๊ฐ๋ฅ. ๋๊ธฐ์ ํญ์ ์ง๋(ํ์ด์ด ๋ณผ์ ์๋(ํ๋ฒํ ์งํก์ด)))
10. ๊ณต๊ฐ ํํฐ์ (spatial partition)
- ํจ์จ์ ์ธ ์ปดํจํ ์ฐ์ฐ์ ์ํด ์ค์ ๊ฒ์ ๊ณต๊ฐ์ด ์๋ ๊ฐ์์ ๊ณต๊ฐ์ ๋ง๋ค์ด ๊ฐ์ข ์ฐ์ฐ์ ์ฉ์ดํ๊ฒ ํ๋ ํจํด.
- ํ๋ ์ด์ด ์ฃผ๋ณ์ ๋ชน๋ค์ด ์๋ฐฑ๋ง ๋ง๋ฆฌ๊ฐ ์์ ๋ ํ์ฌ ๋์ ๊ณต๊ฒฉ ๋ฒ์๊ฐ ๋ฟ๋ ๊ฐ ๋ชน๋ค์ ์์น๋ฅผ ์ฐพ๊ธฐ ์ํด ๋ฌด์ํ๊ฒ(๋น์ฉ์ด ๋ง์ด๋๋) Raycasting ์ฐ์ฐ์ ํ์ง์๊ณ (ํน์ ๋จ์ ๊ณต๊ฐ์์ ์์น ์กฐํ๋ง ๋งค ํ๋ ์๋ง๋ค ํด๋ ์ฐ์ฐ ๋น์ฉ์ด ํผ), ์ผ์ ํฌ๊ธฐ์ ๊ฒฉ์๋ก ๋๋์ด ์ต์ํ์ ์ฐ์ฐ๋ง์ผ๋ก ๋๋ต์ ์ธ ์์น ์กฐํ๊ฐ ๊ฐ๋ฅํ๊ฒ ๋ง๋ ํ ๋์ ๊ณต๊ฒฉ ๋ฒ์๊ฐ ๋ฟ๋ ๊ฒฉ์๋ค๋ง ์กฐํํด์ ๊ทธ ์์ ์๋ ๋ชน๋ค๋ง ์ถ๋ฆด ์ ์์. BSP, QuadTree ๊ฐ์ ์ด๋ฏธ ํ์ผํ๋ ๊ตฌ์ฒด์ ์ธ ๋ฐ์ดํฐ ๊ตฌ์กฐ๊ฐ ์กด์ฌํ๋ฉฐ https://gall.dcinside.com/m/game_dev/117517 ์ด ๊ฒ์ด๊ฐ ์ด ๊ธ์๋ ์ผ๋ถ ์ค๋ช ์ด ๋์ด์์.
11. ์ด๋ํฐ ํจํด(adapter pattern)
- ํธํ๋์ง ์์ ๋ ๊ฐ์ ์ธํฐํ์ด์ค๋ฅผ ์กฐ์ . ํด๋น ๊ฐ์ฒด์ ๋ด์ฉ์ ์ง์ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ ๋ณ๊ฒฝํ๊ธฐ ์ด๋ ค์ด ์ํฉ์์ ์ด๋ํฐ ํจํด์ผ๋ก ๊ทธ ๊ฐ์ฒด๋ฅผ ๊ฐ์ ์ ์ผ๋ก ์ด์ฉํ๊ฑฐ๋ ๋ณ๊ฒฝ ๊ฐ๋ฅ. ์ค์ ์ ์๊ธฐ๊ธฐ ํ๋ฌ๊ทธ๊ฐ ์์ผ์ ๊ตฌ๋ฉ์ด ์ ๋ง์ ๋ ๋ผ์ฐ๋ ๋ผ์ง์ฝ๋ฅผ ์๊ฐํ์. ์ฌ๊ธฐ์ ๋ผ์ง์ฝ๊ฐ ์ด๋ํฐ์.
- ์ธ๋ถ ์์ ์ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ๋ฉด ์์ ์ด ์ ๋ฐ์ดํธ ํ ๋๋ง๋ค ๋ณํฉ์ ๋ฌธ์ ๊ฐ ๋ฐ์๋๊ธฐ ๋๋ฌธ์ ์ค๊ฐ๋ค๋ฆฌ๋ฅผ ๋์ ์ธ๋ถ ์์ ์ ์ง์ ์ ์ธ ๋ณ๊ฒฝ์ ๋ง์ ์ ์์. ๊ธฐ์กด ์ฝ๋๋ฅผ ์์ ํ์ง ์์.
12. ํผ์ค๋ ํจํด(facade pattern)
- ๋ณต์กํ ์ฝ๋๋ค์ ๊ฐ์ถ๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ ํจํด. ์ฌ์ฉ์๋ ๋จ์ ๋ฉ์๋๋ง ํธ์ถํ๋ฉด ๋ด๋ถ์์๋ ๋ค์ํ ๋ก์ง๋ค์ด ์คํ๋จ. ๊ทธ๋ฌ๋ ์ฌ์ฉ์๋ ๊ทธ ์ฌ์ค์ ์ ์๋, ์ ํ์๋ ์์.
- ๋ฒ์์ปค๊ฐ ๋ฒ์ํฌ๋ชจ๋๋ก on/offํ๊ธฐ ์ํด์ ๋ฒ์ํฌ๋ชจ๋On() ๊ณผ ๋ฒ์ํฌ๋ชจ๋Off() ๋ฅผ ํธ์ถํ๋ฉด ๋์ง๋ง, ๋ด๋ถ์์๋ ๋ถ๋ ธ๊ฒ์ด์ง๋ฐUI๊ฐ ๋ณ๊ฑฐ๋, ์บ๋ฆญํฐ ์์ด๋๊ฐ ๋ฐ๋๋ ๋ฑ ํ๋ฉด ๋๋๋ง ํจ์๋ค ๋ถํฐ ์์ํด์ ๊ฐ์ข ๋ก์งํจ์๋ค์ด ํธ์ถ๋จ.
13. ์๋น์ค ๋ก์ผ์ดํฐ ํจํด(service locator pattern)
- ํด๋ผ์ด์ธํธ์ ๋ํ ์๋น์ค๋ฅผ ์ฐพ๋ ๊ฒ์ ๋์์ฃผ๋ ์๋น์ค ๋ก์ผ์ดํฐ๋ฅผ ๊ตฌ์ฑํ๋ ํจํด. ํก์ฌ ์์์ ์ ๊ฐ ๊ณ ๊ฐ์ด ์์์ ์ฃผ๋ฌธํ๋ฉด ์จ์ดํฐ๊ฐ ์๋ฆฌ์ฌ๋ก๋ถํฐ ํด๋น ์์์ ๋ฐ์์ ์ ๊ณตํ๋ ๊ฒ๊ณผ ๊ฐ์. ๊ณ ๊ฐ์ ์์์ ์์ธํ ์กฐ๋ฆฌ๋ฐฉ๋ฒ์ด๋ ์ฌ๋ฃ๋ ์ ํ์๊ฐ ์์.
- ๋ฐํ์ ์ด๊ธฐํ์ ์๋น์ค๋ก์ผ์ดํฐ์ ๊ฐ๊ฐ ๋ก๊ทธ์๋น์ค, ๋ถ์์๋น์ค, ์
์ ์๋น์ค๋ฅผ ๋ฑ๋กํด ๋๊ณ ๊ฒ์ ์ค์ ์ฌ์ฉ์๊ฐ ์
์ ์ ๋ฌ์ฑํ์ ๊ฒฝ์ฐ ํ๋ฉด์ ๋ก๊ทธ๋ฉ์์ง๋ฅผ ๋ฟ๋ฆฌ๊ณ , ๋ถ์์๋ฒ์ ํด๋น ํ๋์ ๊ธฐ๋กํ๊ณ , ์ฌ์ฉ์ ์
์ ์๋ฒ์ ํด๋น ํ์๋ฅผ ๊ธฐ๋กํ๊ธฐ์ํด, ์ด 3๊ฐ์ ์๋น์ค๋ฅผ ์๋น์ค๋ก์ผ์ดํฐ๋ก๋ถํฐ "์ธํฐํ์ด์ค"๋ก ๋ฐ์ ํด๋น ์ธํฐํ์ด์ค์ ์ด๋ฒคํธ๋ฅผ ํธ์ถํ๋ฉด ๋จ.
์ฐ๊ณ ๋ณด๋ ์กด๋ ๋ง๋ค.
์ ๋ณด๋ฉด ๋ช ๊ฐ์ ํจํด๋ค์๊ฒ์ ๊ณตํต์ ์ธ ํจํด(?)๋ ์ฐพ์ ์ ์๊ณ , ๋น์ทํ๋ฉด์๋ ์ฐ์์๊ฐ ๋ค๋ฅธ ํจํด๋ค๋ ์์.
์์งํ ์ ๋ฐ ๋์์ธ ํจํด ํ๋ํ๋ ์๊ฐํ๋ฉด์ ์ง๋ ๊ฐ๋ฐ์๋ค ๊ฑฐ์ ์๋ค๊ณ ์๊ฐํจ.
๊ทธ๋ฌ๋ ์๋ฉด ์ข์์ ๋์ ๊ฒ ์๊ณ . ๋ค๋ค ๋ฌด์์์ ์ผ๋ก ๊ฐ๋ฐํ๋ฉด์ ์ฐ๋ ๊ฒ ๊ฐ๋ค. ์งฌ์์ ๋์ค๋ ๋ฐ์ด๋ธ์ฒ๋ผ ใ
๊ทธ๋ฆฌ๊ณ ์ด ํจํด๋ค์ ๋๋ถ๋ถ OOP(๊ฐ์ฒด์งํฅํ๋ก๊ทธ๋๋ฐ)์์ ํ์๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ผ๋ถ ๊ฒ์ ์ํคํ ์ณ๋ ํจ๋ฌ๋ค์์์ ์ ๋ง์ ์ ์๋ค.
(๊ฐ๋ น FP๋ DOD, ECS)
์ ์ฝ์์ด
์ด๋ค์ฑ ์?
์ฑ ๊ด๊ณ ์ธ ๊ฒ ๊ฐ์์ ์ ๋ชฉ ์ ๋ฌ์์. ์์ด ์ ๋ชฉ์ Game Development Patterns with Unity ์ด๊ณ ๋ฒ์ญํ๋ ์์. ๋ ๋ฒ์ญํ ์ฝ์.
๊ฐ์จ๊ฐ์จ
https://youtu.be/hQE8lQk9ikE
์ด์
์ด์์ ๋ดค๋๋ฐ ์ด๊ฒ๋ ๋์๋ ๊ฒ๊ฐ์์ : )
๋กํ! ์์๋ ๊ฐ์ด ์์ด์ ์ข๋ค. ์ฐธ๊ณ ๋ก ํด๋น ์์์๋ Singleton Pattern ,Observer Pattern, Command Pattern ,Component Pattern, Flyweight Pattern, State Pattern ์ด ๋์ค๋ ๊ถ๊ธํ๋ฉด ํ๋ฒ ๋ณด์! ๋ ์ง๊ธ ๋ณด๋ ์ค
๋ช ๊ฐ์ง๋ ์ค๊ธฐ์ฐจ๊ฒ ์ฐ์ง ใ ใ
์ ๋ฆฌ ๊น๋ํ๋ค ใ ใ ๊ฐ์ถ
ใฑใ ๋ ๋ฐ์ผ์ !!!! ใณใณ
https://github.com/Habrador/Unity-Programming-Patterns
์ด ๊ธ์ด ์ข์์ ์ ์์๋ก ๊ฒ์์์ ์ด๋ค์์ผ๋ก ์ฌ์ฉ๋๋์ง ์ ์ ํ์์ด์ ๋์์ด ๋ ๋๋๋ฏ ๊ทธ๋ฅ ํจํด๋ง ๋ค์ผ๋ฉด ๊ฒ์์์ ์ด๋ป๊ฒ ์ฌ์ฉ๋๊ณ ์๋์ง ๋ง์ฐํ๊ฒฝ์ฐ๋ ์ข ์ข ์๊ฑฐ๋
์ ์ฒ๊ธฐ ๊ฐค์ธ์ค
๊ฒ์ ํ๋ก๊ทธ๋๋ฐ ํจํด <์ด ์ฑ ์ผ๋ง์ ์ ์ฝ์๋๋ฐ ์ข์์
๋ง์ด ์ด๋ค ์ค๋ฌด๋ ์ธ๋๋
๋ญ์๋ฆฐ์ง - dc App
์ต๊ทผ์ ๋์์ธํจํด ๊ด์ฌ ๊ฐ์ ธ์ ๊ฒ์ํ๋ค๊ฐ ์ฐพ์๋๋ฐ ๋๋ถ์ ์ฑ ํ๋ ์์๊ฐ ใณ