Notice
Recent Posts
Recent Comments
Link
๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก์ „์ฒด ๊ธ€ (1099)

KoreanFoodie's Study

Effective C++ | ํ•ญ๋ชฉ 4 : ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋ฐ˜๋“œ์‹œ ๊ทธ ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜์ž

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 4 : ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋ฐ˜๋“œ์‹œ ๊ทธ ๊ฐ์ฒด๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜์ž ํ•ต์‹ฌ : 1. ๊ธฐ๋ณธ์ œ๊ณต ํƒ€์ž…์˜ ๊ฐ์ฒด๋Š” ์ง์ ‘ ์†์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•˜์ž. 2. ์ƒ์„ฑ์ž์—์„œ๋Š”, ์ƒ์„ฑ์ž ๋ณธ๋ฌธ ๋‚ด๋ฌด์— ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„์— ๋Œ€ํ•œ ๋Œ€์ž…๋ฌธ์„ ๋„ฃ์ง€ ์•Š๊ณ  ์ดˆ๊ธฐํ™” ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์ž. ๋˜ํ•œ ๋ฐ์ดํ„ฐ ๋ฉค๋ฒ„๊ฐ€ ์„ ์–ธ๋œ ์ˆœ์„œ์™€ ๋˜‘๊ฐ™์ด ๋‚˜์—ดํ•˜์ž. 3. ์—ฌ๋Ÿฌ ๋ฒˆ์—ญ ๋‹จ์œ„์— ์žˆ๋Š” ๋น„์ง€์—ญ ์ •์  ๊ฐ์ฒด๋“ค์˜ ์ดˆ๊ธฐํ™” ์ˆœ์„œ ๋ฌธ์ œ๋Š” ํ”ผํ•ด์„œ ์„ค๊ณ„ํ•ด์•ผ ํ•œ๋‹ค. ๋น„์ง€์—ญ ์ •์  ๊ฐ์ฒด๋ฅผ ์ง€์—ญ ์ •์  ๊ฐ์ฒด๋กœ ๋ฐ”๊พธ๋ฉด ๋œ๋‹ค. ์ƒ์„ฑ์ž๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์“ฐ๋Š” ๊ฒƒ์€, ์ƒ์„ฑ๊ณผ ๋™์‹œ์— '์ดˆ๊ธฐํ™”' ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, '๋Œ€์ž…'์„ ํ–‰ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. class Us..

Tutorials/C++ : Advanced 2022. 10. 25. 16:03
Effective C++ | ํ•ญ๋ชฉ 3 : ๋‚Œ์ƒˆ๋งŒ ๋ณด์ด๋ฉด const ๋ฅผ ๋“ค์ด๋Œ€ ๋ณด์ž!

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 3 : ๋‚Œ์ƒˆ๋งŒ ๋ณด์ด๋ฉด const ๋ฅผ ๋“ค์ด๋Œ€ ๋ณด์ž! ํ•ต์‹ฌ : 1. const ๋ฅผ ๋ถ™์—ฌ ์„ ์–ธํ•˜๋ฉด ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์‚ฌ์šฉ์ƒ์˜ ์—๋Ÿฌ๋ฅผ ์žก์•„๋‚ด๋Š” ๋ฐ ๋„์›€์„ ์ค€๋‹ค. const ๋Š” ์–ด๋–ค ์œ ํšจ๋ฒ”์œ„์— ์žˆ๋Š” ๊ฐ์ฒด์—๋„ ๋ถ™์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ ๋ฐ˜ํ™˜ ํƒ€์ž…์—๋„ ๋ถ™์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ฉค๋ฒ„ ํ•จ์ˆ˜์—๋„ ๋ถ™์„ ์ˆ˜ ์žˆ๋‹ค. 2. ์ปดํŒŒ์ผ๋Ÿฌ ์ชฝ์—์„œ ๋ณด๋ฉด ๋น„ํŠธ์ˆ˜์ค€ ์ƒ์ˆ˜์„ฑ์„ ์ง€์ผœ์•ผ ํ•˜์ง€๋งŒ, ์šฐ๋ฆฌ๋Š” ๊ฐœ๋…์ ์ธ(๋…ผ๋ฆฌ์ ์ธ) ์ƒ์ˆ˜์„ฑ์„ ์‚ฌ์šฉํ•ด์„œ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•ด์•ผ ํ•œ๋‹ค. 3. ์ƒ์ˆ˜ ๋ฉค๋ฒ„ ๋น› ๋น„์ƒ์ˆ˜ ๋ฉค๋ฒ„ ํ•จ์ˆ˜๊ฐ€ ๊ธฐ๋Šฅ์ ์œผ๋กœ ์„œ๋กœ ๋˜‘๊ฐ™๊ฒŒ ๊ตฌํ˜„๋˜์–ด ์žˆ์„ ๊ฒฝ์šฐ์—๋Š” ์ฝ”๋“œ ์ค‘๋ณต์„ ํ”ผํ•˜๋Š” ๊ฒƒ์ด ์ข‹์€๋ฐ, ์ด๋•Œ..

