SlideShare a Scribd company logo
๊ฒŒ์ž„ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจํ„ด
์ฟ ์žฌ์•„์ด
๊น€์žฌ๊ฒฝ
์ฃผ์ œ ์„ ์ • ์ด์œ 
โ€ข ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ์œ ์ง€ ๋ณด์ˆ˜๊ฐ€ ์ข‹๊ฒŒ ํ• ๊นŒ?
โ€ข ๋งŒ์•ฝ ์ฒ˜์Œ๋ถ€ํ„ฐ ์„ค๊ณ„๋ฅผ ํ•œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ?
โ€ข ์ฝ”๋”ฉ ํ•  ๋•Œ๋งˆ๋‹ค ํ•ญ์ƒ ํ•˜๋˜ ์ƒ๊ฐ์ด์ง€๋งŒ ๊ณต๋ถ€ํ•œ ์ ์€ ์—†์Œ
โ€ข ๊ทธ๋ž˜์„œ ๊ณต๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค
โ€ข ์„œ์ ์—์„œ ์šฐ์—ฐํžˆ ๋ฐœ๊ฒฌํ•œ ์ฑ…
โ€ข ์ธํ„ฐ๋„ท์—์„œ ์š”์•ฝ ๊ธ€์„ ๋ดค์—ˆ๋Š”๋ฐ
๋‚ด์šฉ์ด ๊ดœ์ฐฎ์•˜๋˜ ๊ฑธ๋กœ ๊ธฐ์–ต
โ€ข ๊ด€์‹ฌ์žˆ๋Š” ์ฃผ์ œ์ด๊ธฐ๋„ ํ•ด์„œ ๊ตฌ์ž…
โ€ข ์ด๋Ÿฐ ์‚ฌ๋žŒ์—๊ฒŒ ์ถ”์ฒœ
1. ๋””์ž์ธ ํŒจํ„ด ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ์‹ถ์€ ๋ถ„
2. ์•„์ง ๋””์ž์ธ ํŒจํ„ด์— ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ๋ถ„
โ€ข ์ฑ… ๋‚ด์šฉ์ด ๋งŽ์ง€ ์•Š๊ณ (400p)
๋ฌธ์ฒด๊ฐ€ ๋”ฑ๋”ฑํ•˜์ง€ ์•Š์•„์„œ ์ฝ๊ธฐ ํŽธํ•จ
โ€ข ๋””์ž์ธ ํŒจํ„ด ์ž…๋ฌธ์„œ๋กœ ์ ์ ˆํ•  ๋“ฏ
๋‹จ, ๋‹ค๋ฅธ ๋””์ž์ธ ํŒจํ„ด ์ฑ…๊ณผ ๊ฐ™์ด ๋ณผ ๊ฒƒ
๋ชฉ์ฐจ
1. ์‹ฑ๊ธ€ํ„ด (Singleton)
2. ์ƒํƒœ (State)
3. ์ปดํฌ๋„ŒํŠธ (Component)
์‹ฑ๊ธ€ํ„ด
Singletom
์‹ฑ๊ธ€ํ„ด์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋А๋‚€์ 
โ€ข ์‹ฑ๊ธ€ํ„ด์„ ๋„ˆ๋ฌด ๋‚จ๋ฐœํ•˜๋Š”๊ฑฐ ์•„๋‹Œ๊ฐ€?
โ€ข ์‹ฑ๊ธ€ํ„ด์˜ ๋ฌธ์ œ์ ์€ ๋ฌด์—‡์ธ๊ฐ€?
โ€ข ์‹ฑ๊ธ€ํ„ด์˜ ๋Œ€์•ˆ์€ ์–ด๋–ค๊ฒŒ ์žˆ๋Š”๊ฐ€?
์‹ฑ๊ธ€ํ„ด์ด๋ž€?
1. ํ•œ ๊ฐœ์˜ ์ธ์Šคํ„ด์Šค๋งŒ์„ ๊ฐ–๋„๋ก ๋ณด์žฅ
โ€ข ์ธ์Šคํ„ด์Šค๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ๋ฉด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์ƒํ™ฉ์ด ์ข…์ข… ์žˆ๋‹ค
(์™ธ๋ถ€ ์‹œ์Šคํ…œ๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฉด์„œ ์ „์—ญ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํด๋ž˜์Šค)
โ€ข ex) ํŒŒ์ผ ์‹œ์Šคํ…œ API
์‹ฑ๊ธ€ํ„ด์ด๋ž€?
2. ์ „์—ญ์ ์ธ ์ ‘๊ทผ์ ์„ ์ œ๊ณต
โ€ข ๋ณดํ†ต ์ƒ์„ฑ์ž๋ฅผ private๋กœ ํ•˜์—ฌ ์ธ์Šคํ„ด์Šค๋ฅผ ๋”ฐ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ
์ธ์Šคํ„ด์Šค๋ฅผ ์ „์—ญ์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณต
์‹ฑ๊ธ€ํ„ด์ด๋ž€?
โ€ข ์ƒ์„ฑ์ž๊ฐ€ private๋ผ ๋ฐ–์—์„œ ์ƒ์„ฑ X
(ํ•œ ๊ฐœ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ณด์žฅ)
โ€ข instance static ํ•จ์ˆ˜๋กœ ์–ด๋””์„œ๋‚˜
์ ‘๊ทผ ๊ฐ€๋Šฅ
โ€ข ํ•„์š”ํ•  ๋•Œ๊นŒ์ง€ ์ดˆ๊ธฐํ™”๋ฅผ ๋Šฆ์ถœ ์ˆ˜ ์žˆ์Œ
(Lazy Initialization)
์‹ฑ๊ธ€ํ„ด์˜ ์žฅ์ 
1. ํ•„์š”ํ•  ๋•Œ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค
โ€ข ํ•ด๋‹น ์‹ฑ๊ธ€ํ„ด์„ ํ•œ ๋ฒˆ๋„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ์™€ CPU ์‚ฌ์šฉ๋Ÿ‰์„
์ค„์ผ ์ˆ˜ ์žˆ๋‹ค
2. ๋Ÿฐํƒ€์ž„์— ์ดˆ๊ธฐํ™”๋œ๋‹ค
โ€ข ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋œ ํ›„์— ์•Œ ์ˆ˜ ์žˆ๋Š” ์ •๋ณด๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค
์‹ฑ๊ธ€ํ„ด์˜ ์žฅ์ 
3. ์ƒ์†ํ•  ์ˆ˜ ์žˆ๋‹ค
โ€ข ๋งŒ์•ฝ ํŒŒ์ผ ์‹œ์Šคํ…œ ์‹ฑ๊ธ€ํ„ด์ด ํฌ๋กœ์Šค ํ”Œ๋žซํผ์„ ์ง€์›ํ•ด์•ผ ํ•œ๋‹ค๋ฉด
์ถ”์ƒ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“  ๋’ค ๊ตฌ์ฒด ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค
์‹ฑ๊ธ€ํ„ด์˜ ์žฅ์ 
3-1. ์ƒ์œ„ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ ๋‹ค
์‹ฑ๊ธ€ํ„ด์˜ ์žฅ์ 
3-2. ํ”Œ๋žซํผ๋ณ„๋กœ ํ•˜์œ„ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ ๋‹ค
์‹ฑ๊ธ€ํ„ด์˜ ์žฅ์ 
3-3. FileSystem ํด๋ž˜์Šค๋ฅผ ์‹ฑ๊ธ€ํ„ด์œผ๋กœ ๋งŒ๋“ ๋‹ค
์‹ฑ๊ธ€ํ„ด์˜ ์žฅ์ 
3-4. ์ธ์Šคํ„ด์Šค ์ƒ์„ฑํ•˜๋Š” ๋ถ€๋ถ„์ด ํ•ต์‹ฌ
์™€! ์งฑ ์ข‹๋„ค! ์ž์ฃผ ์“ฐ๋ฉด ์ข‹์„ ๋“ฏ ใ…Žใ…Ž ์™„๋ฒฝํ•˜๋„ค
์‹ฑ๊ธ€ํ„ด์˜ ๋‹จ์ 
โ€ข ์ „์—ญ ๋ณ€์ˆ˜์ด๋‹ค
์‹ฑ๊ธ€ํ„ด์˜ ๋‹จ์  1
1. ์ „์—ญ ๋ณ€์ˆ˜๋Š” ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ต๊ฒŒ ํ•œ๋‹ค
โ€ข SomeClass::getSomeGlobalData() ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด
์ „์ฒด ์ฝ”๋“œ์—์„œ SomeGlobalData์— ์ ‘๊ทผํ•˜๋Š” ๊ณณ์„ ๋‹ค ์‚ดํŽด๋ด์•ผ
์ƒํ™ฉ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค
โ€ข ๋งŒ์•ฝ ์‚ดํŽด๋ด์•ผ ํ•œ๋‹ค๋ฉด?
Game programming patterns
์‹ฑ๊ธ€ํ„ด์˜ ๋‹จ์  1
2. ์ „์—ญ ๋ณ€์ˆ˜๋Š” ์ปคํ”Œ๋ง์„ ์กฐ์žฅํ•œ๋‹ค
โ€ข ์‹ฑ๊ธ€ํ„ด์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด #include ํ•œ ์ค„๋งŒ ์ถ”๊ฐ€ํ•ด๋„
์‹ ์ค‘ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด๋†“์€ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋”๋Ÿฝํž ์ˆ˜ ์žˆ๋‹ค
โ€ข ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ํ†ต์ œํ•จ์œผ๋กœ์จ ์ปคํ”Œ๋ง์„ ํ†ต์ œํ•  ์ˆ˜ ์žˆ๋‹ค
์‹ฑ๊ธ€ํ„ด์˜ ๋‹จ์  1
3. ์ „์—ญ ๋ณ€์ˆ˜๋Š” ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ ๊ฐ™์€ ๋™์‹œ์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์•Œ๋งž์ง€ ์•Š๋‹ค
โ€ข ๋ชจ๋“  ์Šค๋ ˆ๋“œ๊ฐ€ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ด ์ƒ๊ธด ๊ฒƒ์ด๋‹ค
โ€ข ๊ต์ฐฉ ์ƒํƒœ(Dead Lock), ๊ฒฝ์Ÿ ์ƒํƒœ(Race Condition) ๋“ฑ
์Šค๋ ˆ๋“œ ๋™๊ธฐํ™” ๋ฒ„๊ทธ๊ฐ€ ์ƒ๊ธฐ๊ธฐ ์‰ฝ๋‹ค
์‹ฑ๊ธ€ํ„ด์˜ ๋‹จ์  2
โ€ข ๋ฌธ์ œ๊ฐ€ ํ•˜๋‚˜๋ฟ์ผ ๋•Œ๋„ ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ํ’€๋ ค ๋“ ๋‹ค
(์ „์—ญ ์ ‘๊ทผ + ์ธ์Šคํ„ด์Šค ์ œํ•œ)
โ€ข Log ํด๋ž˜์Šค๊ฐ€ ์‹ฑ๊ธ€ํ„ด์œผ๋กœ ๋˜์–ด์žˆ๋‹ค๊ณ  ํ•˜์ž. ์ „์—ญ์œผ๋กœ ์ ‘๊ทผํ•˜์—ฌ ํŽธํ•˜๊ฒŒ
๋กœ๊ทธ๋ฅผ ๋‚จ๊ธธ ์ˆ˜ ์žˆ์ง€๋งŒ ๋งŒ์•ฝ ๋กœ๊ทธ๋ฅผ ์—ฌ๋Ÿฌ ํŒŒ์ผ์— ๋‚˜๋ˆ ์“ธ ์ƒํ™ฉ์ด ์˜จ๋‹ค๋ฉด?
์ธ์Šคํ„ด์Šค๋ฅผ ํ•œ ๊ฐœ๋งŒ ๋งŒ๋“ค์–ด์•ผ๋Š” ์ œ์•ฝ์ด ๋ฌธ์ œ๊ฐ€ ๋œ๋‹ค
์‹ฑ๊ธ€ํ„ด์˜ ๋‹จ์  3
โ€ข ๊ฒŒ์œผ๋ฅธ ์ดˆ๊ธฐํ™”๋Š” ์ œ์–ดํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค
โ€ข ์ฒ˜์Œ ์ดˆ๊ธฐํ™”๋ฅผ ํ•  ๋•Œ ํ”„๋ ˆ์ž„์ด ๋–จ์–ด์ง€๊ณ  ๋ ‰์ด ๊ฑธ๋ฆฐ๋‹ค๋ฉด?
์‹ฑ๊ธ€ํ„ด์˜ ๋‹จ์  3
โ€ข ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฒŒ์œผ๋ฅธ ์ดˆ๊ธฐํ™”
๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค
โ€ข ๋‹จ์ 
1. ๋‹คํ˜•์„ฑ ์‚ฌ์šฉ ๋ชป ํ•จ
2. ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ ๋ถˆ๊ฐ€๋Šฅ
๋Œ€์•ˆ
โ€ข ํด๋ž˜์Šค๊ฐ€ ๊ผญ ํ•„์š”ํ•œ๊ฐ€?
๋Œ€์•ˆ
๋Œ€์•ˆ
โ€ข ํ•œ ๊ฐœ์˜ ์ธ์Šคํ„ด์Šค๋งŒ ๊ฐ–๋„๋ก
๋ณด์žฅํ•˜๊ธฐ
โ€ข ์ „์—ญ ์ ‘๊ทผ X
๋Œ€์•ˆ
โ€ข ์ธ์Šคํ„ด์Šค์— ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•˜๊ธฐ (์ „์—ญ ์ ‘๊ทผ ๋Œ€์ฒด)
1. ๋„˜๊ฒจ์ฃผ๊ธฐ
โ€ข ํ•จ์ˆ˜์— ๊ฐ์ฒด๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด ์ธ์ˆ˜๋กœ ๋„˜๊ฒจ์ฃผ๋Š”๊ฒŒ ๊ฐ€์žฅ ์‰ฌ์šฐ๋ฉด์„œ๋„
์ตœ์„ ์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.
โ€ข ์ธ์ˆ˜๋กœ ๋„˜๊ฒจ์ฃผ๋Š” ๊ฒŒ ์ ์ ˆํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค. ์ด๋Ÿฌ๋ฉด ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„
์ฐพ์•„๋ณด์ž
๋Œ€์•ˆ
โ€ข ์ธ์Šคํ„ด์Šค์— ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•˜๊ธฐ
2. ์ƒ์œ„ ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ์–ป๊ธฐ
๋Œ€์•ˆ
โ€ข ์ธ์Šคํ„ด์Šค์— ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•˜๊ธฐ
3. ์ด๋ฏธ ์ „์—ญ์ธ ๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ ์–ป๊ธฐ
๋Œ€์•ˆ
โ€ข ์ธ์Šคํ„ด์Šค์— ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•˜๊ธฐ
3. ์ด๋ฏธ ์ „์—ญ์ธ ๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ ์–ป๊ธฐ
โ€ข ๋‚˜์ค‘์— Game ์ธ์Šคํ„ด์Šค๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์ง€์›ํ•˜๋„๋ก ๊ตฌ์กฐ๋ฅผ ๋ฐ”๊ฟ”๋„
Log, FileSystem, AudioPlayer๋Š” ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค
โ€ข Game ํด๋ž˜์Šค์— ์ปคํ”Œ๋ง๋˜๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.
์‚ฌ์šด๋“œ๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ์–ด๋„ Game ํด๋ž˜์Šค๋ฅผ ์•Œ์•„์•ผ ํ•œ๋‹ค
๊ฒฐ๋ก 
โ€ข ์‹ฑํดํ„ด์„ ์“ฐ์ง€ ๋ง์ž๋Š” ๊ฒŒ ์•„๋‹ˆ๋‹ค
โ€ข ์‹ฑ๊ธ€ํ„ด์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฉด ๋‹จ์ ๊ณผ ๋Œ€์•ˆ์„ ํ•œ ๋ฒˆ ์ƒ๊ฐํ•ด ๋ณด์ž
์ƒํƒœ
State
์ƒํƒœ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋А๋‚€์ 
โ€ข ๊ฐ์ฒด ์ƒํƒœ๋ณ„๋กœ ํด๋ž˜์Šค๊ฐ€ ๋ถ„๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค
โ€ข State๊ฐ€ ๋งค์šฐ ๋งŽ์•„์ง„๋‹ค๋ฉด?
โ€ข ์—ฌ๋Ÿฌ ๊ฐœ์˜ State๊ฐ€ ๊ณต์กดํ•ด์•ผ ํ•œ๋‹ค๋ฉด?
์ถ”์–ต์˜ ๊ฒŒ์ž„ ๋งŒ๋“ค๊ธฐ
โ€ข ๊ฐ„๋‹จํ•œ ํšก์Šคํฌ๋กค ํ”Œ๋žซํฌ๋จธ๋ฅผ ๋งŒ๋“ ๋‹ค๊ณ  ํ•˜์ž.
๋จผ์ € B๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์ ํ”„ํ•ด์•ผ ํ•œ๋‹ค
โ€ข ๋ฒ„๊ทธ๋ฅผ ๋ˆˆ์น˜ ์ฑ˜๋Š”๊ฐ€?
์ถ”์–ต์˜ ๊ฒŒ์ž„ ๋งŒ๋“ค๊ธฐ
โ€ข ๊ณต์ค‘์— ์žˆ๋Š” ๋™์•ˆ B๋ฅผ ์—ฐํƒ€ํ•˜๋ฉด
๊ณ„์† ๋–  ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค
โ€ข isJumping_ bool ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๋ฉด
๊ฐ„๋‹จํžˆ ๊ณ ์น  ์ˆ˜ ์žˆ๋‹ค
์ถ”์–ต์˜ ๊ฒŒ์ž„ ๋งŒ๋“ค๊ธฐ
โ€ข ๋ฌดํ•œ ์ ํ”„ ๋ฒ„๊ทธ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค
โ€ข ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ๋•…์— ์žˆ์„ ๋•Œ
์•„๋ž˜ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์—Ž๋“œ๋ฆฌ๊ณ 
๋ฒ„ํŠผ์„ ๋–ผ๋ฉด ์ผ์–ด์„œ๋Š” ๊ธฐ๋Šฅ์„
์ถ”๊ฐ€ํ•ด๋ณด์ž
์ถ”์–ต์˜ ๊ฒŒ์ž„ ๋งŒ๋“ค๊ธฐ
โ€ข ๋ฒ„๊ทธ๋ฅผ ์ฐพ์•„ ๋ƒˆ๋Š”๊ฐ€?
์ถ”์–ต์˜ ๊ฒŒ์ž„ ๋งŒ๋“ค๊ธฐ
1. ์•„๋ž˜ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ ๋’ค
2. B ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์—Ž๋“œ๋ฆฐ ์ƒํƒœ์—์„œ
์ ํ”„ํ•˜๊ณ  ๋‚˜์„œ
3. ๊ณต์ค‘์—์„œ ์•„๋ž˜ ๋ฒ„ํŠผ์„ ๋–ผ๋ฉด
4. ์ ํ”„ ์ค‘์ธ๋ฐ๋„ ๋•…์— ์„œ ์žˆ๋Š”
๋ชจ์Šต์œผ๋กœ ๋ณด์ธ๋‹ค
โ€ข ํ”Œ๋ž˜๊ทธ ๋ณ€์ˆ˜๊ฐ€ ๋” ํ•„์š”ํ•˜๋‹ค
์ถ”์–ต์˜ ๊ฒŒ์ž„ ๋งŒ๋“ค๊ธฐ
โ€ข ๋ญ”๊ฐ€ ๋ฐฉํ–ฅ์„ ์ž˜๋ชป ์žก์€ ๊ฒŒ ๋ถ„๋ช…ํ•˜๋‹ค
โ€ข ์ฝ”๋“œ๊ฐ€ ์–ผ๋งˆ ์—†๋Š”๋ฐ๋„ ์กฐ๊ธˆ๋งŒ ๊ฑด๋“œ๋ฆฌ๋ฉด
๋ง๊ฐ€์ง„๋‹ค
โ€ข ๋” ๋งŽ์€ ์ƒํƒœ๊ฐ€ ์ถ”๊ฐ€๋œ๋‹ค๋ฉด?
Game programming patterns
์ถ”์–ต์˜ ๊ฒŒ์ž„ ๋งŒ๋“ค๊ธฐ
โ€ข Flowchart๋ฅผ ๊ทธ๋ ค๋ณด์ž
โ€ข ์œ ํ•œ ์ƒํƒœ ๊ธฐ๊ณ„(FSM)๊ฐ€
๋งŒ๋“ค์–ด์กŒ๋‹ค
์ถ”์–ต์˜ ๊ฒŒ์ž„ ๋งŒ๋“ค๊ธฐ
โ€ข FSM ์š”์ 
1. ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” โ€˜์ƒํƒœโ€™๊ฐ€
ํ•œ์ •๋œ๋‹ค
2. ํ•œ ๋ฒˆ์— โ€˜ํ•œ ๊ฐ€์ง€โ€™ ์ƒํƒœ๋งŒ
๋  ์ˆ˜ ์žˆ๋‹ค
3. โ€˜์ž…๋ ฅโ€™์ด๋‚˜ โ€˜์ด๋ฒคํŠธโ€™๊ฐ€
๊ธฐ๊ณ„์— ์ „๋‹ฌ๋œ๋‹ค
4. ๊ฐ ์ƒํƒœ์—์„œ๋Š” ์ž…๋ ฅ์— ๋”ฐ๋ผ
๋‹ค๋ฅธ ์ƒํƒœ๋กœ ๋ฐ”๋€Œ๋Š” โ€˜์ „์ดโ€™๊ฐ€ ์žˆ๋‹ค
์—ด๊ฑฐํ˜•๊ณผ ๋‹ค์ค‘ ์„ ํƒ๋ฌธ
โ€ข bool ๊ฐ’ ์กฐํ•ฉ์ด ์œ ํšจํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค
ex) isJumping๊ณผ isDucking์€ ๋™์‹œ์— ์ฐธ์ด ๋  ์ˆ˜ ์—†๋‹ค
โ€ข ์—ฌ๋Ÿฌ ํ”Œ๋ž˜๊ทธ ๋ณ€์ˆ˜ ์ค‘์—์„œ ํ•˜๋‚˜๊ฐ€ ์ฐธ์ผ ๋•Œ๊ฐ€ ๋งŽ๋‹ค๋ฉด ์—ด๊ฑฐํ˜•(Enum)์ด
ํ•„์š”ํ•˜๋‹ค๋Š” ์‹ ํ˜ธ๋‹ค
โ€ข ์˜ˆ์ œ์—์„œ๋Š” FSM ์ƒํƒœ๋ฅผ ์—ด๊ฑฐํ˜•์œผ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค
์—ด๊ฑฐํ˜•๊ณผ ๋‹ค์ค‘ ์„ ํƒ๋ฌธ
์—ด๊ฑฐํ˜•๊ณผ ๋‹ค์ค‘ ์„ ํƒ๋ฌธ
โ€ข ๋ถ„๊ธฐ๋ฌธ์„ ๋‹ค ์—†์• ์ง„ ๋ชปํ–ˆ์ง€๋งŒ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•  ์ƒํƒœ ๋ณ€์ˆ˜๋ฅผ ํ•˜๋‚˜๋กœ
์ค„์˜€๋‹ค(state_ ๋ณ€์ˆ˜)
โ€ข ์—ด๊ฑฐํ˜• ๋งŒ์œผ๋กœ๋Š” ๋ถ€์กฑํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์ด๋™์„ ๊ตฌํ˜„ํ•˜๋˜, ์—Ž๋“œ๋ ค ์žˆ์œผ๋ฉด
๊ธฐ๊ฐ€ ๋ชจ์—ฌ์„œ ๋†“๋Š” ์ˆœ๊ฐ„ ํŠน์ˆ˜ ๊ณต๊ฒฉ์„ ์  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ ๋‹ค๊ณ  ํ•ด๋ณด์ž
์—ด๊ฑฐํ˜•๊ณผ ๋‹ค์ค‘ ์„ ํƒ๋ฌธ
์—ด๊ฑฐํ˜•๊ณผ ๋‹ค์ค‘ ์„ ํƒ๋ฌธ
1. ๊ธฐ ๋ชจ์œผ๊ธฐ ๊ณต๊ฒฉ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ํ•จ์ˆ˜ 2๊ฐœ๋ฅผ ์ˆ˜์ •ํ–ˆ๋‹ค
2. ์—Ž๋“œ๋ฆฌ๊ธฐ ์ƒํƒœ์—์„œ๋งŒ ์˜๋ฏธ ์žˆ๋Š” chargeTime ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ–ˆ๋‹ค
โ€ข ์ด๊ฒƒ๋ณด๋‹ค๋Š” ๋ชจ๋“  ์ฝ”๋“œ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๊ณณ์— ๋ชจ์•„๋‘˜ ์ˆ˜ ์žˆ๋Š” ๊ฒŒ ๋‚ซ๋‹ค
์ƒํƒœ ํŒจํ„ด
โ€ข ์ƒํƒœ์— ์˜์กดํ•˜๋Š” ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ฐ€์ƒ ํ•จ์ˆ˜๋กœ ๋งŒ๋“ ๋‹ค
์ƒํƒœ ํŒจํ„ด
โ€ข ์ƒํƒœ๋ณ„๋กœ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•œ๋‹ค
โ€ข chargeTIme_์€ ์—Ž๋“œ๋ฆฌ๊ธฐ ์ƒํƒœ์—์„œ๋งŒ ์˜๋ฏธ ์žˆ๋‹ค๋Š” ์ ์„ ๋ถ„๋ช…ํ•˜๊ฒŒ ๋ณด์—ฌ์ค€๋‹ค
์ƒํƒœ ํŒจํ„ด
โ€ข Heroine ํด๋ž˜์Šค์— ํ˜„์žฌ ์ƒํƒœ ๊ฐ์ฒด
ํฌ์ธํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค
โ€ข ์ƒํƒœ๋ฅผ ๋ฐ”๊พธ๋ ค๋ฉด state_์—
HeroineState๋ฅผ ์ƒ์†๋ฐ›์€
๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•˜๋ฉด ๋œ๋‹ค
์ƒํƒœ ๊ฐ์ฒด๋Š” ์–ด๋””์— ๋‘ฌ์•ผ ํ• ๊นŒ?
โ€ข ์ •์  ๊ฐ์ฒด
โ€ข ์ƒํƒœ ๊ฐ์ฒด์— ํ•„๋“œ๊ฐ€ ๋”ฐ๋กœ ์—†๋‹ค๋ฉด
์ธ์Šคํ„ด์Šค๋Š” ํ•˜๋‚˜๋งŒ ์žˆ์œผ๋ฉด ๋œ๋‹ค
์ƒํƒœ ๊ฐ์ฒด๋Š” ์–ด๋””์— ๋‘ฌ์•ผ ํ• ๊นŒ?
โ€ข ์ „์ด ํ•  ๋•Œ๋งˆ๋‹ค ์ƒํƒœ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ ๋‹ค
์ž…์žฅ๊ณผ ํ‡ด์žฅ
โ€ข ์ƒํƒœ ํŒจํ„ด์˜ ๋ชฉํ‘œ๋Š” ๊ฐ™์€ ์ƒํƒœ์— ๋Œ€ํ•œ ๋ชจ๋“  ๋™์ž‘๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ
ํด๋ž˜์Šค ํ•˜๋‚˜์— ์บก์Аํ™”ํ•˜๋Š” ๊ฒƒ์ด๋‹ค
โ€ข ์ง€๊ธˆ๊นŒ์ง€๋Š” ์ด์ „ ์ƒํƒœ์—์„œ ์Šคํ”„๋ผ์ดํŠธ๋ฅผ ๋ณ€๊ฒฝํ–ˆ๋‹ค
(DuckingState์—์„œ IMAGE_STAND๋กœ ๋ณ€๊ฒฝ, 51p ์ขŒ์ธก ์‚ฌ์ง„)
โ€ข ์ด๋ณด๋‹ค๋Š” ๊ฐ™์€ ์ƒํƒœ์—์„œ ๊ทธ๋ž˜ํ”ฝ๊นŒ์ง€ ์ œ์–ดํ•˜๋Š” ๊ฒŒ ๋ฐ”๋žŒ์งํ•˜๋‹ค
์ด๋ฅผ ์œ„ํ•ด ์ž…์žฅ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์ž
์ž…์žฅ๊ณผ ํ‡ด์žฅ
์ž…์žฅ๊ณผ ํ‡ด์žฅ
โ€ข Stand ์ƒํƒœ๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด Stand ์ƒํƒœ๊ฐ€ ์•Œ์•„์„œ ๊ทธ๋ž˜ํ”ฝ๊นŒ์ง€ ์ฑ™๊ธด๋‹ค
โ€ข ์ด์ „ ์ƒํƒœ์™€๋Š” ์ƒ๊ด€์—†์ด ํ•ญ์ƒ ๊ฐ™์€ ์ž…์žฅ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋œ๋‹ค๋Š” ๊ฒƒ๋„ ์žฅ์ 
โ€ข ์ƒˆ๋กœ์šด ์ƒํƒœ๋กœ ๊ต์ฒด๋˜๊ธฐ ์ง์ „์— ํ˜ธ์ถœ๋˜๋Š” ํ‡ด์žฅ๋„ ์ด๋Ÿฐ ์‹์œผ๋กœ ํ•˜๋ฉด ๋œ๋‹ค
๋ณ‘ํ–‰ ์ƒํƒœ ๊ธฐ๊ณ„
โ€ข ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ด์„ ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ ๋‹ค๊ณ  ํ•ด๋ณด์ž
โ€ข ์ด์„ ์žฅ์ฐฉํ•œ ํ›„์—๋„ ๋‹ฌ๋ฆฌ๊ธฐ, ์ ํ”„, ์—Ž๋“œ๋ฆฌ๊ธฐ ๋™์ž‘์„ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค
๊ทธ๋Ÿฌ๋ฉด์„œ ์ด๋„ ์  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค
โ€ข FSM ๋ฐฉ์‹์€ ๋ชจ๋“  ์ƒํƒœ๋ฅผ ์„œ๊ธฐ, ๋ฌด์žฅํ•œ ์ฑ„๋กœ ์„œ๊ธฐ, ์ ํ”„, ๋ฌด์žฅํ•œ ์ฑ„๋กœ ์ ํ”„
๊ฐ™์€ ์‹์œผ๋กœ ๋ฌด์žฅ, ๋น„๋ฌด์žฅ์— ๋งž์ถฐ 2๊ฐœ์”ฉ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค
โ€ข ์ด ๋ฌธ์ œ๋Š” ์ƒํƒœ ๊ธฐ๊ณ„๋ฅผ ๋‘˜๋กœ ๋‚˜๋ˆ„๋ฉด ๋œ๋‹ค
๋ณ‘ํ–‰ ์ƒํƒœ ๊ธฐ๊ณ„
๋ณ‘ํ–‰ ์ƒํƒœ ๊ธฐ๊ณ„
โ€ข ๋‘ ์ƒํƒœ ๊ธฐ๊ณ„๊ฐ€ ์„œ๋กœ ์ „ํ˜€ ์—ฐ๊ด€์ด ์—†๋‹ค๋ฉด ์ข‹์€ ๋ฐฉ๋ฒ•์ด ๋  ์ˆ˜ ์žˆ๋‹ค
โ€ข ํ˜„์‹ค์ ์œผ๋กœ๋Š” ์ ํ”„ ๋„์ค‘์—๋Š” ์ด์„ ๋ชป ์œ๋‹ค๋Š” ์‹์œผ๋กœ ๋ณต์ˆ˜์˜ ์ƒํƒœ ๊ธฐ๊ณ„๊ฐ€
์ƒํ˜ธ์ž‘์šฉํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค
โ€ข ์ด๋ฅผ ์œ„ํ•ด ์–ด๋–ค ์ƒํƒœ ์ฝ”๋“œ(์ด)์—์„œ ๋‹ค๋ฅธ ์ƒํƒœ ๊ธฐ๊ณ„์˜ ์ƒํƒœ(์ ํ”„)๊ฐ€ ๋ฌด์—‡์ธ์ง€๋ฅผ
๊ฒ€์‚ฌํ•˜๋Š” ์ง€์ €๋ถ„ํ•œ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค ์ผ์ด ์ƒ๊ธธ ์ˆ˜๋„ ์žˆ๋‹ค
๊ณ„์ธตํ˜• ์ƒํƒœ ๊ธฐ๊ณ„
โ€ข ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์„œ๊ธฐ, ๊ฑท๊ธฐ, ๋‹ฌ๋ฆฌ๊ธฐ, ๋ฏธ๋„๋Ÿฌ์ง€๊ธฐ ๊ฐ™์€ ์ƒํƒœ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์ž
โ€ข ์œ„ ์ƒํƒœ์—์„œ๋Š” ๋ชจ๋‘ B ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์ ํ”„ํ•˜๊ณ , ์•„๋ž˜ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด
์—Ž๋“œ๋ ค์•ผ ํ•œ๋‹ค
โ€ข FSM ๋ฐฉ์‹์€ ๊ฐ ์ƒํƒœ๋งˆ๋‹ค ์ฝ”๋“œ๋ฅผ ์ค‘๋ณตํ•ด ๋„ฃ์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ณด๋‹ค๋Š” ํ•œ ๋ฒˆ๋งŒ
๊ตฌํ˜„ํ•˜๊ณ  ๋‹ค๋ฅธ ์ƒํƒœ์—์„œ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ๋‚ซ๋‹ค
โ€ข ์ƒ์†์„ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค
๊ณ„์ธตํ˜• ์ƒํƒœ ๊ธฐ๊ณ„
Push-Down Automata
โ€ข FSM์—์„œ๋Š” ํ˜„์žฌ ์ƒํƒœ๋Š” ์•Œ ์ˆ˜ ์žˆ์ง€๋งŒ ์ด์ „ ์ƒํƒœ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ ์ˆ˜ ์—†๋‹ค
โ€ข ์‚ฌ์ง„์˜ ์Šคํ…Œ์ด์ง€ ํ™”๋ฉด์„
๋กœ๋น„์—์„œ๋„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ณ 
ํ€˜์ŠคํŠธ ํ™”๋ฉด์—์„œ๋„ ์ ‘๊ทผํ•  ์ˆ˜
์žˆ๋‹ค๋ฉด?
โ€ข ์ด์ „ ํ™”๋ฉด์œผ๋กœ ์–ด๋–ป๊ฒŒ
๋Œ์•„๊ฐˆ ๊ฒƒ์ธ๊ฐ€?
Push-Down Automata
โ€ข ์ƒํƒœ๋ฅผ ์Šคํƒ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋ฉด ๋œ๋‹ค
์–ธ์ œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๊ฐ€?
โ€ข ๋‚ด๋ถ€ ์ƒํƒœ์— ๋”ฐ๋ผ ๊ฐ์ฒด ๋™์ž‘์ด ๋ฐ”๋€” ๋•Œ
โ€ข ์ด๋Ÿฐ ์ƒํƒœ๊ฐ€ ๋งŽ์ง€ ์•Š์€ ์„ ํƒ์ง€๋กœ ๋ถ„๋ช…ํ•˜๊ฒŒ ๊ตฌ๋ถ„๋  ์ˆ˜ ์žˆ์„ ๋•Œ
โ€ข ๊ฐ์ฒด๊ฐ€ ์ž…๋ ฅ์ด๋‚˜ ์ด๋ฒคํŠธ์— ๋”ฐ๋ผ ๋ฐ˜์‘ํ•  ๋•Œ
๊ฒŒ์ž„ AI์—์„œ๋Š”?
โ€ข ์‚ฌ์‹ค FSM์„ ์ฒ˜์Œ ์ ‘ํ•œ ๊ฑด ๊ฒŒ์ž„ AI๋ฅผ ๊ณต๋ถ€ํ–ˆ์„ ๋•Œ
โ€ข ๊ทผ๋ฐ ์š”์ฆ˜์€ ์•ˆ ์“ด๋‹ค๊ณ  ํ•˜๋”๋ผโ€ฆ
โ€ข Behavior Tree ๋‚˜ Planning System์„ ๋” ๋งŽ์ด ์“ด๋‹ค๊ณ  ํ•œ๋‹ค
๊ฒŒ์ž„ AI์—์„œ๋Š”?
โ€ข https://www.slideshare.net/yonghakim900/2009-ndc
์ปดํฌ๋„ŒํŠธ
Component
์ปดํฌ๋„ŒํŠธ ํŒจํ„ด์„ ์„ ํƒํ•œ ์ด์œ 
โ€ข ์ƒ์†์„ ์‚ฌ์šฉํ•ด๋ณด๋‹ˆ ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•ด ์งˆ์ˆ˜๋ก ์œ ์ง€๋ณด์ˆ˜ ํ•˜๊ธฐ๊ฐ€ ํž˜๋“ค์—ˆ์Œ
โ€ข ์ƒ์†์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์—†์„๊นŒ?
์ปดํฌ๋„ŒํŠธ ํŒจํ„ด์„ ์„ ํƒํ•œ ์ด์œ 
EDCBA
โ€ข ์ด๋Ÿฐ ์ƒ์† ๊ตฌ์กฐ์—์„œ ์ฝ”๋“œ๋ฅผ ๋ณด๊ธฐ ํž˜๋“ค ๋•Œ๊ฐ€ ์žˆ๋‹ค
๋™๊ธฐ
โ€ข ํ”Œ๋ ˆ์ด์–ด ํด๋ž˜์Šค์—์„œ๋Š” AI, ๋ฌผ๋ฆฌ, ๋ Œ๋”๋ง, ์‚ฌ์šด๋“œ ๋“ฑ์˜ ํด๋ž˜์Šค๋“ค์ด
์‹คํƒ€๋ž˜์ฒ˜๋Ÿผ ์–ฝํ˜€ ์žˆ๋‹ค
โ€ข ์ด ์ฝ”๋“œ๋ฅผ ๊ณ ์น˜๋ ค๋ฉด ๋ฌผ๋ฆฌ(collidingWithFloor), ๊ทธ๋ž˜ํ”ฝ(getRenderState),
์‚ฌ์šด๋“œ(playSound)๋ฅผ ์ „๋ถ€ ์•Œ์•„์•ผ ํ•œ๋‹ค (์ปคํ”Œ๋ง)
ํŒจํ„ด
โ€ข ์—ฌ๋Ÿฌ ๋ถ„์•ผ๋ฅผ ๋‹ค๋ฃจ๋Š” ํ•˜๋‚˜์˜ ๊ฐœ์ฒด๊ฐ€ ์žˆ๋‹ค
โ€ข ๋ถ„์•ผ๋ณ„๋กœ ๊ฒฉ๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด, ๊ฐ๊ฐ์˜ ์ฝ”๋“œ๋ฅผ ๋ณ„๋„์˜ ์ปดํฌ๋„ŒํŠธ ํด๋ž˜์Šค์— ๋‘”๋‹ค
โ€ข ์ด์ œ ๊ฐœ์ฒด ํด๋ž˜์Šค๋Š” ๋‹จ์ˆœํžˆ ์ปดํฌ๋„ŒํŠธ๋“ค์˜ ์ปจํ…Œ์ด๋„ˆ ์—ญํ• ๋งŒ ํ•œ๋‹ค
์–ธ์ œ ์“ธ ๊ฒƒ์ธ๊ฐ€?
โ€ข ๋‹ค์Œ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋งŒ์กฑํ•œ๋‹ค๋ฉด ์œ ์šฉํ•˜๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๋‹ค
1. ํ•œ ํด๋ž˜์Šค์—์„œ ์—ฌ๋Ÿฌ ๋ถ„์•ผ๋ฅผ ๊ฑด๋“œ๋ฆฌ๊ณ  ์žˆ์–ด์„œ ์ด๋“ค์„ ์„œ๋กœ ๋””์ปคํ”Œ๋ง
ํ•˜๊ณ  ์‹ถ๋‹ค
2. ํด๋ž˜์Šค๊ฐ€ ๊ฑฐ๋Œ€ํ•ด์ ธ์„œ ์ž‘์—…ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค
3. ์—ฌ๋Ÿฌ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ๊ณต์œ ํ•˜๋Š” ๋‹ค์–‘ํ•œ ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•˜๊ณ  ์‹ถ๋‹ค
๋‹จ, ์ƒ์†์œผ๋กœ๋Š” ๋”ฑ ์›ํ•˜๋Š” ๋ถ€๋ถ„๋งŒ ๊ณจ๋ผ์„œ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค
์ฃผ์˜ ์‚ฌํ•ญ
โ€ข ํด๋ž˜์Šค ํ•˜๋‚˜์— ์ฝ”๋“œ๋ฅผ ๋ชจ์•„๋†จ์„ ๋•Œ๋ณด๋‹ค ๋” ๋ณต์žกํ•ด์งˆ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค
โ€ข ํ•œ ๋ฌด๋ฆฌ์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ์•Œ๋งž๊ฒŒ ๋ฌถ์–ด์ค˜์•ผ ํ•˜๋‚˜์˜ ๊ฐœ๋…์ ์ธ
โ€˜๊ฐ์ฒดโ€™๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
โ€ข ์ปดํฌ๋„ŒํŠธ๋ผ๋ฆฌ ํ†ต์‹ ํ•˜๊ธฐ๋„ ๋” ์–ด๋ ต๊ณ  ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๋ฉ”๋ชจ๋ฆฌ ์–ด๋””์— ๋‘˜์ง€
์ œ์–ดํ•˜๋Š” ๊ฒƒ๋„ ๋” ๋ณต์žกํ•˜๋‹ค
์ฃผ์˜ ์‚ฌํ•ญ
โ€ข ์ฝ”๋“œ๋ฒ ์ด์Šค ๊ทœ๋ชจ๊ฐ€ ํฌ๋ฉด ์ด๋Ÿฐ ๋ณต์žก์„ฑ์—์„œ ์˜ค๋Š” ์†ํ•ด๋ณด๋‹ค ๋””์ปคํ”Œ๋ง๊ณผ
์ปดํฌ๋„ŒํŠธ๋ฅผ ํ†ตํ•œ ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์—์„œ ์–ป๋Š” ์ด๋“์ด ๋” ํด ์ˆ˜ ์žˆ๋‹ค
โ€ข ํ•˜์ง€๋งŒ ์ปดํฌ๋„ŒํŠธ ํŒจํ„ด์„ ์ ์šฉํ•˜๊ธฐ ์ „์— ์•„์ง ์žˆ์ง€๋„ ์•Š์€ ๋ฌธ์ œ์— ๋Œ€ํ•œ
โ€˜ํ•ด๊ฒฐ์ฑ…โ€™์„ ์˜ค๋ฒ„์—”์ง€๋‹ˆ์–ด๋งํ•˜๋ ค๋Š” ๊ฒƒ์€ ์•„๋‹Œ์ง€ ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค
์ฃผ์˜ ์‚ฌํ•ญ
โ€ข ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๋Š” ๋ฌด์—‡์ด๋“ ์ง€ ํ•˜๋ ค๋ฉด ํ•œ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ์•ผ ํ•  ๋•Œ๊ฐ€ ๋งŽ๋‹ค๋Š” ์ ์ด๋‹ค
โ€ข ๋ฌด์Šจ ์ผ์ด๋“  ์ปจํ…Œ์ด๋„ˆ ๊ฐ์ฒด์—์„œ ์›ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋ถ€ํ„ฐ ์–ป์–ด์•ผ ํ•  ์ˆ˜ ์žˆ๋‹ค
โ€ข ์„ฑ๋Šฅ์ด ๋ฏผ๊ฐํ•œ ๋‚ด๋ถ€ ๋ฃจํ”„ ์ฝ”๋“œ์—์„œ ์ด๋Ÿฐ ์‹์œผ๋กœ ํฌ์ธํ„ฐ๋ฅผ ๋”ฐ๋ผ๊ฐ€๋‹ค ๋ณด๋ฉด
์„ฑ๋Šฅ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค
ํ†ต์งœ ํด๋ž˜์Šค
โ€ข ์ปดํฌ๋„ŒํŠธ ํŒจํ„ด์„ ์•„์ง ์ ์šฉํ•˜์ง€ ์•Š์•„ ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ํด๋ž˜์Šค์— ๋‹ค ๋“ค์–ด์žˆ๋‹ค
๋ถ„์•ผ๋ณ„๋กœ ๋‚˜๋ˆ„๊ธฐ
๋ถ„์•ผ๋ณ„๋กœ ๋‚˜๋ˆ„๊ธฐ
๋ถ„์•ผ๋ณ„๋กœ ๋‚˜๋ˆ„๊ธฐ
๋ถ„์•ผ๋ณ„๋กœ ๋‚˜๋ˆ„๊ธฐ
์˜คํ† - ์บ๋ฆญํ„ฐ
โ€ข ์ปดํฌ๋„ŒํŠธ ํด๋ž˜์Šค๋ฅผ ์ถ”์ƒํ™”ํ•œ๋‹ค
์˜คํ† - ์บ๋ฆญํ„ฐ
์˜คํ† - ์บ๋ฆญํ„ฐ
์บ๋ฆญํ„ฐ์ผ ํ•„์š”๋Š” ์—†๋‹ค
โ€ข ์ด์ œ ์บ๋ฆญํ„ฐ ํด๋ž˜์Šค๋Š” ์ปดํฌ๋„ŒํŠธ ๋ฌถ์Œ์ผ ๋ฟ ์บ๋ฆญํ„ฐ์™€ ๊ด€๋ จ๋œ ์ฝ”๋“œ๊ฐ€ ์—†๋‹ค
โ€ข ๊ฒŒ์ž„์—์„œ ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” GameObject ํด๋ž˜์Šค๋กœ ๋ฐ”๊พธ๋Š” ๊ฒŒ
๋” ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค
์บ๋ฆญํ„ฐ์ผ ํ•„์š”๋Š” ์—†๋‹ค
์บ๋ฆญํ„ฐ์ผ ํ•„์š”๋Š” ์—†๋‹ค
์บ๋ฆญํ„ฐ์ผ ํ•„์š”๋Š” ์—†๋‹ค

More Related Content

PDF
Game programming patterns 2
PDF
Direct x 12 ์ดˆ๊ธฐํ™”
PDF
UE4 Garbage Collection
PDF
ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ
PPTX
๋ฆฌํ”Œ๋ ‰์…˜๊ณผ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜
PDF
Effective c++ chapter 1,2 ์š”์•ฝ
PDF
ํ…Œ๋ผ๋กœ ์‚ดํŽด๋ณธ MMORPG์˜ ๋…ผํƒ€๊ฒŸํŒ… ์‹œ์Šคํ…œ
PPTX
Effective c++ ์ •๋ฆฌ 1~2
Game programming patterns 2
Direct x 12 ์ดˆ๊ธฐํ™”
UE4 Garbage Collection
ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ
๋ฆฌํ”Œ๋ ‰์…˜๊ณผ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜
Effective c++ chapter 1,2 ์š”์•ฝ
ํ…Œ๋ผ๋กœ ์‚ดํŽด๋ณธ MMORPG์˜ ๋…ผํƒ€๊ฒŸํŒ… ์‹œ์Šคํ…œ
Effective c++ ์ •๋ฆฌ 1~2

What's hot (20)

PDF
Exception&log
PPTX
Effective C++ Chaper 1
PDF
์ด์Šน์žฌ, ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋””์Šค์–ด์…ˆ๋ธ”๋ฆฌ ๋””๋ฒ„๊น…, NDC2014
PPT
effective c++ chapter 3~4 ์ •๋ฆฌ
PPTX
Effective c++chapter3
PPTX
Effective c++chapter1 and2
PPTX
Effective c++chapter4
PPTX
Effective c++chapter8
PDF
NDC14 - ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋””์Šค์–ด์…ˆ๋ธ”๋ฆฌ ๋””๋ฒ„๊น…
PPTX
Effective c++ ์ฑ•ํ„ฐ 2 ์ •๋ฆฌ
PPTX
Effective c++ ์ •๋ฆฌ chapter 4
PPTX
Effective c++ ์ •๋ฆฌ chapter 8
PPTX
Effective c++ ์ •๋ฆฌ chapter 6
PPTX
Effective C++ ์ •๋ฆฌ chapter 3
PDF
Concurrency in action - chapter 5
PDF
5 6 1
ย 
PDF
Concurrency in action - chapter 7
PDF
์ ˆ์ฐจ์ง€ํ–ฅ vs ๊ฐ์ฒด์ง€ํ–ฅ
PDF
์‹œ์ฆŒ 2: ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์™œ์ด๋ฆฌ ํž˜๋“œ๋‚˜์š”?
PDF
แ„‹แ…กแ†ซแ„ƒแ…ณแ„…แ…ฉแ„‹แ…ตแ„ƒแ…ณ แ„†แ…ฅแ†ฏแ„แ…ตแ„‰แ…ณแ„…แ…ฆแ„ƒแ…ตแ†ผ แ„‹แ…ตแ†ธแ„†แ…ฎแ†ซ แ„‰แ…ฉแ†ผแ„’แ…งแ†ผแ„Œแ…ฎ
Exception&log
Effective C++ Chaper 1
์ด์Šน์žฌ, ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋””์Šค์–ด์…ˆ๋ธ”๋ฆฌ ๋””๋ฒ„๊น…, NDC2014
effective c++ chapter 3~4 ์ •๋ฆฌ
Effective c++chapter3
Effective c++chapter1 and2
Effective c++chapter4
Effective c++chapter8
NDC14 - ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋””์Šค์–ด์…ˆ๋ธ”๋ฆฌ ๋””๋ฒ„๊น…
Effective c++ ์ฑ•ํ„ฐ 2 ์ •๋ฆฌ
Effective c++ ์ •๋ฆฌ chapter 4
Effective c++ ์ •๋ฆฌ chapter 8
Effective c++ ์ •๋ฆฌ chapter 6
Effective C++ ์ •๋ฆฌ chapter 3
Concurrency in action - chapter 5
5 6 1
ย 
Concurrency in action - chapter 7
์ ˆ์ฐจ์ง€ํ–ฅ vs ๊ฐ์ฒด์ง€ํ–ฅ
์‹œ์ฆŒ 2: ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์™œ์ด๋ฆฌ ํž˜๋“œ๋‚˜์š”?
แ„‹แ…กแ†ซแ„ƒแ…ณแ„…แ…ฉแ„‹แ…ตแ„ƒแ…ณ แ„†แ…ฅแ†ฏแ„แ…ตแ„‰แ…ณแ„…แ…ฆแ„ƒแ…ตแ†ผ แ„‹แ…ตแ†ธแ„†แ…ฎแ†ซ แ„‰แ…ฉแ†ผแ„’แ…งแ†ผแ„Œแ…ฎ
Ad

