โš™๏ธ ์—”์ง„/๐Ÿซ ์–ธ๋ฆฌ์–ผ

๐Ÿš€ ๊ฒŒ์ž„ ์ฝ˜ํ…์ธ ์˜ ๊ตฌ์กฐ๊ฒŒ์ž„ ์ œ์ž‘์„ ์œ„ํ•ด ์–ธ๋ฆฌ์–ผ ์—”์ง„์€ ์ž์ฒด์ ์œผ๋กœ ์„ค๊ณ„ํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์ œ๊ณตํ•จ์ด๋ฅผ ๊ฒŒ์ž„ํ”Œ๋ ˆ์ด ํ”„๋ ˆ์ž„์›Œํฌ(gameplay framework)๋ผ ํ•จ. ์ค„์—ฌ์„œ ๊ฒŒ์ž„ ํ”„๋ ˆ์ž„์›์–ธ๋ฆฌ์–ผ ๊ฒŒ์ž„ ํ”„๋ ˆ์ž„์›์˜ ๊ฐ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ํŒŒ์•…ํ•˜๊ณ , ์ด๋ฅผ ํ™•์žฅํ•˜๋ฉด์„œ ๊ฒŒ์ž„์„ ์ œ์ž‘ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅ 1. ์›”๋“œ๊ฒŒ์ž„ ์ฝ˜ํ…์ธ ๋ฅผ ๋‹ด๊ธฐ ์œ„ํ•ด ์ œ๊ณต๋˜๋Š” ๊ฐ€์ƒ์˜ ๊ณต๊ฐ„์›”๋“œ๋Š” ์‹œ๊ฐ„, ํŠธ๋žœ์Šคํผ, ํ‹ฑ์„ ์„œ๋น„์Šค๋กœ ์ œ๊ณต์›”๋“œ ์„ธํŒ…์ด๋ผ๋Š” ์ฝ˜ํ…์ธ  ์ œ์ž‘์„ ์œ„ํ•œ ๊ธฐ๋ณธ ํ™˜๊ฒฝ ์„ค์ •์„ ์ œ๊ณต์›”๋“œ์˜ ๊ธฐ๋ณธ ๋‹จ์œ„๋Š” ์•กํ„ฐ(actor)๋กœ ์ •์˜๋˜๋ฉฐ, ์•กํ„ฐ ํด๋ž˜์Šค๋Š” ์–ธ์ œ๋‚˜ ์ ‘๋‘์‚ฌ A๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.์›”๋“œ์˜ ์—ญํ• ๊ฒŒ์ž„ ์ฝ˜ํ…์ธ ๋ฅผ ๋‹ด๋Š” ๊ณต๊ฐ„ (transform)๊ฒŒ์ž„ ์ฝ˜ํ…์ธ ์˜ ์ง„ํ–‰ (tick)๊ฒŒ์ž„ ํ๋ฆ„์„ ์œ„ํ•œ์‹œ๊ฐ„ (time)๊ธฐ๋ณธ ํ™˜๊ฒฝ ์„ค์ • (world setting)์›”๋“œ์˜ ๋‹จ์œ„ ๊ตฌ์„ฑ ์š”์†Œ (act..
๐Ÿš€ PART1 (๊ธฐ์ดˆ ์ฒด๋ ฅ ๐Ÿ‘‰ ์–ธ๋ฆฌ์–ผ C++)JAVA, C# ์–ธ์–ด๊ฐ€ ๊ฐ€์ง€๋Š” ๋ชจ๋˜ ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„ ๊ธฐ๋ฒ•์„ ํ•™์Šตํ•œ ํ›„์—์–ธ๋ฆฌ์–ผ ์—”์ง„์˜ ์ž๋ฃŒ ๊ตฌ์กฐ, ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ, ์—์…‹ ๋ฐ ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅ์–ธ๋ฆฌ์–ผ ์˜ค๋ธŒ์ ํŠธ ๐Ÿ‘‰ ๋ชจ๋˜ ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„ ๐Ÿ‘‰ ์ž๋ฃŒ๊ตฌ์กฐ์™€ ๋ฉ”๋ชจ๋ฆฌ ๐Ÿ‘‰ ์—์…‹๊ณผ ๋นŒ๋“œ ์‹œ์Šคํ…œ์„ฑ๋Šฅ๊ณผ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๋กœ์šฐ ๋ ˆ๋ฒจ ์ œ์–ด ๐Ÿš€ PART2 (๊ธฐ๋ณธ๊ธฐ ๐Ÿ‘‰ ๊ฒŒ์ž„ ํ”„๋ ˆ์ž„์›)๊ฒŒ์ž„์„ ๊ตฌ์„ฑํ•˜๋Š” ์ฃผ์š” ์š”์†Œ๋ฅผ  ํŒŒ์•…ํ•ด ์ „์ฒด ๊ตฌ์กฐ์— ์•Œ๋งž๊ฒŒ ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ํ•˜๋˜์Šค์ผ€์ผ ์—…์— ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋„๋ก, ํšจ๊ณผ์ ์ธ ๊ตฌ์กฐ๋กœ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•จ์ฝ˜ํ…์ธ ์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ ๐Ÿ‘‰ ์บ๋ฆญํ„ฐ ์• ๋‹ˆ๋ฉ”์ด์…˜ ๐Ÿ‘‰ ๋ฌผ๋ฆฌ์—”์ง„๊ณผ ์ด๋ฒคํŠธ ๐Ÿ‘‰ ๊ฒŒ์ž„๋ฐ์ดํ„ฐ์™€ ์ธ๊ณต์ง€๋Šฅ ๐Ÿ‘‰ ๊ฒŒ์ž„์˜ ์™„์„ฑ
1. ์–ธ๋ฆฌ์–ผ ์—๋””ํ„ฐ ๊ตฌ์„ฑ๊ฒŒ์ž„ ์ œ์ž‘์„ ์œ„ํ•ด ์—ํ”ฝ ๊ฒŒ์ž„์ฆˆ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ €์ž‘ ๋„๊ตฌ์–ธ๋ฆฌ์–ผ ์—”์ง„์˜ ๊ตฌ์„ฑ์—๋””ํ„ฐ : ๊ฒŒ์ž„ ์ œ์ž‘์„ ์œ„ํ•ด ์ œ๊ณต๋˜๋Š” ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ (์ผ๋ฐ˜์ ์œผ๋กœ ์ธ์‹ํ•˜๋Š” ์–ธ๋ฆฌ์–ผ ์—”์ง„)๊ฒŒ์ž„ ๋นŒ๋“œ : exe ํŒŒ์ผ๊ณผ ๋ฆฌ์†Œ์Šค๋กœ ์ด๋ฃจ์–ด์ง„ ๋…๋ฆฝ์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š” ๊ฒŒ์ž„ ํด๋ผ์ด์–ธํŠธ์–ธ๋ฆฌ์–ผ ์—๋””ํ„ฐ์˜ ํŠน์ง•๊ฒŒ์ž„ ๊ฐœ๋ฐœ ์ž‘์—…์„ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ํด๋”์™€ ํŒŒ์ผ ์ด๋ฆ„ ๊ทœ์น™์ด ๋ฏธ๋ฆฌ ์„ค์ •๋˜์–ด ์žˆ๋‹ค.์ •ํ•ด์ง„ ๊ทœ์น™์„ ์ž˜ ํŒŒ์•…ํ•˜๊ณ  ํ”„๋กœ์ ํŠธ ํด๋”์™€ ํŒŒ์ผ์„ ์„ค์ •ํ•ด์•ผ ํ•จ์—๋””ํ„ฐ์—์„œ ๊ธฐํ™•๊ณผ ๊ฐœ๋ฐœ์„ ์™„๋ฃŒํ•œ ํ›„, ๊ฒŒ์ž„ ๋นŒ๋“œ๋ฅผ ํ†ตํ•ด ์ตœ์ข… ๊ฒŒ์ž„ ๋นŒ๋“œ๋ฅผ ์ œ์ž‘ํ•˜๋„๋ก ์„ค์ •์–ธ๋ฆฌ์–ผ ์—๋””ํ„ฐ์—์„œ ๊ฒŒ์ž„์„ ๊ตฌ์„ฑ ๐Ÿ‘‰ ๊ฒŒ์ž„ ๋นŒ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  ํ”„๋กœ๊ทธ๋žจ์„ ํŒจํ‚ค์ง• 2. ์–ธ๋ฆฌ์–ผ ์—๋””ํ„ฐ์˜ ๋™์ž‘ํ”„๋กœ์ ํŠธ ํด๋”์˜ uproject ํ™•์žฅ์ž๋ฅผ ๋”๋ธ”ํด๋ฆญํ•˜๋ฉด ์—๋””ํ„ฐ๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ ๋จ์—๋””ํ„ฐ์˜ ์‹คํ–‰ ๋ฐฉ์‹uproject ํ™•์žฅ์ž..
1. ์–ธ๋ฆฌ์–ผ ์˜ค๋ธŒ์ ํŠธ ํŒจํ‚ค์ง€๋‹จ์ผ ์–ธ๋ฆฌ์–ผ ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ๊ฐ€์ง„ ์ •๋ณด๋Š” ์ €์žฅํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์˜ค๋ธŒ์ ํŠธ๋“ค์ด ์กฐํ•ฉ๋˜์–ด ์žˆ๋‹ค๋ฉด?์ €์žฅ๋œ ์–ธ๋ฆฌ์–ผ ์˜ค๋ธŒ์ ํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ฐพ๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€?๋ณต์žกํ•œ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ ์–ธ๋ฆฌ์–ผ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ €์žฅ๊ณผ ๋ถˆ๋Ÿฌ๋“ค์ด๋Š” ๋ฐฉ๋ฒ•์„ ํ†ต์ผํ•ด์•ผ ํ•œ๋‹ค.์–ธ๋ฆฌ์–ผ ์—”์ง„์€ ์ด๋ฅผ ์œ„ํ•ด ํŒจํ‚ค์ง€(UPackage) ๋‹จ์œ„๋กœ ์–ธ๋ฆฌ์–ผ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•จํŒจํ‚ค์ง€์˜ ์ค‘์˜์  ๊ฐœ๋…์–ธ๋ฆฌ์–ผ ์—”์ง„์€ ๋‹ค์–‘ํ•œ ๊ณณ์—์„œ ๋‹จ์–ด ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Œ์–ธ๋ฆฌ์–ผ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๊ฐ์‹ผ ํฌ์žฅ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์˜๋ฏธํ•จ ๐Ÿ‘‰ ํฌ์ŠคํŒ…์˜ ์ฃผ์ œ๋˜ํ•œ ๊ฐœ๋ฐœ๋œ ์ตœ์ข… ์ฝ˜ํ…์ธ ๋ฅผ ์ •๋ฆฌํ•ด ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ๋งŒ๋“œ๋Š” ์ž‘์—…์„ ์˜๋ฏธํ•จ ์˜ˆ) ๊ฒŒ์ž„ ํŒจํ‚ค์ง•DLC์™€ ๊ฐ™์ด ํ–ฅํ›„ ํ™•์žฅ ์ฝ˜ํ…์ธ ์— ์‚ฌ์šฉ๋˜๋Š” ๋ณ„๋„์˜ ๋ฐ์ดํ„ฐ ๋ฌถ์Œ์„ ์˜๋ฏธํ•˜๊ธฐ๋„ ํ•จ ์˜ˆ) pkg ํŒŒ์ผ๊ตฌ๋ถ„์„ ์œ„ํ•ด ์–ธ๋ฆฌ์–ผ ์˜ค๋ธŒ์ ํŠธ ํŒจํ‚ค์ง€๋กœ ๋ถ€๋ฅด๋Š” ..
1. ์ง๋ ฌํ™”์˜ค๋ธŒ์ ํŠธ๋‚˜ ์—ฐ๊ฒฐ๋œ ์˜ค๋ธŒ์ ํŠธ์˜ ๋ฌถ์Œ(์˜ค๋ธŒ์ ํŠธ ๊ทธ๋ž˜ํ”„)์„ ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณผ์ •๋ณต์žกํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ผ๋ ฌ๋กœ ์„ธ์šฐ๊ธฐ ๋•Œ๋ฌธ์— ์ง๋ ฌํ™”๊ฑฐ๊พธ๋กœ ๋ณต๊ตฌ์‹œํ‚ค๋Š” ๊ณผ์ •๋„ ํฌํ•จํ•ด์„œ ์˜๋ฏธ์‹œ๋ฆฌ์–ผ๋ผ์ด์ œ์ด์…˜ : ์˜ค๋ธŒ์ ํŠธ ๊ทธ๋ž˜ํ”„ ๐Ÿ‘‰ ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ๋””์‹œ๋ฆฌ์–ผ๋ผ์ด์ œ์ด์…˜ : ๋ฐ”์ดํŠธ ์ŠคํŠธ๋ฆผ ๐Ÿ‘‰ ์˜ค๋ธŒ์ ํŠธ ๊ทธ๋ž˜ํ”„์žฅ์ ํ˜„์žฌ ํ”„๋กœ๊ทธ๋žจ์˜์ƒํƒœ๋ฅผ ์ €์žฅํ•˜๊ณ  ํ•„์š”ํ•  ๋•Œ ๋ณต์› ๊ฐ€๋Šฅ (๊ฒŒ์ž„์˜ ์ €์žฅ)ํ˜„์žฌ ๊ฐ์ฒด์˜ ์ •๋ณด๋ฅผ ํด๋ฆฝ๋ณด๋“œ์— ๋ณต์‚ฌํ•ด์„œ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์— ์ „์†ก ๊ฐ€๋Šฅ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ํ˜„์žฌ ํ”„๋กœ๊ทธ๋žจ์˜ ์ƒํƒœ๋ฅผ ๋‹ค๋ฅธ ์ปดํ“จํ„ฐ์— ๋ณต์› ๊ฐ€๋Šฅ (๋ฉ€ํ‹ฐํ”Œ๋ ˆ์ด์–ด ๊ฒŒ์ž„)๋ฐ์ดํ„ฐ ์••์ถ•, ์•”ํ˜ธํ™”๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณด๊ด€ ๊ฐ€๋Šฅ ๐ŸŸฉ ๊ตฌํ˜„์‹œ ๊ณ ๋ คํ•  ์ ๋ฐ์ดํ„ฐ ๋ ˆ์ด์•„์›ƒ : ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์†Œ์œ ํ•œ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€ํ™˜ํ•  ๊ฒƒ์ธ๊ฐ€?์ด์‹์„ฑ : ์„œ๋กœ ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์— ์ „์†กํ•ด๋„ ์ด์‹๋  ์ˆ˜ ์žˆ..
1. ๋‹จ์ถ•ํ‚ค ์ •๋ฆฌ์นด๋ฉ”๋ผ ์ „ํ›„ ์ด๋™, ์ขŒ์šฐ ํšŒ์ „์ขŒํด๋ฆญ + ๋“œ๋ž˜๊ทธ๋งˆ์šฐ์Šค ์ž„์˜์˜ ๋ฒ„ํŠผ + WASD ์นด๋ฉ”๋ผ ์ƒํ•˜ ์ด๋™๋งˆ์šฐ์Šค ์ž„์˜์˜ ๋ฒ„ํŠผ + Q/E ์นด๋ฉ”๋ผ ํšŒ์ „์šฐํด๋ฆญ + ๋“œ๋ž˜๊ทธ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์„ ํƒ๋œ ์ƒํƒœ์—์„œ Alt + ์ขŒํด๋ฆญ + ๋“œ๋ž˜๊ทธ ์ƒํ•˜์ขŒ์šฐ ์ด๋™๊ฐ€์šด๋ฐ ๋ฒ„ํŠผ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์„ ํƒ๋œ ์ƒํƒœ์—์„œ Alt + ๊ฐ€์šด๋ฐ ๋ฒ„ํŠผ + ๋“œ๋ž˜๊ทธalt๋ฅผ ๋ˆ„๋ฅด์ง€ ์•Š์Œ : world ์ถ• ๊ธฐ์ค€์œผ๋กœ ์ด๋™ = ํ•˜๋Š˜์„ ๋ฐ”๋ผ๋ด„alt๋ฅผ ๋ˆ„๋ฆ„ : ์นด๋ฉ”๋ผ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ด๋™ ์ฝ˜ํ…์ธ  ๋ธŒ๋ผ์šฐ์ € ์—ด๊ธฐctrl + space bar ์นด๋ฉ”๋ผ ํฌ์ปค์Šค ์ •๋ ฌ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์„ ํƒ๋œ ์ƒํƒœ์—์„œ F ์นด๋ฉ”๋ผ ํ™•๋Œ€ ์ถ•์†Œ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์„ ํƒ๋œ ์ƒํƒœ์—์„œ Alt + ์šฐํด๋ฆญ + ๋“œ๋ž˜๊ทธ ํŠธ๋žœ์Šคํผ ํˆด์ด๋™ WํšŒ์ „ E์Šค์ผ€์ผ R ์•„๋ž˜๋กœ ์ •๋ ฌ์˜ค๋ธŒ์ ํŠธ๊ฐ€ ์„ ํƒ๋œ ์ƒํƒœ์—์„œ End 2. ๋ชจ๋ธ๋ง ์ˆ˜์ • ์ˆ˜์ •ํ•˜๊ธฐ ์ „์— ์—์…‹์„ ๋ฐฑ์—…ํ•ด๋‘..
1. ์–ธ๋ฆฌ์–ผ ์—”์ง„์˜ ์ž๋™ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๐ŸŒŸ C++ ์–ธ์–ด ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ์˜ ๋ฌธ์ œ์ C++์€ ์ €์ˆ˜์ค€์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์— ์ง์ ‘ ์ ‘๊ทผํ•˜๋Š” ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.๊ทธ๋Ÿฌ๋‹ค๋ณด๋‹ˆ ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ง์ ‘ ํ• ๋‹น(new)์™€ ํ•ด์ง€(delete) ์ง ๋งž์ถ”๊ธฐ๋ฅผ ํ•ด์•ผํ•œ๋‹ค.์ด๋ฅผ ์ž˜ ์ง€ํ‚ค์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค์–‘ํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ์ž˜๋ชป๋œ ํฌ์ธํ„ฐ ์‚ฌ์šฉ ์˜ˆ์‹œ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ : new๋ฅผ ํ–ˆ๋Š”๋ฐ delete ์ง์„ ๋งž์ถ”์ง€ ๋ชปํ•จ. ํž™์— ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๊ทธ๋Œ€๋กœ ๋‚จ์•„์žˆ๋Š” ๊ฒฝ์šฐํ—ˆ์ƒ ํฌ์ธํ„ฐ : ๋‹ค๋ฅธ ๊ณณ์—์„œ ์ด๋ฏธ ํ•ด์ œํ•ด ๋ฌดํšจํ™”๋œ ์˜ค๋ธŒ์ ํŠธ์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ์™€์ผ๋“œ ํฌ์ธํ„ฐ : ๊ฐ’์ด ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์•„ ์—‰๋šฑํ•œ ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ์ž˜๋ชป๋œ ํฌ์ธํ„ฐ ๊ฐ’์€ ๋‹ค์–‘ํ•œ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๋ฉฐ, ํ•œ ๋ฒˆ์˜ ์‹ค์ˆ˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒ์‹œํ‚ด๊ฒŒ์ž„ ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๊ณ  ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•ด์งˆ์ˆ˜๋ก ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์‹ค์ˆ˜ํ•  ํ™•..
๐Ÿง 1. ์–ธ๋ฆฌ์–ผ ๊ตฌ์กฐ์ฒด๋ฐ์ดํ„ฐ ์ €์žฅ/์ „์†ก์— ํŠนํ™”๋œ ๊ฐ€๋ฒผ์šด ๊ฐ์ฒด๋Œ€๋ถ€๋ถ„ GENERATED_BODY ๋งคํฌ๋กœ๋ฅผ ์„ ์–ธํ•ด์ค€๋‹ค.๋ฆฌํ”Œ๋ ‰์…˜, ์ง๋ ฌํ™”์™€ ๊ฐ™์€ ์œ ์šฉํ•œ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•จGENERATED_BODY๋ฅผ ์„ ์–ธํ•œ ๊ตฌ์กฐ์ฒด๋Š” UScriptStruct ํด๋ž˜์Šค๋กœ ๊ตฌํ˜„๋จ์ด ๊ฒฝ์šฐ ์ œํ•œ์ ์œผ๋กœ ๋ฆฌํ”Œ๋ ‰์…˜์„ ์ง€์›ํ•จ ๐Ÿ‘‰ ์†์„ฑ UPROPERTY๋งŒ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๊ณ  ํ•จ์ˆ˜ UFUNCTION์€ ์„ ์–ธํ•  ์ˆ˜ ์—†์Œ์–ธ๋ฆฌ์–ผ ์—”์ง„์˜ ๊ตฌ์กฐ์ฒด ์ด๋ฆ„์€ F๋กœ ์‹œ์ž‘ํ•จ๋Œ€๋ถ€๋ถ„ ํž™ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น(ํฌ์ธํ„ฐ ์—ฐ์‚ฐ)์—†์ด ์Šคํƒ ๋‚ด ๋ฐ์ดํ„ฐ๋กœ ์‚ฌ์šฉ๋จNewObjectAPI๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ ๐ŸŒŸ ๋ฆฌํ”Œ๋ ‰์…˜ ๊ด€๋ จ ๊ณ„์ธต ๊ตฌ์กฐ์–ธ๋ฆฌ์–ผ์—์„œ๋Š” ๊ตฌ์กฐ์ฒด์™€ ํด๋ž˜์Šค๊ฐ€ ๊ตฌ์กฐ, ์‚ฌ์šฉ๋ฒ•์ด ๋‹ค๋ฅด๋‹ค. ๐ŸŒŸ MyGameInstance(h, cpp)// Fill out your copyright notice in the..
๐ŸŸฉ ์–ธ๋ฆฌ์–ผ ์ปจํ…Œ์ด๋„ˆ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์–ธ๋ฆฌ์–ผ ์—”์ง„์ด ์ž์ฒด ์ œ์ž‘ํ•ด ์ œ๊ณตํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ค„์—ฌ์„œ UCL(Unreal Container Library)๋ผ๊ณ ๋„ ํ•จ์–ธ๋ฆฌ์–ผ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ์ง€์›ํ•˜๋ฉฐ ๋‹ค์ˆ˜ ์˜ค๋ธŒ์ ํŠธ ์ฒ˜๋ฆฌ์— ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋จ์–ธ๋ฆฌ์–ผ C++์€ ๋‹ค์–‘ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ง์ ‘ ๋งŒ๋“ค์–ด ์ œ๊ณตํ•˜๊ณ  ์žˆ์Œ์‹ค์ œ ๊ฒŒ์ž„ ์ œ์ž‘์— ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์„ธ ๊ฐ€์ง€๋ฅผ ์ถ”์ฒœํ•จ ๐Ÿ‘‰ TArray, TMap, TSet (T=ํ…œํ”Œ๋ฆฟ) ๐ŸŸฉ C++ STL๊ณผ ์–ธ๋ฆฌ์–ผ ์ปจํ…Œ์ด๋„ˆ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ฐจ์ด์ C++ STL์€ ๋ฒ”์šฉ์ ์œผ๋กœ ์„ค๊ณ„๋˜์–ด ์žˆ๋‹ค.C++ STL์€ ํ‘œ์ค€์ด๊ธฐ ๋•Œ๋ฌธ์— ํ˜ธํ™˜์„ฑ์ด ๋†’๋‹ค.C++ STL์€ ๋งŽ์€ ๊ธฐ๋Šฅ์ด ์—ฎ์—ฌ ์žˆ์–ด ์ปดํŒŒ์ผ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆผ์–ธ๋ฆฌ์–ผ ์ปจํ…Œ์ด๋„ˆ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์–ธ๋ฆฌ์–ผ ์—”์ง„์— ํŠนํ™”๋˜์–ด ์žˆ์Œ์–ธ๋ฆฌ์–ผ ์ปจํ…Œ์ด๋„ˆ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์–ธ๋ฆฌ์–ผ ..
๐ŸŒŸ ๊ฐ•ํ•œ ๊ฒฐํ•ฉํด๋ž˜์Šค๋“ค์ด ์„œ๋กœ ์˜์กด์„ฑ์„ ๊ฐ€์ง€๋Š” ๊ฒฝ์šฐCard๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ Person์ด ๋งŒ๋“ค์–ด์งˆ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ๐Ÿ‘‰ ์ด ๋•Œ Person์€ Card์— ๋Œ€ํ•œ ์˜์กด์„ฑ์„ ๊ฐ€์ง„๋‹ค๊ณ  ํ•œ๋‹ค.ํ•ธ๋“œํฐ์—์„œ๋„ ์ธ์ฆํ•  ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กœ์šด ์นด๋“œ๊ฐ€ ๋„์ž…๋œ๋‹ค๋ฉด?๐ŸŒŸ ๋Š์Šจํ•œ ๊ฒฐํ•ฉ์‹ค๋ฌผ์— ์˜์กดํ•˜์ง€ ๋ง๊ณ  ์ถ”์ƒ์  ์„ค๊ณ„์— ์˜์กดํ•˜๋ผ (DIP ์›์น™)์™œ Person์€ Card๊ฐ€ ํ•„์š”ํ•œ๊ฐ€? ์ถœ์ž…์„ ํ™•์ธํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ถœ์ž…์— ๊ด€๋ จ๋œ ์ถ”์ƒ์ ์ธ ์„ค๊ณ„์— ์˜์กดํ•˜์ž.ICheck๋ฅผ ์ƒ์†๋ฐ›์€ ์ƒˆ๋กœ์šด ์นด๋“œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์„ ์–ธํ•ด ํ•ด๊ฒฐ์ด๋Ÿฌํ•œ ๋Š์Šจํ•œ ๊ฒฐํ•ฉ ๊ตฌ์กฐ๋Š” ์œ ์ง€ ๋ณด์ˆ˜๋ฅผ ์†์‰ฝ๊ฒŒ ํ•ด์คŒ๐ŸŸฉ ๋Š์Šจํ•œ ๊ฒฐํ•ฉ์˜ ๊ฐ„ํŽธํ•œ ๊ตฌํ˜„ - ๋ธ๋ฆฌ๊ฒŒ์ดํŠธํ•จ์ˆ˜๋ฅผ ์˜ค๋ธŒ์ ํŠธ์ฒ˜๋Ÿผ ๊ด€๋ฆฌํ•˜๋ฉด ์–ด๋–จ๊นŒ? ๐ŸŒŸ ํ•จ์ˆ˜๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•ํ•จ์ˆ˜ ํฌ์ธํ„ฐ๋ฅผ ํ™œ์šฉํ•œ ์ฝœ๋ฐฑ ํ•จ์ˆ˜ ๊ตฌํ˜„๊ฐ€๋Šฅ์€ ํ•˜๋‚˜ ์ด๋ฅผ ์ •์˜ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๊ณผ์ •์ด ๊ฝค๋‚˜ ๋ณต์žกํ•จ..
๐ŸŸฉ ์ปดํฌ์ง€์…˜๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„์—์„œ ์ƒ์†์ด ๊ฐ€์ง„ Is-A ๊ด€๊ณ„๋งŒ ์˜์กดํ•ด์„œ๋Š” ์„ค๊ณ„์™€ ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์›€์ปดํฌ์ง€์…˜์€ ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„์—์„œ Has-A ๊ด€๊ณ„๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ์„ค๊ณ„ ๋ฐฉ๋ฒ•์ปดํฌ์ง€์…˜์˜ ํ™œ์šฉ : ๋ณตํ•ฉ์ ์ธ ๊ธฐ๋Šฅ์„ ๊ฑฐ๋Œ€ํ•œ ํด๋ž˜์Šค๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์„ค๊ณ„ํ•˜๋Š”๋ฐ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ๐ŸŒŸ SOLID (์ข‹์€ ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„ ํŒจํ„ด์„ ์ œ์ž‘ํ•˜๊ธฐ ์œ„ํ•œ ๋ชจ๋˜ ๊ฐ์ฒด ์„ค๊ณ„ ๊ธฐ๋ฒ•)๋‹จ์ผ ์ฑ…์ž„ ์›์น™ Single Responsibility Principle : ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋Š” ํ•˜๋‚˜์˜ ์˜๋ฌด๋งŒ ๊ฐ€์ง€๋„๋ก ์„ค๊ณ„ํ•œ๋‹ค.๊ฐœ๋ฐฉ ํŽ˜์‡„ ์›์น™ Open-Closed Principle : ๊ธฐ์กด์— ๊ตฌํ˜„๋œ ์ฝ”๋“œ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์œผ๋ฉด์„œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„ํ•œ๋‹ค.๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™ Liskov Substitution Principle : ์ž์‹ ๊ฐ์ฒด๋ฅผ ๋ถ€๋ชจ ๊ฐ์ฒด๋กœ ๋ณ€๊ฒฝํ•ด๋„ ..
๐ŸŸฉ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ์ฒด๊ฐ€ ๋ฐ˜๋“œ์‹œ ๊ตฌํ˜„ํ•ด์•ผ ํ•  ํ–‰๋™์„ ์ง€์ •ํ•˜๋Š”๋ฐ ํ™œ์šฉ๋˜๋Š” ํƒ€์ž…๋‹คํ˜•์„ฑ์˜ ๊ตฌํ˜„, ์˜์กด์„ฑ์ด ๋ถ„๋ฆฌ๋œ ์„ค๊ณ„์— ์œ ์šฉํ•˜๊ฒŒ ํ™œ์šฉ ๐ŸŒŸ ํŠน์ง•1. ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๋‘ ๊ฐœ์˜ ํด๋ž˜์Šค๊ฐ€ ์ƒ์„ฑ๋จU๋กœ ์‹œ์ž‘ํ•˜๋Š” ํƒ€์ž… ํด๋ž˜์Šค : ํด๋ž˜์Šค ํƒ€์ž… ์ •๋ณด ์ œ๊ณตI๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค ํด๋ž˜์Šค : ์‹ค์งˆ์ ์ธ ์„ค๊ณ„ ๋ฐ ๊ตฌํ˜„2. ๊ฐ์ฒด๋ฅผ ์„ค๊ณ„ํ•  ๋•Œ I ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉU ํƒ€์ž… ํด๋ž˜์Šค ์ •๋ณด๋Š” ๋Ÿฐํƒ€์ž„์—์„œ ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„ ์—ฌ๋ถ€๋ฅผ ํŒŒ์•…ํ•˜๋Š” ์šฉ๋„๋กœ ์‚ฌ์šฉ๋จ์‹ค์ œ๋กœ U ํƒ€์ž… ํด๋ž˜์Šค์—์„œ ์ž‘์—…ํ•  ์ผ์€ ์—†์Œ์ธํ„ฐํŽ˜์ด์Šค์— ๊ด€๋ จ๋œ ๊ตฌ์„ฑ ๋ฐ ๊ตฌํ˜„์€ I ์ธํ„ฐํŽ˜์ด์Šค ํด๋ž˜์Šค์—์„œ ์ง„ํ–‰3. C++ ์ธํ„ฐํŽ˜์ด์Šค์˜ ํŠน์ง•์ถ”์ƒ ํƒ€์ž…์œผ๋กœ๋งŒ ์„ ์–ธํ•  ์ˆ˜ ์žˆ๋Š” Java, C#๊ณผ ๋‹ฌ๋ฆฌ ์–ธ๋ฆฌ์–ผ์€ ์ธํ„ฐํŽ˜์ด์Šค์—๋„ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•จ ๐ŸŒŸ ์–ธ๋ฆฌ์–ผ ์—”์ง„์—์„œ ๊ฒŒ์ž„ ์ปจํ…์ธ ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์˜ค๋ธŒ์ ํŠธ์˜ ์„ค๊ณ„ ์˜ˆ์‹œ์›”๋“œ..
peewoong
'โš™๏ธ ์—”์ง„/๐Ÿซ ์–ธ๋ฆฌ์–ผ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก