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

๋ชฉ๋ก2022/10 (117)

KoreanFoodie's Study

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
๋””์ž์ธ ํŒจํ„ด (MVC, Dirty Flag) ํŒจํ„ด

MVC ํŒจํ„ด ๊ฐœ์š” MVC ํŒจํ„ด์€ ์•ฑ์„ Model, View, Controller ๋กœ ๋‚˜๋ˆ„์–ด ๋ฐ์ดํ„ฐ์™€ ๋กœ์ง์„ ๋ถ„๋ฆฌํ•˜๋Š” ๋””์ž์ธ ํŒจํ„ด์ด๋‹ค. Model์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง„ ๊ฐ์ฒด๋ฅผ, View๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ๋ณผ ๊ฒฐ๊ณผ๋ฌผ์„ ์ƒ์„ฑํ•˜๋Š” ์ปจํ…Œ์ด๋„ˆ๋ฅผ, Controller๋Š” ์‚ฌ์šฉ์ž๊ฐ€ Model ๊ณผ View ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋กœ์ง์ด๋‹ค. ์ด๋•Œ, Model ๊ณผ View ๋Š” Controller ์˜ ์กด์žฌ๋ฅผ ๋ชฐ๋ผ์•ผ ๊ฒฐํ•ฉ๋„๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค. Model ์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ์ƒ๊ธฐ๋ฉด View ๋Š” Controller ๋ฅผ ํ†ตํ•ด ์ด๋ฒคํŠธ๊ฐ€ ์‹คํ–‰๋˜์–ด ํ™”๋ฉด์ด ์—…๋ฐ์ดํŠธ ๋œ๋‹ค. MVC ํŒจํ„ด์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง๊ณผ UI ๋กœ์ง์„ ๋ถ„๋ฆฌํ•˜์—ฌ ์œ ์ง€ ๋ณด์ˆ˜๋ฅผ ๋…๋ฆฝ์ ์œผ๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ณ , ํ™•์žฅ์„ฑ๊ณผ ์œ ์—ฐ์„ฑ์ด ๋›ฐ์–ด๋‚˜๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ํ•˜๋‚˜์˜ ์ปจํŠธ๋กค๋Ÿฌ์— ๋‹ค์ˆ˜์˜ View ์™€ Model ์ด ๋ณต์žก..

Game Dev 2022. 10. 14. 16:06
[MiniEssay] ๋ถˆํŽธํ•จ์˜ ๋ฏธํ•™

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