Tutorials/C++ : Advanced 2022. 10. 25. 16:02
Effective C++ | ํ•ญ๋ชฉ 2 : #define ์„ ์“ฐ๋ ค๊ฑฐ๋“  const, enum, inline ์„ ๋– ์˜ฌ๋ฆฌ์ž

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 2 : #define ์„ ์“ฐ๋ ค๊ฑฐ๋“  const, enum, inline ์„ ๋– ์˜ฌ๋ฆฌ์ž ํ•ต์‹ฌ : 1. ๋‹จ์ˆœํ•œ ์ƒ์ˆ˜๋ฅผ ์“ธ ๋•Œ๋Š”, #define ๋ณด๋‹ค const ๊ฐ์ฒด ํ˜น์€ enum ์„ ์šฐ์„  ์ƒ๊ฐํ•˜์ž. 2. ํ•จ์ˆ˜์ฒ˜๋Ÿผ ์“ฐ์ด๋Š” ๋งคํฌ๋กœ๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด, #define ๋งคํฌ๋กœ๋ณด๋‹ค ์ธ๋ผ์ธ ํ•จ์ˆ˜๋ฅผ ์šฐ์„  ์ƒ๊ฐํ•˜์ž. ํ•ญ๋ชฉ 2์˜ ํ•ต์‹ฌ์€, ๊ฐ€๊ธ‰์  ์„ ํ–‰ ์ฒ˜๋ฆฌ์ž๋ณด๋‹ค๋Š” ์ปดํŒŒ์ผ๋Ÿฌ์™€ ์นœํ•˜๊ฒŒ ์ง€๋‚ด๋Š” ๊ฒŒ ์ข‹๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์˜ˆ๋ฅผ ๋ณด์ž. #define ASPECT_RATIO 1.653 ์œ„์˜ ๊ฒฝ์šฐ, ํ•ด๋‹น ๋ถ€๋ถ„์„ ๋””๋ฒ„๊น…ํ•  ๋•Œ, ASPECT_RATIO ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์“ฐ๋Š” ๊ธฐํ˜ธ ํ…Œ..

Tutorials/C++ : Advanced 2022. 10. 25. 16:02
Effective C++ | ํ•ญ๋ชฉ 1 : C++ ๋ฅผ ์–ธ์–ด๋“ค์˜ ์—ฐํ•ฉ์ฒด๋กœ ๋ฐ”๋ผ๋ณด๋Š” ์•ˆ๋ชฉ์€ ํ•„์ˆ˜