Similar to Game programming patterns (20)

PDF
์ž„ํƒœํ˜„, ์„œ๋ฒ„์ ๊ฒ€ ์ œ๋กœ์—์˜ ๋„์ „, NDC2011
PPTX
Effective c++ 3
PDF
7 8 1
ย 
PDF
์ž„ํƒœํ˜„, MMO ์„œ๋ฒ„ ๊ฐœ๋ฐœ ํฌ์ŠคํŠธ ๋ชจํ…œ, NDC2012
PDF
์ด์Šน์žฌ, M2 AI์ฝ”๋“œ ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ ์‚ฌ๋ก€, NDC2013
PDF
Effective c++ chapter7_8_9_dcshin
PDF
1 2 1
ย 
PPTX
Effective c++ 4
PPTX
[Gpg1๊ถŒ ๋ฐ•๋ฏผ๊ทผ] 1.0 1.4 ์š”์•ฝ ์ •๋ฆฌ
PPTX
Effective c++ 2
PDF
05_๋™๊ธฐํ™”_๊ฐœ์š”
ย 
PDF
More effective c++ chapter3 4
PPTX
[2012 01 28]cleancode 3์žฅ
PDF
C# / .NET Framework๋กœ ๋ฏธ๋ž˜ ๋ฐฅ๊ทธ๋ฆ‡์„ ์ฑ™๊ฒจ๋ณด์ž (Basic)
PPTX
๋ฆฌํŒฉํ† ๋ง
PDF
ํด๋ฆฐ ์ฝ”๋“œ part2
PDF
ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ๋ฐ ์ง€์ผœ์•ผ ํ•  ์‚ฌํ•ญ๋“ค
PDF
Microsoft pp lpdf
PPTX
Effective c++ 1,2
PPSX
spring data jpa ๊ฐ„๋‹จํ•œ ํŠœํ† ๋ฆฌ์–ผ
์ž„ํƒœํ˜„, ์„œ๋ฒ„์ ๊ฒ€ ์ œ๋กœ์—์˜ ๋„์ „, NDC2011
Effective c++ 3
7 8 1
ย 
์ž„ํƒœํ˜„, MMO ์„œ๋ฒ„ ๊ฐœ๋ฐœ ํฌ์ŠคํŠธ ๋ชจํ…œ, NDC2012
์ด์Šน์žฌ, M2 AI์ฝ”๋“œ ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ ์‚ฌ๋ก€, NDC2013
Effective c++ chapter7_8_9_dcshin
1 2 1
ย 
Effective c++ 4
[Gpg1๊ถŒ ๋ฐ•๋ฏผ๊ทผ] 1.0 1.4 ์š”์•ฝ ์ •๋ฆฌ
Effective c++ 2
05_๋™๊ธฐํ™”_๊ฐœ์š”
ย 
More effective c++ chapter3 4
[2012 01 28]cleancode 3์žฅ
C# / .NET Framework๋กœ ๋ฏธ๋ž˜ ๋ฐฅ๊ทธ๋ฆ‡์„ ์ฑ™๊ฒจ๋ณด์ž (Basic)
๋ฆฌํŒฉํ† ๋ง
ํด๋ฆฐ ์ฝ”๋“œ part2
ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ ๋ฐ ์ง€์ผœ์•ผ ํ•  ์‚ฌํ•ญ๋“ค
Microsoft pp lpdf
Effective c++ 1,2
spring data jpa ๊ฐ„๋‹จํ•œ ํŠœํ† ๋ฆฌ์–ผ
Ad