C++ ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ํ•„๋…์„œ์ด์ž ๋ฐ”์ด๋ธ”์ธ, ์Šค์ฝง ๋งˆ์ด์–ด์Šค์˜ Modern Effective C++ ๋ฅผ ์ฝ๊ณ  ๊ธฐ์–ตํ•  ๋‚ด์šฉ์„ ์š”์•ฝํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ผญ ์ฝ์–ด๋ณด์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ํ•ญ๋ชฉ 1 : C++ ๋ฅผ ์–ธ์–ด๋“ค์˜ ์—ฐํ•ฉ์ฒด๋กœ ๋ฐ”๋ผ๋ณด๋Š” ์•ˆ๋ชฉ์€ ํ•„์ˆ˜ ํ•ต์‹ฌ : 1. C++ ๋ฅผ ์‚ฌ์šฉํ•œ ํšจ๊ณผ์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ทœ์น™์€, C++ ์˜ ์–ด๋–ค ๋ถ€๋ถ„์„ ์‚ฌ์šฉํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง„๋‹ค! C++ ์„ ์ด๋ฃจ๊ณ  ์žˆ๋Š” ํ•˜์œ„ ์š”์†Œ (Building Block) ์€ ํฌ๊ฒŒ 4 ๊ฐ€์ง€์ด๋‹ค. C (C ์—๋Š” ํ…œํ”Œ๋ฆฟ๋„ ์—†๊ณ , ์˜ˆ์™ธ๋„ ์—†๊ณ , ์˜ค๋ฒ„๋กœ๋”ฉ๋„ ์—†๋‹ค) ๊ฐ์ฒด ์ง€ํ–ฅ ๊ฐœ๋…์˜ C++ (ํด๋ž˜์Šค๋ฅผ ์“ฐ๋Š” C ์— ๊ด€ํ•œ ๋ชจ๋“  ๊ฒƒ๋“ค. ์บก์Šํ™”, ์ƒ์†, ๋‹คํ˜•์„ฑ, ๊ฐ€์ƒํ•จ์ˆ˜ ๋“ฑ) ํ…œํ”Œ๋ฆฟ C++ (ํ…œํ”Œ๋ฆฟ ๋ฉ”ํƒ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊นŒ์ง€) STL (container, iterator, algorithm, fu..

Tutorials/C++ : Advanced 2022. 10. 25. 16:01
๊ฒŒ์ž„์ˆ˜ํ•™ - ์‚ผ๊ฐํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•œ ๋ฌผ์ฒด์˜ ํšŒ์ „

์ด๋“์šฐ๋‹˜์˜ '์ด๋“์šฐ์˜ ๊ฒŒ์ž„์ˆ˜ํ•™' ์ฑ…์„ ๋ณด๋ฉฐ ์ข‹์€ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์ด ๊ถ๊ธˆํ•˜์‹œ๋‹ค๋ฉด, ์ฑ…์„ ๊ตฌ๋งคํ•ด ์ง์ ‘ ์ฝ์–ด๋ณด์‹œ๊ธฐ๋ฅผ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ์‚ผ๊ฐํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•œ ๋ฌผ์ฒด์˜ ํšŒ์ „ ์‚ผ๊ฐํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ฌผ์ฒด๋ฅผ ํšŒ์ „ํ•˜๋ฉด ์ขŒํ‘œ๊ฐ’์ด ์–ด๋–ป๊ฒŒ ๋ณ€ํ• ๊นŒ? ๋จผ์ €, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ขŒํ‘œ (1, 1) ์„ θ ๋งŒํผ ๋ฐ˜์‹œ๊ณ„ ๋ฐฉํ–ฅ์œผ๋กœ ํšŒ์ „ํ•˜๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ทธ๋ ค์ง€๊ฒŒ ๋œ๋‹ค. ์œ„์—์„œ, ๋ฒกํ„ฐ v ๋Š” ๊ธฐ์ € ๋ฒกํ„ฐ e1 ์™€ e2 ์˜ ํ•ฉ์œผ๋กœ ํ‘œํ˜„๋˜๋ฉฐ, ์ด๋ฅผ ๊ฐ θ ๋งŒํผ ํšŒ์ „ ์‹œํ‚จ ๋…€์„์„ (cosθ - sinθ, sinθ + cosθ) ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ๋™์ผํ•œ ์›๋ฆฌ๋กœ, ์ž„์˜์˜ ๋ฒกํ„ฐ (x, y) ๋ฅผ ๊ฐ θ ๋งŒํผ ํšŒ์ „์‹œ์ผœ (x', y') ๋ฅผ ๊ตฌํ•ด๋ณด์ž. ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์“ธ ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ์ €๋ฒกํ„ฐ๋ฅผ ํ™œ์šฉํ•˜๋ฉด, ์ž„์˜์˜ ๋ฒกํ„ฐ u ๋ฅผ ๊ฐ θ ๋งŒ..

Game Dev/Game Math 2022. 10. 23. 23:39
Message Pump ์˜ ๋™์ž‘ ๋ฐฉ์‹ ์ดํ•ด์™€ ์‘์šฉ

๋จผ์ € Message Pump ๋ž€, ํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋„์ค‘ ๋ฉ”์‹œ์ง€ ํ๋กœ๋ถ€ํ„ฐ ๋‹ค๋ฅธ ๋ฉ”์‹œ์ง€๋ฅผ ๊บผ๋‚ด ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์œˆ๋„์šฐ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๊ฒฝ์šฐ, UI ๋ฐ ์‚ฌ์šฉ์ž ์ž…๋ ฅ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฉ”์‹œ์ง€ ํŽŒํ”„๋ฅผ ์ ๊ทน ํ™œ์šฉํ•˜๊ณ  ์žˆ๋‹ค. ๊ธฐ์ดˆ์ ์ธ Message Loop ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. MSG msg; while (GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } ๊ทธ๋Ÿฐ๋ฐ GetMessage ์˜ ๊ฒฝ์šฐ ๋ฐ๋“œํƒ€์ž„(๋ฉ”์‹œ์ง€ํ์— ๋ฉ”์‹œ์ง€๊ฐ€ ์—†์–ด GetMessage ๊ฐ€ ๋†€๊ณ  ์žˆ๋Š” ์‹œ๊ฐ„)์„ ์ œ๋Œ€๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์—†์–ด, PeekMessage ๋ฅผ ๋งŽ์ด ํ™œ์šฉํ•œ๋‹ค. PeekMessage ๋Š” ๋ฉ”์‹œ์ง€ ํ์— ๋ฉ”์‹œ์ง€๊ฐ€ ์žˆ๋“  ์—†๋“  ๋ฆฌํ„ด์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ..

Game Dev/Game Server 2022. 10. 20. 17:57
Unreal ์—์„œ Actor ์™€ ActorComponent ์˜ ๊ฐœ๋… (vs. Unity ์—์„œ์˜ GameObject ์™€ ๋น„๊ต)

Actor ์™€ ActorComponent ์œ ๋‹ˆํ‹ฐ์—์„œ๋Š” ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ ์•„๋ž˜์— ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋„ฃ๋Š” ์‹์œผ๋กœ Hierarchy ๋ฅผ ๋งŒ๋“ค์–ด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์–ธ๋ฆฌ์–ผ์€ ๊ทธ๋Ÿฐ ์‹์œผ๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์œ ๋‹ˆํ‹ฐ์—์„œ๋Š” ํ•ญ๊ณต๊ธฐ๊ฐ€ ์žˆ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ, ํ”„๋ฆฌํŒน์— ๊ฐ์ข… ๊ฒŒ์ž„ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ํ•˜์œ„์— ๋„ฃ์–ด ์กฐํ•ฉํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ•ด๋‹น ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์–ธ๋ฆฌ์–ผ์—์„œ Actor ๋Š” Bucket ๊ฐ™์€ ๊ฐœ๋…์œผ๋กœ, ๋‹ค์–‘ํ•œ ์•กํ„ฐ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‹ด๊ณ  ์žˆ๋‹ค. ์ฆ‰, ์–ธ๋ฆฌ์–ผ์€ Bucket ์•ˆ์— ๋‹ค๋ฅธ Bucket ์„ ๋„ฃ๋Š” ๋ฐฉ์‹์œผ๋กœ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค. ์•กํ„ฐ ์ปดํฌ๋„ŒํŠธ๋Š” ์žฌ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ์„ ์ •์˜ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ์— ๋Œ€ํ•œ ๋ฒ ์ด์Šค ํด๋ž˜์Šค๋กœ ์ถฉ๋Œ, ๋ฉ”์‹œ, ์›”๋“œ ์ด๋™, ์†Œ๋ฆฌ ์žฌ์ƒ, ๋น›๊ณผ ๋ช…์•” ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ง€์›ํ•œ๋‹ค. ์–ธ๋ฆฌ์–ผ์—์„œ๋Š” ํŠธ๋žœ์Šคํผ์„ ๊ฐ€์ง„ ์•กํ„ฐ ์ปด..

Game Dev/Unreal C++ : Study 2022. 10. 20. 17:53
์–ธ๋ฆฌ์–ผ ์ฝ”๋”ฉ ํ‘œ์ค€ ๊ฐ„๋‹จ ๋ฆฌ๋ทฐ

์–ธ๋ฆฌ์–ผ ์ฝ”๋”ฉ ํ‘œ์ค€ ๋ช…๋ช…๊ทœ์น™ : ํŒŒ์Šค์นผ์ผ€์ด์Šค, ์ ‘๋‘์‚ฌ(U - UObject ์ƒ์† /A - AActor ์ƒ์† /S - SWidget ์ƒ์† / C - ์—ํ”ฝ์˜ ๊ฐœ๋…์ด ์œ ์‚ฌ / b - ๋ถ€์šธ ๋ณ€์ˆ˜ / F - ๊ทธ ์™ธ ๋Œ€๋ถ€๋ถ„) ํฌํ„ฐ๋ธ” C++ ์ฝ”๋“œ : bool(ํฌ๊ธฐ ์ถ”์ • ๊ธˆ์ง€, BOOL ์€ ์ปดํŒŒ์ผ ์•ˆ๋จ), TCHAR, uint8, int8, uint(16, 32, 64 ๋ฒ„์ „) , float, double, PTRINT(ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋Š” ์ •์ˆ˜, ํฌ๊ธฐ ์ถ”์ • ๊ธˆ์ง€) ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ฌ์šฉ : ํ‘œ์ค€ ์ปจํ…Œ์ด๋„ˆ์™€ ์ŠคํŠธ๋ง์€ interop ์ฝ”๋“œ๋ฅผ ์ œ์™ธํ•˜๊ณ  ์‚ฌ์šฉํ•˜์ง€ ๋ง์•„์•ผ ํ•จ ์ฝ”๋ฉ˜ํŠธ : ์ฝ”๋“œ๋Š” ๊ตฌํ˜„์„ ์„ค๋ช…ํ•˜๊ณ , ์ฝ”๋ฉ˜ํŠธ๋Š” ๊ทธ ์˜๋„๋ฅผ ์„ค๋ช…ํ•œ๋‹ค. ์ตœ์‹  C++ ์–ธ์–ด ๋ฌธ๋ฒ• : static_assert ์‚ฌ์šฉ, override ๋ฐ final ์‚ฌ..

Game Dev/Unreal C++ : Study 2022. 10. 14. 16:17
์–ธ๋ฆฌ์–ผ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ(GC) ์‹ฌํ™” ์ •๋ฆฌ

์–ธ๋ฆฌ์–ผ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ(GC) ์‹ฌํ™” ์ •๋ฆฌ ์–ธ๋ฆฌ์–ผ ์—”์ง„์€ Reference Graph ๋ฅผ ๋งŒ๋“ค์–ด ์˜ค๋ธŒ์ ํŠธ๋“ค์˜ ์‚ฌ์šฉ ์—ฌ๋ถ€๋ฅผ ๊ตฌ๋ถ„ํ•œ๋‹ค. ์ด ๊ทธ๋ž˜ํ”„ ๋ฃจํŠธ์—๋Š” "Root Set" ์ด๋ผ๊ณ  ์ง€์ •๋œ ์˜ค๋ธŒ์ ํŠธ ์…‹์ด ์žˆ์œผ๋ฉฐ, "Root Set" ์— ํฌํ•จ๋œ ๊ฐ์ฒด๋“ค์€ GC ๋Œ€์ƒ์—์„œ ์ œ์™ธ๋œ๋‹ค(Mark & Sweep ๋ฐฉ์‹์œผ๋กœ ์ถ”์ ). ์„ธ ๊ฐ€์ง€ ๊ทœ์น™ : UPROPERTY ์„ ์–ธ : ํด๋ž˜์Šค ๋‚ด๋ถ€ ๋ฉค๋ฒ„ ๋ณ€์ˆ˜๊ฐ€ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด์˜ ์ˆ˜๋ช…๊ณผ ์šด๋ช…์„ ํ•จ๊ป˜ํ•  ๊ฒฝ์šฐ ์„ ์–ธ ๋ฉค๋ฒ„๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ : ์—”์ง„์ด ์ธ์‹ํ•˜๊ฑฐ๋‚˜ ๊ด€๋ฆฌํ•˜์ง€ ์•Š๋Š” ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์„ ๊ฐ€๋ฆฌํ‚ค๋„๋ก ๋งŒ๋“ค๋ฉด ์•ˆ๋จ TArray ๋ฅผ ํ™œ์šฉ : UObject ๋˜๋Š” ์ž์‹๋“ค์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ์ปจํ…Œ์ด๋„ˆ ๊ธฐํƒ€ ์ธํ„ฐํŽ˜์ด์Šค ์˜ˆ์‹œ : // Object ๋ฅผ ์‚ด์•„์žˆ๊ฒŒ ๋งŒ๋“œ๋Š” 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•; //..

Game Dev/Unreal C++ : Study 2022. 10. 14. 16:16
UML (ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ, ์‹œํ€€์Šค ๋‹ค์ด์–ด๊ทธ๋žจ) ๊ฐ„๋‹จ ์ •๋ฆฌ

UML (Unified Modeling Language) UML ์—๋Š” Class, Sequence, Use Case, Component ๋“ฑ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜๊ฐ€ ์žˆ์ง€๋งŒ, ์—ฌ๊ธฐ์„œ๋Š” ์ฃผ๋กœ Class ์™€ Sequence ๋‹ค์ด์–ด๊ทธ๋žจ์„ ์ •๋ฆฌํ•œ๋‹ค. ํด๋ž˜์Šค ๋‹ค์ด์–ด๊ทธ๋žจ (Class Diagram) ํด๋ž˜์Šค๋“ค ์‚ฌ์ด์˜ ๊ด€๊ณ„๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œํ˜„๋  ์ˆ˜ ์žˆ๋‹ค(์ฐธ๊ณ  ๋งํฌ). ๊ฐ ๊ด€๊ณ„๋ฅผ ์กฐ๊ธˆ ๋” ์ž์„ธํžˆ ๊ธฐ์ˆ ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ๊ด€๊ณ„ ํ‘œ์‹œ ์„ค๋ช… ์—ฐ๊ด€ ๊ด€๊ณ„ (association) ์‹ค์„ ์ด๋‚˜ ํ™”์‚ดํ‘œ ์—ฐ๊ด€ ๊ด€๊ณ„๋Š” ์˜ค๋žœ ์‹œ๊ฐ„ ๋™์•ˆ ๊ฐ™์ดํ•  ๊ฐ์ฒด์™€์˜ ๊ด€๊ณ„๋ฅผ ๋‚˜ํƒ€๋‚ธ๋‹ค(e.g. ์ž๋™์ฐจ์™€ ์†Œ์œ ์ž์˜ ๊ด€๊ณ„) ๋ณดํ†ต ํด๋ž˜์Šค์˜ ์†์„ฑ(๋ฉค๋ฒ„ ๋ณ€์ˆ˜)์—์„œ ์ฐธ์กฐํ•  ๋•Œ ์—ฐ๊ด€ ๊ด€๊ณ„๋ฅผ ๊ฐ€์ง„๋‹ค. ๋‹จ๋ฐฉํ–ฅ ์—ฐ๊ด€ ๊ด€๊ณ„์˜ ๊ฒฝ์šฐ, ํ™”์‚ดํ‘œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ž˜์Šค๋ฅผ ์ฐธ์กฐํ•œ๋‹ค. ์–‘๋ฐฉํ–ฅ ์—ฐ๊ด€ ๊ด€๊ณ„์˜ ๊ฒฝ์šฐ..

R & D/Software Engineering 2022. 10. 14. 16:13