More from QooJuice (11)

PDF
์บ๋ฆญํ„ฐ ์• ๋‹ˆ๋ฉ”์ด์…˜
PDF
Screen space ambient occlusion
PDF
Compute shader
PDF
Picking
PDF
์ฝ”๋ฃจํ‹ด(Coroutine)
PDF
ํ–‰๋ ฌ
PDF
๋ฒกํ„ฐ
PDF
๋…ธ๋ง ๋งตํ•‘(Normal mapping)
PDF
๋ถ€ํŒ…
PDF
Segmentation and Paging
PDF
Move semantics
์บ๋ฆญํ„ฐ ์• ๋‹ˆ๋ฉ”์ด์…˜
Screen space ambient occlusion
Compute shader
Picking
์ฝ”๋ฃจํ‹ด(Coroutine)
ํ–‰๋ ฌ
๋ฒกํ„ฐ
๋…ธ๋ง ๋งตํ•‘(Normal mapping)
๋ถ€ํŒ…
Segmentation and Paging
Move semantics

Game programming patterns

  • 2. ์ฃผ์ œ ์„ ์ • ์ด์œ  โ€ข ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ์œ ์ง€ ๋ณด์ˆ˜๊ฐ€ ์ข‹๊ฒŒ ํ• ๊นŒ? โ€ข ๋งŒ์•ฝ ์ฒ˜์Œ๋ถ€ํ„ฐ ์„ค๊ณ„๋ฅผ ํ•œ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ๊นŒ? โ€ข ์ฝ”๋”ฉ ํ•  ๋•Œ๋งˆ๋‹ค ํ•ญ์ƒ ํ•˜๋˜ ์ƒ๊ฐ์ด์ง€๋งŒ ๊ณต๋ถ€ํ•œ ์ ์€ ์—†์Œ โ€ข ๊ทธ๋ž˜์„œ ๊ณต๋ถ€ํ–ˆ์Šต๋‹ˆ๋‹ค
  • 3. โ€ข ์„œ์ ์—์„œ ์šฐ์—ฐํžˆ ๋ฐœ๊ฒฌํ•œ ์ฑ… โ€ข ์ธํ„ฐ๋„ท์—์„œ ์š”์•ฝ ๊ธ€์„ ๋ดค์—ˆ๋Š”๋ฐ ๋‚ด์šฉ์ด ๊ดœ์ฐฎ์•˜๋˜ ๊ฑธ๋กœ ๊ธฐ์–ต โ€ข ๊ด€์‹ฌ์žˆ๋Š” ์ฃผ์ œ์ด๊ธฐ๋„ ํ•ด์„œ ๊ตฌ์ž…
  • 4. โ€ข ์ด๋Ÿฐ ์‚ฌ๋žŒ์—๊ฒŒ ์ถ”์ฒœ 1. ๋””์ž์ธ ํŒจํ„ด ๊ณต๋ถ€๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ์‹ถ์€ ๋ถ„ 2. ์•„์ง ๋””์ž์ธ ํŒจํ„ด์— ์ต์ˆ™ํ•˜์ง€ ์•Š์€ ๋ถ„ โ€ข ์ฑ… ๋‚ด์šฉ์ด ๋งŽ์ง€ ์•Š๊ณ (400p) ๋ฌธ์ฒด๊ฐ€ ๋”ฑ๋”ฑํ•˜์ง€ ์•Š์•„์„œ ์ฝ๊ธฐ ํŽธํ•จ โ€ข ๋””์ž์ธ ํŒจํ„ด ์ž…๋ฌธ์„œ๋กœ ์ ์ ˆํ•  ๋“ฏ ๋‹จ, ๋‹ค๋ฅธ ๋””์ž์ธ ํŒจํ„ด ์ฑ…๊ณผ ๊ฐ™์ด ๋ณผ ๊ฒƒ
  • 5. ๋ชฉ์ฐจ 1. ์‹ฑ๊ธ€ํ„ด (Singleton) 2. ์ƒํƒœ (State) 3. ์ปดํฌ๋„ŒํŠธ (Component)
  • 7. ์‹ฑ๊ธ€ํ„ด์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋А๋‚€์  โ€ข ์‹ฑ๊ธ€ํ„ด์„ ๋„ˆ๋ฌด ๋‚จ๋ฐœํ•˜๋Š”๊ฑฐ ์•„๋‹Œ๊ฐ€? โ€ข ์‹ฑ๊ธ€ํ„ด์˜ ๋ฌธ์ œ์ ์€ ๋ฌด์—‡์ธ๊ฐ€? โ€ข ์‹ฑ๊ธ€ํ„ด์˜ ๋Œ€์•ˆ์€ ์–ด๋–ค๊ฒŒ ์žˆ๋Š”๊ฐ€?
  • 8. ์‹ฑ๊ธ€ํ„ด์ด๋ž€? 1. ํ•œ ๊ฐœ์˜ ์ธ์Šคํ„ด์Šค๋งŒ์„ ๊ฐ–๋„๋ก ๋ณด์žฅ โ€ข ์ธ์Šคํ„ด์Šค๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ๋ฉด ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์ƒํ™ฉ์ด ์ข…์ข… ์žˆ๋‹ค (์™ธ๋ถ€ ์‹œ์Šคํ…œ๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•˜๋ฉด์„œ ์ „์—ญ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํด๋ž˜์Šค) โ€ข ex) ํŒŒ์ผ ์‹œ์Šคํ…œ API
  • 9. ์‹ฑ๊ธ€ํ„ด์ด๋ž€? 2. ์ „์—ญ์ ์ธ ์ ‘๊ทผ์ ์„ ์ œ๊ณต โ€ข ๋ณดํ†ต ์ƒ์„ฑ์ž๋ฅผ private๋กœ ํ•˜์—ฌ ์ธ์Šคํ„ด์Šค๋ฅผ ๋”ฐ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ์ „์—ญ์—์„œ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์ œ๊ณต
  • 10. ์‹ฑ๊ธ€ํ„ด์ด๋ž€? โ€ข ์ƒ์„ฑ์ž๊ฐ€ private๋ผ ๋ฐ–์—์„œ ์ƒ์„ฑ X (ํ•œ ๊ฐœ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ณด์žฅ) โ€ข instance static ํ•จ์ˆ˜๋กœ ์–ด๋””์„œ๋‚˜ ์ ‘๊ทผ ๊ฐ€๋Šฅ โ€ข ํ•„์š”ํ•  ๋•Œ๊นŒ์ง€ ์ดˆ๊ธฐํ™”๋ฅผ ๋Šฆ์ถœ ์ˆ˜ ์žˆ์Œ (Lazy Initialization)
  • 11. ์‹ฑ๊ธ€ํ„ด์˜ ์žฅ์  1. ํ•„์š”ํ•  ๋•Œ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค โ€ข ํ•ด๋‹น ์‹ฑ๊ธ€ํ„ด์„ ํ•œ ๋ฒˆ๋„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋ฉ”๋ชจ๋ฆฌ์™€ CPU ์‚ฌ์šฉ๋Ÿ‰์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค 2. ๋Ÿฐํƒ€์ž„์— ์ดˆ๊ธฐํ™”๋œ๋‹ค โ€ข ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋œ ํ›„์— ์•Œ ์ˆ˜ ์žˆ๋Š” ์ •๋ณด๋ฅผ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค
  • 12. ์‹ฑ๊ธ€ํ„ด์˜ ์žฅ์  3. ์ƒ์†ํ•  ์ˆ˜ ์žˆ๋‹ค โ€ข ๋งŒ์•ฝ ํŒŒ์ผ ์‹œ์Šคํ…œ ์‹ฑ๊ธ€ํ„ด์ด ํฌ๋กœ์Šค ํ”Œ๋žซํผ์„ ์ง€์›ํ•ด์•ผ ํ•œ๋‹ค๋ฉด ์ถ”์ƒ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“  ๋’ค ๊ตฌ์ฒด ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค
  • 13. ์‹ฑ๊ธ€ํ„ด์˜ ์žฅ์  3-1. ์ƒ์œ„ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ ๋‹ค
  • 14. ์‹ฑ๊ธ€ํ„ด์˜ ์žฅ์  3-2. ํ”Œ๋žซํผ๋ณ„๋กœ ํ•˜์œ„ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ ๋‹ค
  • 15. ์‹ฑ๊ธ€ํ„ด์˜ ์žฅ์  3-3. FileSystem ํด๋ž˜์Šค๋ฅผ ์‹ฑ๊ธ€ํ„ด์œผ๋กœ ๋งŒ๋“ ๋‹ค
  • 16. ์‹ฑ๊ธ€ํ„ด์˜ ์žฅ์  3-4. ์ธ์Šคํ„ด์Šค ์ƒ์„ฑํ•˜๋Š” ๋ถ€๋ถ„์ด ํ•ต์‹ฌ
  • 17. ์™€! ์งฑ ์ข‹๋„ค! ์ž์ฃผ ์“ฐ๋ฉด ์ข‹์„ ๋“ฏ ใ…Žใ…Ž ์™„๋ฒฝํ•˜๋„ค
  • 19. ์‹ฑ๊ธ€ํ„ด์˜ ๋‹จ์  1 1. ์ „์—ญ ๋ณ€์ˆ˜๋Š” ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ต๊ฒŒ ํ•œ๋‹ค โ€ข SomeClass::getSomeGlobalData() ๊ฐ™์€ ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค๋ฉด ์ „์ฒด ์ฝ”๋“œ์—์„œ SomeGlobalData์— ์ ‘๊ทผํ•˜๋Š” ๊ณณ์„ ๋‹ค ์‚ดํŽด๋ด์•ผ ์ƒํ™ฉ์„ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋‹ค โ€ข ๋งŒ์•ฝ ์‚ดํŽด๋ด์•ผ ํ•œ๋‹ค๋ฉด?
  • 21. ์‹ฑ๊ธ€ํ„ด์˜ ๋‹จ์  1 2. ์ „์—ญ ๋ณ€์ˆ˜๋Š” ์ปคํ”Œ๋ง์„ ์กฐ์žฅํ•œ๋‹ค โ€ข ์‹ฑ๊ธ€ํ„ด์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด #include ํ•œ ์ค„๋งŒ ์ถ”๊ฐ€ํ•ด๋„ ์‹ ์ค‘ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด๋†“์€ ์•„ํ‚คํ…์ฒ˜๋ฅผ ๋”๋Ÿฝํž ์ˆ˜ ์žˆ๋‹ค โ€ข ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ํ†ต์ œํ•จ์œผ๋กœ์จ ์ปคํ”Œ๋ง์„ ํ†ต์ œํ•  ์ˆ˜ ์žˆ๋‹ค
  • 22. ์‹ฑ๊ธ€ํ„ด์˜ ๋‹จ์  1 3. ์ „์—ญ ๋ณ€์ˆ˜๋Š” ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋”ฉ ๊ฐ™์€ ๋™์‹œ์„ฑ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์•Œ๋งž์ง€ ์•Š๋‹ค โ€ข ๋ชจ๋“  ์Šค๋ ˆ๋“œ๊ฐ€ ์ฝ๊ณ  ์“ธ ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์ด ์ƒ๊ธด ๊ฒƒ์ด๋‹ค โ€ข ๊ต์ฐฉ ์ƒํƒœ(Dead Lock), ๊ฒฝ์Ÿ ์ƒํƒœ(Race Condition) ๋“ฑ ์Šค๋ ˆ๋“œ ๋™๊ธฐํ™” ๋ฒ„๊ทธ๊ฐ€ ์ƒ๊ธฐ๊ธฐ ์‰ฝ๋‹ค
  • 23. ์‹ฑ๊ธ€ํ„ด์˜ ๋‹จ์  2 โ€ข ๋ฌธ์ œ๊ฐ€ ํ•˜๋‚˜๋ฟ์ผ ๋•Œ๋„ ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ๋ฅผ ํ’€๋ ค ๋“ ๋‹ค (์ „์—ญ ์ ‘๊ทผ + ์ธ์Šคํ„ด์Šค ์ œํ•œ) โ€ข Log ํด๋ž˜์Šค๊ฐ€ ์‹ฑ๊ธ€ํ„ด์œผ๋กœ ๋˜์–ด์žˆ๋‹ค๊ณ  ํ•˜์ž. ์ „์—ญ์œผ๋กœ ์ ‘๊ทผํ•˜์—ฌ ํŽธํ•˜๊ฒŒ ๋กœ๊ทธ๋ฅผ ๋‚จ๊ธธ ์ˆ˜ ์žˆ์ง€๋งŒ ๋งŒ์•ฝ ๋กœ๊ทธ๋ฅผ ์—ฌ๋Ÿฌ ํŒŒ์ผ์— ๋‚˜๋ˆ ์“ธ ์ƒํ™ฉ์ด ์˜จ๋‹ค๋ฉด? ์ธ์Šคํ„ด์Šค๋ฅผ ํ•œ ๊ฐœ๋งŒ ๋งŒ๋“ค์–ด์•ผ๋Š” ์ œ์•ฝ์ด ๋ฌธ์ œ๊ฐ€ ๋œ๋‹ค
  • 24. ์‹ฑ๊ธ€ํ„ด์˜ ๋‹จ์  3 โ€ข ๊ฒŒ์œผ๋ฅธ ์ดˆ๊ธฐํ™”๋Š” ์ œ์–ดํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค โ€ข ์ฒ˜์Œ ์ดˆ๊ธฐํ™”๋ฅผ ํ•  ๋•Œ ํ”„๋ ˆ์ž„์ด ๋–จ์–ด์ง€๊ณ  ๋ ‰์ด ๊ฑธ๋ฆฐ๋‹ค๋ฉด?
  • 25. ์‹ฑ๊ธ€ํ„ด์˜ ๋‹จ์  3 โ€ข ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ฒŒ์œผ๋ฅธ ์ดˆ๊ธฐํ™” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค โ€ข ๋‹จ์  1. ๋‹คํ˜•์„ฑ ์‚ฌ์šฉ ๋ชป ํ•จ 2. ๋ฉ”๋ชจ๋ฆฌ ํ•ด์ œ ๋ถˆ๊ฐ€๋Šฅ
  • 28. ๋Œ€์•ˆ โ€ข ํ•œ ๊ฐœ์˜ ์ธ์Šคํ„ด์Šค๋งŒ ๊ฐ–๋„๋ก ๋ณด์žฅํ•˜๊ธฐ โ€ข ์ „์—ญ ์ ‘๊ทผ X
  • 29. ๋Œ€์•ˆ โ€ข ์ธ์Šคํ„ด์Šค์— ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•˜๊ธฐ (์ „์—ญ ์ ‘๊ทผ ๋Œ€์ฒด) 1. ๋„˜๊ฒจ์ฃผ๊ธฐ โ€ข ํ•จ์ˆ˜์— ๊ฐ์ฒด๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด ์ธ์ˆ˜๋กœ ๋„˜๊ฒจ์ฃผ๋Š”๊ฒŒ ๊ฐ€์žฅ ์‰ฌ์šฐ๋ฉด์„œ๋„ ์ตœ์„ ์ธ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค. โ€ข ์ธ์ˆ˜๋กœ ๋„˜๊ฒจ์ฃผ๋Š” ๊ฒŒ ์ ์ ˆํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค. ์ด๋Ÿฌ๋ฉด ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ณด์ž
  • 30. ๋Œ€์•ˆ โ€ข ์ธ์Šคํ„ด์Šค์— ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•˜๊ธฐ 2. ์ƒ์œ„ ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ์–ป๊ธฐ
  • 31. ๋Œ€์•ˆ โ€ข ์ธ์Šคํ„ด์Šค์— ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•˜๊ธฐ 3. ์ด๋ฏธ ์ „์—ญ์ธ ๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ ์–ป๊ธฐ
  • 32. ๋Œ€์•ˆ โ€ข ์ธ์Šคํ„ด์Šค์— ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•˜๊ธฐ 3. ์ด๋ฏธ ์ „์—ญ์ธ ๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ ์–ป๊ธฐ โ€ข ๋‚˜์ค‘์— Game ์ธ์Šคํ„ด์Šค๋ฅผ ์—ฌ๋Ÿฌ ๊ฐœ ์ง€์›ํ•˜๋„๋ก ๊ตฌ์กฐ๋ฅผ ๋ฐ”๊ฟ”๋„ Log, FileSystem, AudioPlayer๋Š” ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค โ€ข Game ํด๋ž˜์Šค์— ์ปคํ”Œ๋ง๋˜๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. ์‚ฌ์šด๋“œ๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ์–ด๋„ Game ํด๋ž˜์Šค๋ฅผ ์•Œ์•„์•ผ ํ•œ๋‹ค
  • 33. ๊ฒฐ๋ก  โ€ข ์‹ฑํดํ„ด์„ ์“ฐ์ง€ ๋ง์ž๋Š” ๊ฒŒ ์•„๋‹ˆ๋‹ค โ€ข ์‹ฑ๊ธ€ํ„ด์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฉด ๋‹จ์ ๊ณผ ๋Œ€์•ˆ์„ ํ•œ ๋ฒˆ ์ƒ๊ฐํ•ด ๋ณด์ž
  • 35. ์ƒํƒœ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋А๋‚€์  โ€ข ๊ฐ์ฒด ์ƒํƒœ๋ณ„๋กœ ํด๋ž˜์Šค๊ฐ€ ๋ถ„๋ฆฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๋‹ค โ€ข State๊ฐ€ ๋งค์šฐ ๋งŽ์•„์ง„๋‹ค๋ฉด? โ€ข ์—ฌ๋Ÿฌ ๊ฐœ์˜ State๊ฐ€ ๊ณต์กดํ•ด์•ผ ํ•œ๋‹ค๋ฉด?
  • 36. ์ถ”์–ต์˜ ๊ฒŒ์ž„ ๋งŒ๋“ค๊ธฐ โ€ข ๊ฐ„๋‹จํ•œ ํšก์Šคํฌ๋กค ํ”Œ๋žซํฌ๋จธ๋ฅผ ๋งŒ๋“ ๋‹ค๊ณ  ํ•˜์ž. ๋จผ์ € B๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์ ํ”„ํ•ด์•ผ ํ•œ๋‹ค โ€ข ๋ฒ„๊ทธ๋ฅผ ๋ˆˆ์น˜ ์ฑ˜๋Š”๊ฐ€?
  • 37. ์ถ”์–ต์˜ ๊ฒŒ์ž„ ๋งŒ๋“ค๊ธฐ โ€ข ๊ณต์ค‘์— ์žˆ๋Š” ๋™์•ˆ B๋ฅผ ์—ฐํƒ€ํ•˜๋ฉด ๊ณ„์† ๋–  ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค โ€ข isJumping_ bool ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๊ฐ„๋‹จํžˆ ๊ณ ์น  ์ˆ˜ ์žˆ๋‹ค
  • 38. ์ถ”์–ต์˜ ๊ฒŒ์ž„ ๋งŒ๋“ค๊ธฐ โ€ข ๋ฌดํ•œ ์ ํ”„ ๋ฒ„๊ทธ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค โ€ข ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ๋•…์— ์žˆ์„ ๋•Œ ์•„๋ž˜ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์—Ž๋“œ๋ฆฌ๊ณ  ๋ฒ„ํŠผ์„ ๋–ผ๋ฉด ์ผ์–ด์„œ๋Š” ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด๋ณด์ž
  • 39. ์ถ”์–ต์˜ ๊ฒŒ์ž„ ๋งŒ๋“ค๊ธฐ โ€ข ๋ฒ„๊ทธ๋ฅผ ์ฐพ์•„ ๋ƒˆ๋Š”๊ฐ€?
  • 40. ์ถ”์–ต์˜ ๊ฒŒ์ž„ ๋งŒ๋“ค๊ธฐ 1. ์•„๋ž˜ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ ๋’ค 2. B ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ์—Ž๋“œ๋ฆฐ ์ƒํƒœ์—์„œ ์ ํ”„ํ•˜๊ณ  ๋‚˜์„œ 3. ๊ณต์ค‘์—์„œ ์•„๋ž˜ ๋ฒ„ํŠผ์„ ๋–ผ๋ฉด 4. ์ ํ”„ ์ค‘์ธ๋ฐ๋„ ๋•…์— ์„œ ์žˆ๋Š” ๋ชจ์Šต์œผ๋กœ ๋ณด์ธ๋‹ค โ€ข ํ”Œ๋ž˜๊ทธ ๋ณ€์ˆ˜๊ฐ€ ๋” ํ•„์š”ํ•˜๋‹ค
  • 41. ์ถ”์–ต์˜ ๊ฒŒ์ž„ ๋งŒ๋“ค๊ธฐ โ€ข ๋ญ”๊ฐ€ ๋ฐฉํ–ฅ์„ ์ž˜๋ชป ์žก์€ ๊ฒŒ ๋ถ„๋ช…ํ•˜๋‹ค โ€ข ์ฝ”๋“œ๊ฐ€ ์–ผ๋งˆ ์—†๋Š”๋ฐ๋„ ์กฐ๊ธˆ๋งŒ ๊ฑด๋“œ๋ฆฌ๋ฉด ๋ง๊ฐ€์ง„๋‹ค โ€ข ๋” ๋งŽ์€ ์ƒํƒœ๊ฐ€ ์ถ”๊ฐ€๋œ๋‹ค๋ฉด?
  • 43. ์ถ”์–ต์˜ ๊ฒŒ์ž„ ๋งŒ๋“ค๊ธฐ โ€ข Flowchart๋ฅผ ๊ทธ๋ ค๋ณด์ž โ€ข ์œ ํ•œ ์ƒํƒœ ๊ธฐ๊ณ„(FSM)๊ฐ€ ๋งŒ๋“ค์–ด์กŒ๋‹ค
  • 44. ์ถ”์–ต์˜ ๊ฒŒ์ž„ ๋งŒ๋“ค๊ธฐ โ€ข FSM ์š”์  1. ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” โ€˜์ƒํƒœโ€™๊ฐ€ ํ•œ์ •๋œ๋‹ค 2. ํ•œ ๋ฒˆ์— โ€˜ํ•œ ๊ฐ€์ง€โ€™ ์ƒํƒœ๋งŒ ๋  ์ˆ˜ ์žˆ๋‹ค 3. โ€˜์ž…๋ ฅโ€™์ด๋‚˜ โ€˜์ด๋ฒคํŠธโ€™๊ฐ€ ๊ธฐ๊ณ„์— ์ „๋‹ฌ๋œ๋‹ค 4. ๊ฐ ์ƒํƒœ์—์„œ๋Š” ์ž…๋ ฅ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ์ƒํƒœ๋กœ ๋ฐ”๋€Œ๋Š” โ€˜์ „์ดโ€™๊ฐ€ ์žˆ๋‹ค
  • 45. ์—ด๊ฑฐํ˜•๊ณผ ๋‹ค์ค‘ ์„ ํƒ๋ฌธ โ€ข bool ๊ฐ’ ์กฐํ•ฉ์ด ์œ ํšจํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค ex) isJumping๊ณผ isDucking์€ ๋™์‹œ์— ์ฐธ์ด ๋  ์ˆ˜ ์—†๋‹ค โ€ข ์—ฌ๋Ÿฌ ํ”Œ๋ž˜๊ทธ ๋ณ€์ˆ˜ ์ค‘์—์„œ ํ•˜๋‚˜๊ฐ€ ์ฐธ์ผ ๋•Œ๊ฐ€ ๋งŽ๋‹ค๋ฉด ์—ด๊ฑฐํ˜•(Enum)์ด ํ•„์š”ํ•˜๋‹ค๋Š” ์‹ ํ˜ธ๋‹ค โ€ข ์˜ˆ์ œ์—์„œ๋Š” FSM ์ƒํƒœ๋ฅผ ์—ด๊ฑฐํ˜•์œผ๋กœ ์ •์˜ํ•  ์ˆ˜ ์žˆ๋‹ค
  • 47. ์—ด๊ฑฐํ˜•๊ณผ ๋‹ค์ค‘ ์„ ํƒ๋ฌธ โ€ข ๋ถ„๊ธฐ๋ฌธ์„ ๋‹ค ์—†์• ์ง„ ๋ชปํ–ˆ์ง€๋งŒ ์—…๋ฐ์ดํŠธํ•ด์•ผ ํ•  ์ƒํƒœ ๋ณ€์ˆ˜๋ฅผ ํ•˜๋‚˜๋กœ ์ค„์˜€๋‹ค(state_ ๋ณ€์ˆ˜) โ€ข ์—ด๊ฑฐํ˜• ๋งŒ์œผ๋กœ๋Š” ๋ถ€์กฑํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ์ด๋™์„ ๊ตฌํ˜„ํ•˜๋˜, ์—Ž๋“œ๋ ค ์žˆ์œผ๋ฉด ๊ธฐ๊ฐ€ ๋ชจ์—ฌ์„œ ๋†“๋Š” ์ˆœ๊ฐ„ ํŠน์ˆ˜ ๊ณต๊ฒฉ์„ ์  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ ๋‹ค๊ณ  ํ•ด๋ณด์ž
  • 49. ์—ด๊ฑฐํ˜•๊ณผ ๋‹ค์ค‘ ์„ ํƒ๋ฌธ 1. ๊ธฐ ๋ชจ์œผ๊ธฐ ๊ณต๊ฒฉ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ํ•จ์ˆ˜ 2๊ฐœ๋ฅผ ์ˆ˜์ •ํ–ˆ๋‹ค 2. ์—Ž๋“œ๋ฆฌ๊ธฐ ์ƒํƒœ์—์„œ๋งŒ ์˜๋ฏธ ์žˆ๋Š” chargeTime ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•ด์•ผ ํ–ˆ๋‹ค โ€ข ์ด๊ฒƒ๋ณด๋‹ค๋Š” ๋ชจ๋“  ์ฝ”๋“œ์™€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๊ณณ์— ๋ชจ์•„๋‘˜ ์ˆ˜ ์žˆ๋Š” ๊ฒŒ ๋‚ซ๋‹ค
  • 50. ์ƒํƒœ ํŒจํ„ด โ€ข ์ƒํƒœ์— ์˜์กดํ•˜๋Š” ๋ชจ๋“  ์ฝ”๋“œ๋ฅผ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ฐ€์ƒ ํ•จ์ˆ˜๋กœ ๋งŒ๋“ ๋‹ค
  • 51. ์ƒํƒœ ํŒจํ„ด โ€ข ์ƒํƒœ๋ณ„๋กœ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค๋ฅผ ์ •์˜ํ•œ๋‹ค โ€ข chargeTIme_์€ ์—Ž๋“œ๋ฆฌ๊ธฐ ์ƒํƒœ์—์„œ๋งŒ ์˜๋ฏธ ์žˆ๋‹ค๋Š” ์ ์„ ๋ถ„๋ช…ํ•˜๊ฒŒ ๋ณด์—ฌ์ค€๋‹ค
  • 52. ์ƒํƒœ ํŒจํ„ด โ€ข Heroine ํด๋ž˜์Šค์— ํ˜„์žฌ ์ƒํƒœ ๊ฐ์ฒด ํฌ์ธํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค โ€ข ์ƒํƒœ๋ฅผ ๋ฐ”๊พธ๋ ค๋ฉด state_์— HeroineState๋ฅผ ์ƒ์†๋ฐ›์€ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•˜๋ฉด ๋œ๋‹ค
  • 53. ์ƒํƒœ ๊ฐ์ฒด๋Š” ์–ด๋””์— ๋‘ฌ์•ผ ํ• ๊นŒ? โ€ข ์ •์  ๊ฐ์ฒด โ€ข ์ƒํƒœ ๊ฐ์ฒด์— ํ•„๋“œ๊ฐ€ ๋”ฐ๋กœ ์—†๋‹ค๋ฉด ์ธ์Šคํ„ด์Šค๋Š” ํ•˜๋‚˜๋งŒ ์žˆ์œผ๋ฉด ๋œ๋‹ค
  • 54. ์ƒํƒœ ๊ฐ์ฒด๋Š” ์–ด๋””์— ๋‘ฌ์•ผ ํ• ๊นŒ? โ€ข ์ „์ด ํ•  ๋•Œ๋งˆ๋‹ค ์ƒํƒœ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ ๋‹ค
  • 55. ์ž…์žฅ๊ณผ ํ‡ด์žฅ โ€ข ์ƒํƒœ ํŒจํ„ด์˜ ๋ชฉํ‘œ๋Š” ๊ฐ™์€ ์ƒํƒœ์— ๋Œ€ํ•œ ๋ชจ๋“  ๋™์ž‘๊ณผ ๋ฐ์ดํ„ฐ๋ฅผ ํด๋ž˜์Šค ํ•˜๋‚˜์— ์บก์Аํ™”ํ•˜๋Š” ๊ฒƒ์ด๋‹ค โ€ข ์ง€๊ธˆ๊นŒ์ง€๋Š” ์ด์ „ ์ƒํƒœ์—์„œ ์Šคํ”„๋ผ์ดํŠธ๋ฅผ ๋ณ€๊ฒฝํ–ˆ๋‹ค (DuckingState์—์„œ IMAGE_STAND๋กœ ๋ณ€๊ฒฝ, 51p ์ขŒ์ธก ์‚ฌ์ง„) โ€ข ์ด๋ณด๋‹ค๋Š” ๊ฐ™์€ ์ƒํƒœ์—์„œ ๊ทธ๋ž˜ํ”ฝ๊นŒ์ง€ ์ œ์–ดํ•˜๋Š” ๊ฒŒ ๋ฐ”๋žŒ์งํ•˜๋‹ค ์ด๋ฅผ ์œ„ํ•ด ์ž…์žฅ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์ž
  • 57. ์ž…์žฅ๊ณผ ํ‡ด์žฅ โ€ข Stand ์ƒํƒœ๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด Stand ์ƒํƒœ๊ฐ€ ์•Œ์•„์„œ ๊ทธ๋ž˜ํ”ฝ๊นŒ์ง€ ์ฑ™๊ธด๋‹ค โ€ข ์ด์ „ ์ƒํƒœ์™€๋Š” ์ƒ๊ด€์—†์ด ํ•ญ์ƒ ๊ฐ™์€ ์ž…์žฅ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋œ๋‹ค๋Š” ๊ฒƒ๋„ ์žฅ์  โ€ข ์ƒˆ๋กœ์šด ์ƒํƒœ๋กœ ๊ต์ฒด๋˜๊ธฐ ์ง์ „์— ํ˜ธ์ถœ๋˜๋Š” ํ‡ด์žฅ๋„ ์ด๋Ÿฐ ์‹์œผ๋กœ ํ•˜๋ฉด ๋œ๋‹ค
  • 58. ๋ณ‘ํ–‰ ์ƒํƒœ ๊ธฐ๊ณ„ โ€ข ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์ด์„ ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ ๋‹ค๊ณ  ํ•ด๋ณด์ž โ€ข ์ด์„ ์žฅ์ฐฉํ•œ ํ›„์—๋„ ๋‹ฌ๋ฆฌ๊ธฐ, ์ ํ”„, ์—Ž๋“œ๋ฆฌ๊ธฐ ๋™์ž‘์„ ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค ๊ทธ๋Ÿฌ๋ฉด์„œ ์ด๋„ ์  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค โ€ข FSM ๋ฐฉ์‹์€ ๋ชจ๋“  ์ƒํƒœ๋ฅผ ์„œ๊ธฐ, ๋ฌด์žฅํ•œ ์ฑ„๋กœ ์„œ๊ธฐ, ์ ํ”„, ๋ฌด์žฅํ•œ ์ฑ„๋กœ ์ ํ”„ ๊ฐ™์€ ์‹์œผ๋กœ ๋ฌด์žฅ, ๋น„๋ฌด์žฅ์— ๋งž์ถฐ 2๊ฐœ์”ฉ ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค โ€ข ์ด ๋ฌธ์ œ๋Š” ์ƒํƒœ ๊ธฐ๊ณ„๋ฅผ ๋‘˜๋กœ ๋‚˜๋ˆ„๋ฉด ๋œ๋‹ค
  • 60. ๋ณ‘ํ–‰ ์ƒํƒœ ๊ธฐ๊ณ„ โ€ข ๋‘ ์ƒํƒœ ๊ธฐ๊ณ„๊ฐ€ ์„œ๋กœ ์ „ํ˜€ ์—ฐ๊ด€์ด ์—†๋‹ค๋ฉด ์ข‹์€ ๋ฐฉ๋ฒ•์ด ๋  ์ˆ˜ ์žˆ๋‹ค โ€ข ํ˜„์‹ค์ ์œผ๋กœ๋Š” ์ ํ”„ ๋„์ค‘์—๋Š” ์ด์„ ๋ชป ์œ๋‹ค๋Š” ์‹์œผ๋กœ ๋ณต์ˆ˜์˜ ์ƒํƒœ ๊ธฐ๊ณ„๊ฐ€ ์ƒํ˜ธ์ž‘์šฉํ•ด์•ผ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค โ€ข ์ด๋ฅผ ์œ„ํ•ด ์–ด๋–ค ์ƒํƒœ ์ฝ”๋“œ(์ด)์—์„œ ๋‹ค๋ฅธ ์ƒํƒœ ๊ธฐ๊ณ„์˜ ์ƒํƒœ(์ ํ”„)๊ฐ€ ๋ฌด์—‡์ธ์ง€๋ฅผ ๊ฒ€์‚ฌํ•˜๋Š” ์ง€์ €๋ถ„ํ•œ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค ์ผ์ด ์ƒ๊ธธ ์ˆ˜๋„ ์žˆ๋‹ค
  • 61. ๊ณ„์ธตํ˜• ์ƒํƒœ ๊ธฐ๊ณ„ โ€ข ํ”Œ๋ ˆ์ด์–ด๊ฐ€ ์„œ๊ธฐ, ๊ฑท๊ธฐ, ๋‹ฌ๋ฆฌ๊ธฐ, ๋ฏธ๋„๋Ÿฌ์ง€๊ธฐ ๊ฐ™์€ ์ƒํƒœ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ•˜์ž โ€ข ์œ„ ์ƒํƒœ์—์„œ๋Š” ๋ชจ๋‘ B ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์ ํ”„ํ•˜๊ณ , ์•„๋ž˜ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์—Ž๋“œ๋ ค์•ผ ํ•œ๋‹ค โ€ข FSM ๋ฐฉ์‹์€ ๊ฐ ์ƒํƒœ๋งˆ๋‹ค ์ฝ”๋“œ๋ฅผ ์ค‘๋ณตํ•ด ๋„ฃ์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ณด๋‹ค๋Š” ํ•œ ๋ฒˆ๋งŒ ๊ตฌํ˜„ํ•˜๊ณ  ๋‹ค๋ฅธ ์ƒํƒœ์—์„œ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ๋‚ซ๋‹ค โ€ข ์ƒ์†์„ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค
  • 63. Push-Down Automata โ€ข FSM์—์„œ๋Š” ํ˜„์žฌ ์ƒํƒœ๋Š” ์•Œ ์ˆ˜ ์žˆ์ง€๋งŒ ์ด์ „ ์ƒํƒœ๊ฐ€ ๋ฌด์—‡์ธ์ง€ ์•Œ ์ˆ˜ ์—†๋‹ค โ€ข ์‚ฌ์ง„์˜ ์Šคํ…Œ์ด์ง€ ํ™”๋ฉด์„ ๋กœ๋น„์—์„œ๋„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ณ  ํ€˜์ŠคํŠธ ํ™”๋ฉด์—์„œ๋„ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด? โ€ข ์ด์ „ ํ™”๋ฉด์œผ๋กœ ์–ด๋–ป๊ฒŒ ๋Œ์•„๊ฐˆ ๊ฒƒ์ธ๊ฐ€?
  • 64. Push-Down Automata โ€ข ์ƒํƒœ๋ฅผ ์Šคํƒ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋ฉด ๋œ๋‹ค
  • 65. ์–ธ์ œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๊ฐ€? โ€ข ๋‚ด๋ถ€ ์ƒํƒœ์— ๋”ฐ๋ผ ๊ฐ์ฒด ๋™์ž‘์ด ๋ฐ”๋€” ๋•Œ โ€ข ์ด๋Ÿฐ ์ƒํƒœ๊ฐ€ ๋งŽ์ง€ ์•Š์€ ์„ ํƒ์ง€๋กœ ๋ถ„๋ช…ํ•˜๊ฒŒ ๊ตฌ๋ถ„๋  ์ˆ˜ ์žˆ์„ ๋•Œ โ€ข ๊ฐ์ฒด๊ฐ€ ์ž…๋ ฅ์ด๋‚˜ ์ด๋ฒคํŠธ์— ๋”ฐ๋ผ ๋ฐ˜์‘ํ•  ๋•Œ
  • 66. ๊ฒŒ์ž„ AI์—์„œ๋Š”? โ€ข ์‚ฌ์‹ค FSM์„ ์ฒ˜์Œ ์ ‘ํ•œ ๊ฑด ๊ฒŒ์ž„ AI๋ฅผ ๊ณต๋ถ€ํ–ˆ์„ ๋•Œ โ€ข ๊ทผ๋ฐ ์š”์ฆ˜์€ ์•ˆ ์“ด๋‹ค๊ณ  ํ•˜๋”๋ผโ€ฆ โ€ข Behavior Tree ๋‚˜ Planning System์„ ๋” ๋งŽ์ด ์“ด๋‹ค๊ณ  ํ•œ๋‹ค
  • 69. ์ปดํฌ๋„ŒํŠธ ํŒจํ„ด์„ ์„ ํƒํ•œ ์ด์œ  โ€ข ์ƒ์†์„ ์‚ฌ์šฉํ•ด๋ณด๋‹ˆ ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•ด ์งˆ์ˆ˜๋ก ์œ ์ง€๋ณด์ˆ˜ ํ•˜๊ธฐ๊ฐ€ ํž˜๋“ค์—ˆ์Œ โ€ข ์ƒ์†์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ฝ”๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์—†์„๊นŒ?
  • 70. ์ปดํฌ๋„ŒํŠธ ํŒจํ„ด์„ ์„ ํƒํ•œ ์ด์œ  EDCBA โ€ข ์ด๋Ÿฐ ์ƒ์† ๊ตฌ์กฐ์—์„œ ์ฝ”๋“œ๋ฅผ ๋ณด๊ธฐ ํž˜๋“ค ๋•Œ๊ฐ€ ์žˆ๋‹ค
  • 71. ๋™๊ธฐ โ€ข ํ”Œ๋ ˆ์ด์–ด ํด๋ž˜์Šค์—์„œ๋Š” AI, ๋ฌผ๋ฆฌ, ๋ Œ๋”๋ง, ์‚ฌ์šด๋“œ ๋“ฑ์˜ ํด๋ž˜์Šค๋“ค์ด ์‹คํƒ€๋ž˜์ฒ˜๋Ÿผ ์–ฝํ˜€ ์žˆ๋‹ค โ€ข ์ด ์ฝ”๋“œ๋ฅผ ๊ณ ์น˜๋ ค๋ฉด ๋ฌผ๋ฆฌ(collidingWithFloor), ๊ทธ๋ž˜ํ”ฝ(getRenderState), ์‚ฌ์šด๋“œ(playSound)๋ฅผ ์ „๋ถ€ ์•Œ์•„์•ผ ํ•œ๋‹ค (์ปคํ”Œ๋ง)
  • 72. ํŒจํ„ด โ€ข ์—ฌ๋Ÿฌ ๋ถ„์•ผ๋ฅผ ๋‹ค๋ฃจ๋Š” ํ•˜๋‚˜์˜ ๊ฐœ์ฒด๊ฐ€ ์žˆ๋‹ค โ€ข ๋ถ„์•ผ๋ณ„๋กœ ๊ฒฉ๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด, ๊ฐ๊ฐ์˜ ์ฝ”๋“œ๋ฅผ ๋ณ„๋„์˜ ์ปดํฌ๋„ŒํŠธ ํด๋ž˜์Šค์— ๋‘”๋‹ค โ€ข ์ด์ œ ๊ฐœ์ฒด ํด๋ž˜์Šค๋Š” ๋‹จ์ˆœํžˆ ์ปดํฌ๋„ŒํŠธ๋“ค์˜ ์ปจํ…Œ์ด๋„ˆ ์—ญํ• ๋งŒ ํ•œ๋‹ค
  • 73. ์–ธ์ œ ์“ธ ๊ฒƒ์ธ๊ฐ€? โ€ข ๋‹ค์Œ ์กฐ๊ฑด ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋งŒ์กฑํ•œ๋‹ค๋ฉด ์œ ์šฉํ•˜๊ฒŒ ์“ธ ์ˆ˜ ์žˆ๋‹ค 1. ํ•œ ํด๋ž˜์Šค์—์„œ ์—ฌ๋Ÿฌ ๋ถ„์•ผ๋ฅผ ๊ฑด๋“œ๋ฆฌ๊ณ  ์žˆ์–ด์„œ ์ด๋“ค์„ ์„œ๋กœ ๋””์ปคํ”Œ๋ง ํ•˜๊ณ  ์‹ถ๋‹ค 2. ํด๋ž˜์Šค๊ฐ€ ๊ฑฐ๋Œ€ํ•ด์ ธ์„œ ์ž‘์—…ํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต๋‹ค 3. ์—ฌ๋Ÿฌ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ๊ณต์œ ํ•˜๋Š” ๋‹ค์–‘ํ•œ ๊ฐ์ฒด๋ฅผ ์ •์˜ํ•˜๊ณ  ์‹ถ๋‹ค ๋‹จ, ์ƒ์†์œผ๋กœ๋Š” ๋”ฑ ์›ํ•˜๋Š” ๋ถ€๋ถ„๋งŒ ๊ณจ๋ผ์„œ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค
  • 74. ์ฃผ์˜ ์‚ฌํ•ญ โ€ข ํด๋ž˜์Šค ํ•˜๋‚˜์— ์ฝ”๋“œ๋ฅผ ๋ชจ์•„๋†จ์„ ๋•Œ๋ณด๋‹ค ๋” ๋ณต์žกํ•ด์งˆ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค โ€ข ํ•œ ๋ฌด๋ฆฌ์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ์•Œ๋งž๊ฒŒ ๋ฌถ์–ด์ค˜์•ผ ํ•˜๋‚˜์˜ ๊ฐœ๋…์ ์ธ โ€˜๊ฐ์ฒดโ€™๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. โ€ข ์ปดํฌ๋„ŒํŠธ๋ผ๋ฆฌ ํ†ต์‹ ํ•˜๊ธฐ๋„ ๋” ์–ด๋ ต๊ณ  ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๋ฉ”๋ชจ๋ฆฌ ์–ด๋””์— ๋‘˜์ง€ ์ œ์–ดํ•˜๋Š” ๊ฒƒ๋„ ๋” ๋ณต์žกํ•˜๋‹ค
  • 75. ์ฃผ์˜ ์‚ฌํ•ญ โ€ข ์ฝ”๋“œ๋ฒ ์ด์Šค ๊ทœ๋ชจ๊ฐ€ ํฌ๋ฉด ์ด๋Ÿฐ ๋ณต์žก์„ฑ์—์„œ ์˜ค๋Š” ์†ํ•ด๋ณด๋‹ค ๋””์ปคํ”Œ๋ง๊ณผ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ†ตํ•œ ์ฝ”๋“œ ์žฌ์‚ฌ์šฉ์—์„œ ์–ป๋Š” ์ด๋“์ด ๋” ํด ์ˆ˜ ์žˆ๋‹ค โ€ข ํ•˜์ง€๋งŒ ์ปดํฌ๋„ŒํŠธ ํŒจํ„ด์„ ์ ์šฉํ•˜๊ธฐ ์ „์— ์•„์ง ์žˆ์ง€๋„ ์•Š์€ ๋ฌธ์ œ์— ๋Œ€ํ•œ โ€˜ํ•ด๊ฒฐ์ฑ…โ€™์„ ์˜ค๋ฒ„์—”์ง€๋‹ˆ์–ด๋งํ•˜๋ ค๋Š” ๊ฒƒ์€ ์•„๋‹Œ์ง€ ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค
  • 76. ์ฃผ์˜ ์‚ฌํ•ญ โ€ข ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๋Š” ๋ฌด์—‡์ด๋“ ์ง€ ํ•˜๋ ค๋ฉด ํ•œ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์ณ์•ผ ํ•  ๋•Œ๊ฐ€ ๋งŽ๋‹ค๋Š” ์ ์ด๋‹ค โ€ข ๋ฌด์Šจ ์ผ์ด๋“  ์ปจํ…Œ์ด๋„ˆ ๊ฐ์ฒด์—์„œ ์›ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๋ถ€ํ„ฐ ์–ป์–ด์•ผ ํ•  ์ˆ˜ ์žˆ๋‹ค โ€ข ์„ฑ๋Šฅ์ด ๋ฏผ๊ฐํ•œ ๋‚ด๋ถ€ ๋ฃจํ”„ ์ฝ”๋“œ์—์„œ ์ด๋Ÿฐ ์‹์œผ๋กœ ํฌ์ธํ„ฐ๋ฅผ ๋”ฐ๋ผ๊ฐ€๋‹ค ๋ณด๋ฉด ์„ฑ๋Šฅ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค
  • 77. ํ†ต์งœ ํด๋ž˜์Šค โ€ข ์ปดํฌ๋„ŒํŠธ ํŒจํ„ด์„ ์•„์ง ์ ์šฉํ•˜์ง€ ์•Š์•„ ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ํด๋ž˜์Šค์— ๋‹ค ๋“ค์–ด์žˆ๋‹ค
  • 82. ์˜คํ† - ์บ๋ฆญํ„ฐ โ€ข ์ปดํฌ๋„ŒํŠธ ํด๋ž˜์Šค๋ฅผ ์ถ”์ƒํ™”ํ•œ๋‹ค
  • 85. ์บ๋ฆญํ„ฐ์ผ ํ•„์š”๋Š” ์—†๋‹ค โ€ข ์ด์ œ ์บ๋ฆญํ„ฐ ํด๋ž˜์Šค๋Š” ์ปดํฌ๋„ŒํŠธ ๋ฌถ์Œ์ผ ๋ฟ ์บ๋ฆญํ„ฐ์™€ ๊ด€๋ จ๋œ ์ฝ”๋“œ๊ฐ€ ์—†๋‹ค โ€ข ๊ฒŒ์ž„์—์„œ ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ๊ธฐ๋ณธ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” GameObject ํด๋ž˜์Šค๋กœ ๋ฐ”๊พธ๋Š” ๊ฒŒ ๋” ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค